用R中的一个x和多个y绘制数据集

时间:2018-10-17 09:50:51

标签: r ggplot2

我是R的新手,因此对于R社区而言,这也许是“轻松”的。我有一个数据集,其中包含一个x向量和serval(在这种情况下为8个)对应向量(矩阵)。我想将它们绘制在一张具有不同线条颜色的图形中。这是我尝试过的:

df = data.frame(x=x, y = matrix(nrow = length(x), ncol = 8))

mat=matrix(nrow = length(x), ncol = 8)

gp<-ggplot(df,aes(x,mat[,1], group_indices(mat))) +geom_line(size=1) + 
  xlab("Voltage") + ylab("Current") + scale_y_log10() + ggtitle(paste("IV Curve") ) 

for (i in seq(2,8,1) )
  {
    gp= gp + geom_line(aes(x,y=mat[,i], colour=i),size=1)
  }

但是这只给我一个图形中的第一个和最后一个数据。

这是有效的:

gp= gp + geom_line(aes(x,mat[,2], colour=2),size=1) +
  geom_line(aes(x,mat[,3], colour=3),size=1) +
  geom_line(aes(x,mat[,4], colour=4),size=1) +
  geom_line(aes(x,mat[,5], colour=5),size=1) +
  geom_line(aes(x,mat[,6], colour=6),size=1) +
  geom_line(aes(x,mat[,7], colour=7),size=1) +
  geom_line(aes(x,mat[,8], colour=8),size=1) 

但是我想使其更加自动化和简单。我愿意接受新想法,我想我对R中的不同变量类型并不满意。在此先感谢。

2 个答案:

答案 0 :(得分:1)

以内置的第8列anscombe数据集为例,尝试以下代码。

library(ggplot2)
library(zoo)

x <- 1:nrow(anscombe)
autoplot(zoo(anscombe, x), facet = NULL) +
  xlab("Voltage") + 
  ylab("Current") + 
  scale_y_log10() + 
  ggtitle("IV Curve")

给予:

screenshot

答案 1 :(得分:0)

将您的数据集融为一列,其中包含y变量值,并具有与之关联的相应变量名。如果您探索虹膜数据集,我将使用虹膜数据集进行此操作,您将理解我的意思。

一旦您拥有了融化的数据,就很容易创建图表

 library(ggplot2)
 ggplot(iris,aes(x = Sepal.Length,y=Sepal.Width,color=Species))+geom_point()+geom_line()

enter image description here