我想根据大于数据范围的中断范围用颜色绘制轮廓填充,以便不同的图具有相同的比例。在以下示例中,蓝色和红色预计分别对应更多的负值或正值。但是,当绘图不包含完整范围时,geom_contour_filled会识别中断但与色标不匹配。因此,正值都是蓝色的。
library(ggplot2)
grid <- expand.grid(x=0:10,y=0:10)
grid$z <- with(grid, x*y) # 0 to 100 does not work as expected
# grid$z <- with(grid, 2*x*y-100) # -100 to 100 works as expected
ggplot(grid,aes(x=x,y=y,z=z)) +
scale_colour_manual( aesthetics = 'fill',
values = colorRampPalette(c('blue','white','red'))(20) ) +
geom_contour_filled( breaks=floor(seq(-100,100, length.out=20)) )
Run Code Online (Sandbox Code Playgroud)
您需要添加drop = FALSE到色标中:
ggplot(grid,aes(x=x,y=y,z=z)) +
scale_colour_manual( aesthetics = 'fill', drop = FALSE,
values = colorRampPalette(c('blue','white','red'))(20) ) +
geom_contour_filled( breaks=floor(seq(-100,100, length.out=20)) )
Run Code Online (Sandbox Code Playgroud)