以固定的列间隔在数据框中绘制多个数据,并在一个单独的图中绘制相应的图例

时间:2014-01-23 12:57:57

标签: r function ggplot2

我有一个30列的数据框x3,使用以下代码生成,我想在单个图中绘制第一列为x轴,y轴应为第5,10,15列,20,25和30。

x <- c(1:10)
y <- x^3
z <- y-20
s <- z/3
t <- s*6
q <- s*y
x1 <- cbind(x,y,z,s,t,q)
x2 <- cbind(x1,x1*5)
x3 <- cbind(x1,x1*5,x2*2,x1+2)
x3 <- data.frame(x3)

要绘制多个y数据(第5,10,15,20,25和30列)与相同的x轴数据,我使用下面这段代码,

plt <- ggplot() + 
  lapply(seq(5,ncol(x3),5),         
         function(x){              
           geom_line(aes(x=x3[1], y=x3[x]),                           
                     color=variable,                                
                     size=1.5) + scale_y_continuous()                                          
         }) +   xlab('x') +  ylab('y')

但是我在do.call中遇到错误(“图层”.. 有人可以指出我在上面的代码中需要修改的内容,以便以图例的正确方式显示数据。

由于

1 个答案:

答案 0 :(得分:3)

使用melt将数据重新整形为长格式:

x4 <- melt(x3, id=c("x"), measure=c("t","s.1","z.2","y.3","x.4","q.4"), variable = "cols")

然后用:

创建你的情节
ggplot(x4) +
  geom_line(aes(x=x, y=value, color=cols), size=1) + 
  scale_y_continuous() 

给出:

enter image description here