我有一组数据,并希望将颜色美学映射到一种“参考值”,如下所示: 以下值为红色 附近的值是蓝色 上面的值是绿色 我仍然想表明值是连续的,所以简单地使用像cut()这样的函数并使用
>以下值为红色
>附近的值是蓝色
>上面的值是绿色
我仍然想表明值是连续的,所以简单地使用像cut()这样的函数并使用scale_colour_discrete并不是我想要的.这是一些示例数据:
set.seed(123) x <- runif(100, min = 1, max = 10) y <- runif(100, min = 1, max = 10) test <- data.frame(x = x, y = y) test$colour <- runif(100, min = 1, max = 10) ggplot(test, aes(x = x, y = y, colour = colour)) + geom_point(size = 3)
这产生以下结果:
我熟悉scale_colour_gradient(低=“红色”,高=“绿色”),但我希望更有意识地将我的颜色转换为所需的值映射,以使区域“流行”更具视觉效果.间距不一定是线性的.换句话说,对于参考值3,映射将是这样的:
value: 1 3 10 colour: red blue green
这可能吗?我还会采用其他解决方案来实现良好的可视化,以便在各点之间轻松突出“理想”值.例如,我考虑替换引用附近的值,使得(ref – tol< color< ref tol)< - NA,然后使用scale_colour_gradient的na.value选项. 或者我应该真正考虑切割()选项,只需要一个非常小的切割尺寸,然后弄清楚如何逐渐改变颜色沿着合成的断裂?
从 http://docs.ggplot2.org/0.9.2.1/scale_gradient2.html开始:scale_color_gradient2(low = "red", midpoint = 3, mid = "blue", high = "green")
更新:
关于OP的评论 – 玩中点和空间=“实验室”有助于:
# Using the Lab colour space also improves perceptual properties # at the price of slightly slower operation d + scale_colour_gradient2(space="Lab")
从墓地回来 – 鉴于最新的评论,我意识到应该把两行代码放在一起:
scale_color_gradient2(low = "red", midpoint = 3, mid = "blue", high = "green", space="Lab")