【问题标题】:Multiple Plot Display (ggplot only display the last chart when using loop)多图显示(ggplot 使用循环时仅显示最后一个图表)
【发布时间】:2016-10-25 21:51:28
【问题描述】:

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

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

`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]] 时,只出现第二个图形而不是第一个图形。我正在尝试将这些图表显示在一个页面中,希望能提供任何帮助。

【问题讨论】:

  • 问题不是很清楚。你想做什么 ?在同一“页面”中可视化多个绘图?如果是这样,这是行不通的:Q[[2]] 是一个情节,所以很明显你看到了。您可以查看 grid.arrange 包中的 gridExtra。但我不确定这是你想要的......
  • 是的,洛伦佐。我正在尝试在一页中可视化多个图。我知道我可以使用 grid.arrange。但在我这样做之前,我正在尝试找到一种方法来将我生成的多个图存储到一个列表中。所以我可以回忆它们。
  • 理想情况下,我认为我可以将第一个图存储到 Q[1] 中,将第二个图存储到 Q[2] 中,依此类推,然后使用 grid.arrange 将我的图显示在一个页面。
  • 对不起,如果你打电话给Q[[1]]会怎样
  • 现在它是空的。我的意思是当我在循环中使用 print(plot) 运行循环时。我有第一个情节出现,第二个情节紧随其后。我现在正试图将它们并排放在同一页面上。

标签: r loops ggplot2 bar-chart


【解决方案1】:

你肯定在别处遇到了一些问题,因为从这里可以看出:

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]]

实际上可以打印两个不同的图表。您的函数中的“索​​引”似乎有点令人困惑(例如,[,368+i-1][,3*i-2]],所以也许您有问题。

【讨论】:

  • 显然,我只需要将我的 aes 更改为 aes_string
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-02-12
  • 2013-08-03
  • 1970-01-01
  • 1970-01-01
  • 2020-10-20
  • 2022-01-09
  • 1970-01-01
相关资源
最近更新 更多