可能是一个基本的ggplot2
问题,但我有点挣扎。
例如,我有一个向量如下:
10 9 8 7 6 5 4 3 2 1 2 3 4 5 6 7 8 9 10
当数字从左到右递减,然后从中间增加时,我想为这个向量做一个简单的直线曲线(就像基本的plot()
函数一样)。所以对于这个,我会得到类似倒钟的东西。
但是如何根据数字的值设置要着色的线?
数字越大,曲线的红色越多,白色越多,反之亦然,就像在热图中一样。
因此,对于这个特定的矢量,我想绘制一个反向钟,曲线的边用红色,中间用白色,中间用灰色。
提前致谢!
答案 0 :(得分:3)
您可以将颜色审美映射到y
。以下是使用颜色规范的示例。我使用了默认的灰色背景,以便可以看到线条的白色部分,尽管对于渐变使用更高对比度的颜色可能会更好:
library(ggplot2)
dat = data.frame(x=1:19, y=c(10:1,2:10))
ggplot(dat, aes(x,y, colour=y)) +
geom_line(size=1) +
scale_colour_gradient(low="white", high="red")
在上面的示例中,每个x值之间的颜色将相同,并将根据每个段左端的x值进行设置。如果您希望在x值之间插入颜色渐变以获得更平滑的颜色过渡,则可以绘制插值数据框:
ggplot(as.data.frame(approx(dat$x, dat$y, xout=seq(1,19,length=1000))),
aes(x,y, colour=y)) +
geom_line(size=1) +
scale_colour_gradient(low="white", high="red")
答案 1 :(得分:2)
使用sapply定义颜色。此示例使用预定义的热图。
values <- c(10,9,8,7,6,5,4,3,2,1,2,3,4,5,6,7,8,9,10)
heatcols <- heat.colors(10)
plot(values, xlab = '', ylab = '',
col = sapply(values, function(x) (heatcols[x])))
颜色图可以是您选择的任何颜色。只需使用您选择的RGB值。
> heatcols
[1] "#FF0000FF" "#FF2400FF" "#FF4900FF" "#FF6D00FF" "#FF9200FF" "#FFB600FF" "#FFDB00FF" "#FFFF00FF"
[9] "#FFFF40FF" "#FFFFBFFF"