【发布时间】:2017-01-28 20:31:25
【问题描述】:
我正在尝试使用 geom_tile 创建一个绘图。源数据是连续的,但我想使用离散级别对其进行着色,以使结果图更易于阅读。我希望生成的颜色条显示离散水平,但将基础数据称为连续数据。像这样的东西:
本质上是一个连续的色阶,上面覆盖着离散值。
到目前为止,我有这个:
require( ggplot2)
x <- rep( 1:10, 10)
y <- rep( 1:10, each=10)
z <- rnorm( length(y))
df <- data.frame( x, y, z)
ggplot( df) + geom_tile( aes( x, y, fill=z)) +
scale_fill_gradient2( low="blue", mid="white", high="red", midpoint=0)
给出这个:
我想合并连续变量“z”来设置级别,所以我可以使用 cut:
df$discrete_z <- cut( z, breaks=seq( -3,3, 1), include.lowest=T)
ggplot( df) + geom_tile( aes( x, y, fill=discrete_z)) +
scale_fill_brewer( type="div", palette="PRGn", guide="legend")
给出这个:
这更接近,但现在数字表示为每个颜色“块”上的范围,而我试图让数字分别位于颜色块之间,以更好地展示连续比例。
【问题讨论】:
-
discrete_z是一个因素。您可以更改级别名称,最简单的是在cut中使用标签参数