當映射顏色以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