我想绘制使用ggplot的多个图。我有一个.xls,有20个216个变量的观察值。数据分为6个,所以我感兴趣的是6个大块。我使用另一个循环创建了这些数据,以便每个块被3除(12个变量组)。我想为6个块中的每一块绘制小块的第一个变量。所以在我想要的情节中:my_data [,i],my_data [,i + 12],my_data [,i + 24],其中我从1:12变化(这样i == 12 - > 12 + 24 = 36)。ggplot没有绘制在循环中
time= 1:20 # definir #periodos
title = c("pib", "c", "i", "l", "pi", "r", "w", "cl", "cc", "wrel","lrel", "yrel") # for titles
title = rep(title, 3)
plot_list = list()
for (i in 1:12) {
df = data.frame(time,
as.numeric(my_data[,i],as.numeric(my_data[,i+12]),
as.numeric(my_data[,i+24])))
p = ggplot(df, aes(x = time, y= as.numeric(my_data[,i])))
+ geom_line()
+ geom_line(aes(y=as.numeric(my_data[,i]), colour="nr = 0.32"))
+ geom_line(aes(y=as.numeric(my_data[,i+12]), colour="nr = 0.4"))
+ geom_line(aes(y=as.numeric(my_data[,i+24]), colour="nr = 10"))
+ scale_colour_manual("", breaks=c("nr = 0.32", "nr = 0.4", "nr = 10"),
values = c("green", "royalblue4", "orangered"))
+ labs(x = "periodos", y = "vg4")
+ ggtitle(paste0(title[i], "_vg4 for diff.nr - tax"))
plot_list[[i]] = p
print(p)
}
当我这样做时,只打印第三个值(nr = 10)。有谁知道发生了什么?我已经尝试以不同的方式定义我的data.frame
,但输出始终是相同的。 谢谢!
数据和.R文件是:https://www.dropbox.com/sh/efjtanbh5oznrg5/AADrhSUXOu3MYSCGLcFnNY_ea?dl=0
帮助我们通过使您的代码具有可重现性(这意味着提供可用于您的代码的数据)来帮助您。一个问题是,你给ggplot数据帧'df',但是你在每次调用'aes'的时候引用一个单独的数据框('my_data')(并且你应该只引用列名;数据框应该被馈送到'ggplot'或'geom'的'data'参数)。你有没有检查绘图代码是否在循环之外工作? – eipi10
只读取最后一个'geom_line()',因为它最后被调用并且正好在其他确切趋势之上运行。我怀疑列i,i + 12,i + 24保留了确切的值。检查重新排列几何线,看看是否只有最后一个会出现,这里是'nr = 10'。 – Parfait