多绘图显示(ggplot仅显示使用循环时的最后一个图表)

时间:2016-10-25 21:51:29

标签: r loops ggplot2 bar-chart

我想要使用迭代函数显示一组图。不幸的是,当我将这些图放入列表并尝试再次调用这些图时,只显示最后一个图。

如果你们可以帮助我,附上我的代码。

`Production<-read.csv("Production.csv")
dataset<-read.csv("Try.csv")
Q<-list()
for (i in 1:2){
Hourly<-loadprofile[,1]
Average<-loadprofile[,2+i-1]
Max<-loadprofile[,368+i-1]
Min<-loadprofile[,734+i-1]
hour<-dataset[,3*i-2]
Company<-dataset[,3*i-1]
Production<-dataset[,3*i]
Q[[length(Q)+1+i]]<-ggplot()+
geom_bar(data=dataset,aes(x=hour, y=Production,
fill=Company),stat="identity") +
geom_line(data=production,aes(x=Hourly, y=Average),stat="identity")+
geom_ribbon(data=production,aes(x=Hourly,ymin=Min, ymax=Max), alpha=0.5,
fill='blue', stat="identity")+
ggtitle("1/1/2017")
}

我有60个不同的图,但我现在使用两个迭代循环来测试它。当我输入命令Q [[2]]时,只显示第二个图形而不是第一个图形。我试图将这些图表显示在一个页面中,并希望得到任何帮助。

1 个答案:

答案 0 :(得分:0)

你必须在其他地方遇到一些问题,因为你可以从中看到:

a = (1:10)
b = (1:10)

df1 = data.frame(a=a,b=b)
df2 = data.frame(a=b,b=-a)

Q = list()

for (i in 1:2){

  if (i == 1) {Qi = ggplot(df1, aes(x = a, y = b))+geom_point()}
  if (i == 2 ) {Qi = ggplot(df2, aes(x = a, y = b))+geom_point()}

  Q[[i]] = Qi

}

Q[[1]]
Q[[2]]

实际上可以工作并打印两个不同的图形。 &#34;索引&#34;在你的函数中似乎有点混乱(例如,[,368+i-1][,3*i-2]],所以也许你有问题。