使用for loop可使用ggplot2在单个打印中打印多条线

使用for loop可使用ggplot2在单个打印中打印多条线,r,ggplot2,R,Ggplot2,我尝试在单个绘图中绘制多条线,如下所示: y <- matrix(rnorm(100), 10, 10) m <- qplot(NULL) for(i in 1:10) { m <- m + geom_line(aes(x = 1:10, y = y[,i])) } plot(m) 它应该包含10个不同的行 是否有ggplot2方法来执行此操作?您应该使用ggplot2方法来执行此操作,而不是使用循环。 ggplot2需要长格式的数据(您可以使用REGRAPE2::m

我尝试在单个绘图中绘制多条线,如下所示:

y <- matrix(rnorm(100), 10, 10)
m <- qplot(NULL)
for(i in 1:10) {
    m <- m + geom_line(aes(x = 1:10, y = y[,i]))
}
plot(m)
它应该包含10个不同的行


是否有
ggplot2
方法来执行此操作?

您应该使用ggplot2方法来执行此操作,而不是使用循环。 ggplot2需要长格式的数据(您可以使用REGRAPE2::melt()进行转换)。然后通过列(这里是Var2)拆分行


y电子数据交换的方式是最好的方式。如果仍要使用
for
循环,则需要使用for循环生成数据帧

如下图所示:

# make the data
> df <- NULL
> for(i in 1:10){
+ temp_df <- data.frame(x=1:10, y=y[,i], col=rep(i:i, each=10))
+ df <- rbind(df,temp_df)} 

> ggplot(df,aes(x=x,y=y,group=col,colour=factor(col))) + geom_line() # plot data
#生成数据
>df(1:10中的i){
+温度
y <- matrix(rnorm(100), 10, 10)
require(reshape2)
y_m <- melt(y)

require(ggplot2)
ggplot() +
  geom_line(data = y_m, aes(x = Var1, y = value, group = Var2))
# make the data
> df <- NULL
> for(i in 1:10){
+ temp_df <- data.frame(x=1:10, y=y[,i], col=rep(i:i, each=10))
+ df <- rbind(df,temp_df)} 

> ggplot(df,aes(x=x,y=y,group=col,colour=factor(col))) + geom_line() # plot data