如何组合不同行的图形(数据框)&在R中的同一图中绘制?

时间:2015-10-27 07:00:46

标签: r plot ggplot2 dataframe cbind

我有3组数据框,名为" EPp4"," JPp4" &安培; " USP4"不同的行。数据框看起来像这样。

EPp4
Source: local data frame [37 x 3]

    Year     n     N
   (int) (int) (int)
1   1979     2     2
2   1980     3     5
3   1981     4     9
4   1982    18    27
5   1983     8    35
6   1984     4    39
7   1985     8    47
8   1986     6    53
9   1987    11    64
10  1988     2    66
..   ...   ...   ...

我想绘制一个图表,它使用cbind组合所有三组df,但每个都有不同的行。

y <- cbind(EPp4, JPp4[,2], USp4[,2], DEp4[,2], CNp4[,2])

Error in data.frame(..., check.names = FALSE) : 
  arguments imply differing number of rows: 37, 23, 69

所以,我别无选择,只能把它变成同样的。的行。有没有更好的方法来做到这一点?或者我可以在不同行的同一图表中绘制其中三个?感谢任何帮助。

EPp5 <- EPp4[15:37,1:2]
USp5 <- USp4[47:69,1:2]
JPp5 <- JPp4[,1:2]
y <- cbind(EPp5, JPp5[,2], USp5[,2])

g <- ggplot(y, aes(Year))
g <- g + geom_line(aes(y=n1), colour="green")
g <- g + geom_line(aes(y=n2), colour="red")
g <- g + geom_line(aes(y=n3), colour="blue")
g <- g + ylab("Counts") + xlab("Year")

1 个答案:

答案 0 :(得分:0)

您可以为每个geom指定一个自己的数据集。

library(ggplot2)

df1<-data.frame(x=1:20,y=1:20)
df2<-data.frame(x=1:10, y=11:20)

ggplot()+geom_line(aes(x=x,y=y), data = df1)+geom_line(aes(x=x,y=y), data = df2)

enter image description here

*修改

添加Heroka的答案(我希望Heroka好吗?)

#adding id
df1<-data.frame(df1, id = rep("a", nrow(df1)))
df2<-data.frame(df2, id = rep("b", nrow(df2)))

df<-rbind(df1,df2)


ggplot(data = df)+geom_line(aes(x=x,y=y,color = id))

enter image description here