ggplot和multiplot始终显示相同的内容

时间:2017-04-26 11:52:12

标签: r ggplot2

我试图使用多重绘图功能(http://www.cookbook-r.com/Graphs/Multiple_graphs_on_one_page_(ggplot2)/)在一个图表中排列几个图。以下示例取自http://rstudio-pubs-static.s3.amazonaws.com/2852_379274d7c5734f979e106dcf019ec46c.html,效果很好:

@Plan:name('TestExecutionPlan')

define stream sensorStream (id string, lat double, longi double);

define stream outputStream (id string);

from sensorStream [geo:within(lat, longi, " { 'type': 'Polygon', 'coordinates': [[[37.9807986, 23.7262081],[37.9807986, 23.7262081],[37.9792256, 23.7302850],[37.9789888, 23.7268089],[37.9807986, 23.7262081]]] } " )]
 select id 
 insert into outputStream;

但是,我的代码没有:

plots <- list()  # new empty list
for (i in 1:6) {
    p1 = qplot(1:10, rnorm(10), main = i)
    plots[[i]] <- p1  # add each plot into plot list
}
multiplot(plotlist = plots, cols = 3)

不知何故,它与绘图对象如何分配到列表有关,因为我做

dataset <- data.frame(x=c(1,2,3,4,5,6), y1=c(1,4,6,8,10,12), y2=rnorm(6))
plots <- list()
for (i in 1:2){
  plots[[i]] <- ggplot(dataset) + geom_point(aes(x=dataset[,1], y=dataset[,i+1]))
}

multiplot(plotlist = plots, cols=2)

一切都按预期工作。 a <- ggplot(dataset) + geom_point(aes(x=dataset[1], y=dataset[2])) b <- ggplot(dataset) + geom_point(aes(x=dataset[1], y=dataset[3])) multiplot(a,b) 也可以。

我没有意识到相关的差异是什么。有人可以帮忙吗?

非常感谢,

恩诺

2 个答案:

答案 0 :(得分:1)

吧。迷人。

事实证明,在实际创建绘图之前,ggplot调用中的i不会被评估:

plots <- list()
i <- 1
plots[[i]] <- ggplot(dataset) + geom_point(aes(x=dataset[,1], y=dataset[,i+1]))

用y1绘制你的情节:

plots[[1]]

更改i

i <- 2

现在你的列表突然用y2渲染你的情节:

plots[[1]]

答案 1 :(得分:0)

我认为必须将数据集设置为aes。我通常直接调用变量,这似乎有效:

{{1}}