我有一个数据集,其中包含一些异常值,我在ggplot中将其绘制为栅格。未经修改的配色方案往往会突出显示这些异常值,但代价是显示大多数数据的分布。设置限制会有所帮助,但超过指定限制的值会丢失。有没有办法在色带的末尾绘制高于限制的值?
这是忠实数据集中的一个例子。这不是与我的数据的完美类比,因为没有异常值导致问题,但它显示了我的问题。
ggplot(faithfuld, aes(waiting, eruptions)) +
geom_raster(aes(fill = density))+
scale_fill_gradientn(colours =
c("red", "orange", "yellow", "green","blue","purple","white"))
假设我希望减少对较高值的关注。也许有更好的方法来做到这一点,而不是设定限制?在限制的情况下,我将数据丢失到最大值以上(此处为 0.03(。
ggplot(faithfuld, aes(waiting, eruptions)) +
geom_raster(aes(fill = density))+
scale_fill_gradientn(limits = c(0,.03),
colours = c("red","orange", "yellow", "green","blue",
"purple","white"))
理想情况下,我想像在 GIS 中一样绘制它,其中高于我的限制的值将设置为色带的最大值。我总是可以破解数据以显示它,但我希望 ggplot 中有一个更优雅的解决方案。
na.value
来定义异常值的颜色,并将异常值颜色与颜色匹配以获得最大值。
ggplot(faithfuld, aes(waiting, eruptions)) +
geom_raster(aes(fill = density))+
scale_fill_gradientn(limits = c(0,.03),
na.value = "white", #na.value color same as color for max value
colours = c("red","orange", "yellow", "green","blue",
"purple","white"))
这样做的一个缺点是,白色的比例仍然显示 0.03,尽管它应该读取>0.03 才能准确。您可能需要编辑比例以使标签准确无误。