我想根据功能改变一条线的颜色(对于给定的矢量长度,每个间隔的颜色不同。(20分= 20种颜色)
示例数据和功能:
fun <- function(x) {exp(x)}
data <- data.frame(r=seq(0,1,0.1),v=rnorm(11,0,1))
我试过但这不是我需要的。
col.palette <- colorRampPalette(c("darkgreen","yellow","red"), space = "rgb")
plot(fun(sort(data$v)),data$r,type="l",col=col.palette(11)[1])
for (i in seq(2,11)){
lines(i*fun(sort(data$v)),data$r,col=col.palette(11)[i])}
以下是我实际需要的示例,但最好是基本R或格子。
library(ggplot2)
so <- data.frame(x = 1:10,y = 1:10,col = 1:10)
ggplot(so,aes(x = x, y = y)) + geom_line(aes(group = 1,colour = col))
答案 0 :(得分:5)
您可以使用segments
(base
)或lsegments
(lattice
)绘制每个时间间隔:
<强>碱强>
xy <- data.frame(x=sort(runif(11)), y=sort(runif(11)))
plot(xy, type='n')
segments(xy[-nrow(xy), 1], xy[-nrow(xy), 2],
xy[-1, 1], xy[-1, 2], col=rainbow(nrow(xy)-1), lwd=3)
应用于您的数据:
xy <- data.frame(x=fun(sort(data$v)), y=data$r)
plot(xy, type='n', xlab='exp(x)', ylab='r')
segments(xy[-nrow(xy), 1], xy[-nrow(xy), 2],
xy[-1, 1], xy[-1, 2], col=col.palette(nrow(xy)-1), lwd=3)
<强>晶格:强>
大致相同......
xyplot(y~x, data=xy, panel=function(x, y, ...) {
lsegments(x[-length(x)], y[-length(y)], x[-1], y[-1],
col=col.palette(nrow(xy)-1), lwd=3)
})