当映射颜色以GGPLOT2系,例如:彩色线按值对平均值在GGPLOT2
x = data.frame(x = 1:6, y = c(0,0,10,10,0,0))
ggplot(x, aes(x, y, col=y)) + geom_line(size=5)
..行颜色映射到每个线段的第一数据点。是否有任何简单的方法可以让ggplot计算两个点的平均值(即,斜线都缩放到5的颜色)?
当映射颜色以GGPLOT2系,例如:彩色线按值对平均值在GGPLOT2
x = data.frame(x = 1:6, y = c(0,0,10,10,0,0))
ggplot(x, aes(x, y, col=y)) + geom_line(size=5)
..行颜色映射到每个线段的第一数据点。是否有任何简单的方法可以让ggplot计算两个点的平均值(即,斜线都缩放到5的颜色)?
类似想法@Richard,但使用zoo
包。
library(zoo)
x = data.frame(x = 1:6, y = c(0,0,10,10,0,0))
ggplot(x, aes(x, y, col=rollmean(y, 2, fill = 0))) + geom_line(size=5)
更容易包装成ggplot,所以我认为这是答案,谢谢 – geotheory
这是做你想做的吗?
x = data.frame(x = 1:6, y = c(0,0,10,10,0,0))
x$c <- rowMeans(cbind(x$y, c(x$y[-1], NA)))
ggplot(x, aes(x, y, col=c)) + geom_line(size=5)
优雅的方式来计算中间值 – geotheory
大约两点之间计算平均值,并使用该列指定的颜色是什么? – jazzurro
当然,但是当对多行进行子集化时,这取决于你的数据结构。猜猜我是懒惰的,但我只是想知道是否有ggplot解决方案。 – geotheory
对于给定的数据,我认为这两个答案正在完成这项工作。 'temp < - mutate(x,foo =(lead(y,default = 0)+ y)/ 2); ggplot(temp,aes(x = x,y = y,col = foo))+ geom_line(size = 5)'会做同样的工作。如果你有更复杂的情况,我认为值得在你的问题中增加更多描述。 – jazzurro