根据功能改变线条颜色

时间:2015-01-19 09:36:56

标签: r

我想根据功能改变一条线的颜色(对于给定的矢量长度,每个间隔的颜色不同。(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))

1 个答案:

答案 0 :(得分:5)

您可以使用segmentsbase)或lsegmentslattice)绘制每个时间间隔:

  1. <强>碱

    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)
    

    coloured_lines

    应用于您的数据:

    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)
    

    plot2

  2. <强>晶格:

    大致相同......

    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)
    })
    

    enter image description here