我试图使用多重绘图功能(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)
也可以。
我没有意识到相关的差异是什么。有人可以帮忙吗?
非常感谢,
恩诺
答案 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}}