默认情况下,geom_raster创建一个稍微超出数据限制的渐变图例。
例如:
library(ggplot2)
p1 <- ggplot(data=cbind(expand.grid(x=1:10, y=1:10), z=seq(0, 100, length=100)),
aes(x=x, y=y, fill=z)) +
geom_raster() +
coord_equal() +
scale_x_continuous(expand=c(0, 0)) +
scale_y_continuous(expand=c(0, 0))
p1
Run Code Online (Sandbox Code Playgroud)
我可以防止颜色条超出这些限制(即上例中的 0 和 100)吗?设置limits=c(0, 100)没有帮助,设置draw.ulim和draw.llimtoFALSE只是隐藏了极端的滴答声,但仍然绘制了相同的斜坡,例如:
p1 + scale_fill_continuous(
limits=c(0, 100), guide=guide_colorbar(draw.ulim=FALSE, draw.llim=FALSE))
Run Code Online (Sandbox Code Playgroud)
这种行为的原因是颜色条被分成“箱”并且标签被放置在箱的中间。由于默认的 bin 数量是20,您将在颜色栏末端的 bin 中间看到刻度,在顶部刻度上方和底部刻度下方留出空间。通过将nbin参数设置为更高的值,您将利用此行为对您有利,因为现在每个 bin 的高度要低得多,并且刻度线的高度类似于 bin 的高度:
p1 + scale_fill_continuous(limits=c(0, 100), guide=guide_colorbar(nbin = 100))
Run Code Online (Sandbox Code Playgroud)
这使:
仔细查看图例会发现0和100值的刻度现在位于颜色条的底部/顶部。