在多个页面上并排绘制

时间:2016-09-19 13:53:53

标签: r ggplot2

我尝试为数据框中的每个分类值创建一个图表列表。对于每个类别,将在一个页面上绘制并排的2个图表,每个页面将包含每个类别的图表。

每项任务都是可行的,但我在组合这两项任务时遇到了问题。

1-使用此dplyr代码可以轻松完成按类别创建绘图的任务(PDF的每页一个):

AllPlots <- dataf %>% 
  group_by(category) %>% 
  do(plots=ggplot(data=., aes(x = x, y = val)) +  geom_bar(stat="identity")+ ggtitle(unique(.$category)))

pdf("plots.pdf")
invisible(lapply(AllPlots$plot, print))
dev.off() 

2- gridgridExtra也很容易并排绘图:

p1 = qplot(1:10, rnorm(10))
p2 = qplot(1:10, rnorm(10))
grid.arrange(p1, p2, ncol = 2, main = "Main title")

可以根据类别进行for循环,并将这些图并排排列,然后将它们组合在一个页面中。但是,我想这很慢,因为我的数据帧非常大。

问题是,如何以快速的方式同时做两件事?

1 个答案:

答案 0 :(得分:0)

抱歉,我只想发表评论,但由于我是新人,该网站暂不让我发表评论。

如果您可以按类别进行绘制,请在开始绘制之前尝试使用 -

select deref(b.album).title 
,round(avg(b2.reviewscore),2)
from album_artist_table b,table(deref(b.album).review) b2
where deref(b.artist).aname like '%Joe%'
and b2.reviewername is not null
group by deref(b.album).title;

将更改您的环境定义,并将每个页面中的2个图表放在另一个旁边。

要了解更多关于par(mfrow)的信息,你可以看看 - http://www.statmethods.net/advgraphs/layout.html