【问题标题】:How to make ggplot colorbar change asymmetrically around midpoint?如何使 ggplot colorbar 围绕中点不对称变化?
【发布时间】:2018-08-28 09:23:25
【问题描述】:

我想绘制一些有自然中点的东西,许多值低于中点,只有少数值高于中点。我想让高于中点的值脱颖而出。但因为它们非常接近中点(由于数据的分布),所以很难看到。

这是一个例子:

library(ggplot2)
mtcars$qsec <- mtcars$qsec-21
sp2<-ggplot(mtcars, aes(x=wt, y=mpg, color=qsec)) + geom_point()
sp2+scale_color_gradient2(midpoint=0, low="blue", mid="white",
                          high="red", space ="Lab" )

我希望 0 到 1 之间的红色与 0 到 -6 之间的蓝色一样红色。我怎样才能做到这一点,同时保持我的体重秤连续?

或者离散化是唯一的选择?如果是这样,我可以保持部分规模连续而部分离散吗?

【问题讨论】:

标签: r ggplot2


【解决方案1】:

正如 Henrik 所建议的,scale_color_gradientn 完成了这项工作。需要做的额外计算是计算1为最大值,0为最小值时的中点,可以使用(midpoint-min(mtcars$qsec))/(max(mtcars$qsec)-min(mtcars$qsec))完成。

library(ggplot2)
mtcars$qsec <- mtcars$qsec-21
sp2<-ggplot(mtcars, aes(x=wt, y=mpg, color=qsec)) + geom_point()
midpoint <- 0
sp2+scale_color_gradientn( colours = c("red","white","blue"),
                           values=c(1.0, (midpoint-min(mtcars$qsec))/(max(mtcars$qsec)-min(mtcars$qsec)),0))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-15
    • 1970-01-01
    • 1970-01-01
    • 2011-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多