我想使用ggplot2包并排放置两个图,即相当于par(mfrow=c(1,2)).
例如,我希望以下两个图表以相同的比例并排显示.
x <- rnorm(100)
eps <- rnorm(100,0,.2)
qplot(x,3*x+eps)
qplot(x,2*x+eps)
Run Code Online (Sandbox Code Playgroud)
我需要将它们放在相同的data.frame中吗?
qplot(displ, hwy, data=mpg, facets = . ~ year) + geom_smooth()
Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个facet_wrap在多个页面上绘制ggplot 图的函数.这只是一个黑客,因为这个功能似乎在ggplot2功能待办事项列表中.我做了一些小的计算,找到了我需要的页数,我每页需要的行data.frame数等等.我非常有信心这一切都有效.
pdf(filename)
for (i in seq(num_pages)){
slice = seq(((i-1)*num_rows)+1,(i*num_rows))
slice = slice[!(slice > nrow(df.merged))]
df.segment=df.merged[slice,]
p <- ggplot(df.segment, aes(y=mean,x=phenotype))
p <- p + geom_bar(stat="identity",fill="white",colour="black")
p + facet_wrap("ID",scales="free_y",ncol=n_facets,nrow=n_facets)
}
dev.off()
Run Code Online (Sandbox Code Playgroud)
我的问题是,通过将它全部包含在这样的for循环中,在pdf()和dev.off()函数之间,是for循环似乎不等待ggplot来做它的事情,并且非常快速地通过它的循环并输出PDF无效.
如果我设置i = 1,启动pdf(),在for循环中运行上面的代码,然后设置i=2,然后运行代码,依此类推,直到我感到无聊(i=3)然后关闭设备,结果PDF很棒.
有没有办法在进入下一次迭代之前让for循环等待最后一行完成绘图?
我正在使用ggplot2绘制图形,我有facet_wrap制作多个图形(~51)的功能,但它们都出现在一个页面上.现在搜索后,我发现ggplot2无法在多个页面上放置图形.
有没有办法做到这一点?我看了这个问题(使用ggplot在多个页面上多个图表)并尝试了代码,但收效甚微.
这是我的图形代码,它在一个页面上生成约51个图形,使它们非常小而且难以看到,如果我可以在pdf中将每页打印到1个图形,那将是很好的:
ggplot(indbill, aes(x = prey, y = weight), tab) +
geom_polygon(aes(group = load, color = capture), fill = NA, size = 0.75) +
facet_wrap(~ individual) +
theme(axis.ticks.x = element_blank(),
axis.text.x = element_text(size=rel(0.5)),
axis.ticks.y = element_blank(),
axis.text.y = element_blank()) +
xlab("") + ylab("") +
guides(color = guide_legend(ncol=2)) +
coord_radar()
Run Code Online (Sandbox Code Playgroud)
如果有人可以写一些代码并向我解释,那就太好了!
谢谢!