使用R中的ggplot创建复合图

时间:2016-02-20 11:49:19

标签: r ggplot2 composite

我是R的新手,我正在尝试使用ggplot创建复合图。我已经搜索了如何做到这一点并且已经看到我可以使用facet函数,但是,这似乎是用于绘制可以按类型分割的数据,例如男/女。我有一个数据框,我想绘制恢复对抗浓度,并在不同的图上恢复平衡时间,但作为复合图。为此,我有以下代码:

p1 <- ggplot(dat2, aes(x = EqmTime, y = Recovery))
limits <- aes(ymax = Recovery + RecoveryError, ymin=Recovery - RecoveryError)

p1 + geom_point(size = 4) + geom_errorbar(limits, width=4) + geom_smooth(method = "lm", se = FALSE, colour="gray", size=1.5, linetype="dashed") +
labs(x='Equilibrium Time (hrs)', y='Nitrate Recovery (%)') + theme_bw() +
  theme(axis.line = element_line(colour = "black"),
    panel.grid.major = element_blank(),
    panel.grid.minor = element_blank(),
    panel.border = element_blank(),
    panel.background = element_blank()) 

p2 <- ggplot(dat2, aes(x = StockConc, y = Recovery))
limits <- aes(ymax = Recovery + RecoveryError, ymin=Recovery - RecoveryError)

p2 + geom_point(size = 4) + geom_errorbar(limits, width=0.1) + geom_smooth(method = "lm", se = FALSE, colour="gray", size=1.5, linetype="dashed") +
  labs(x='Concentration (g L-1)', y='Nitrate Recovery (%)') + theme_bw() +
  theme(axis.line = element_line(colour = "black"),
    panel.grid.major = element_blank(),
    panel.grid.minor = element_blank(),
    panel.border = element_blank(),
    panel.background = element_blank())

此外,我还遇到一个问题,即我无法将图2的x轴标签中的“-1”作为上标,并且无法设置轴限制。例如,当我设置xlim = 20-180时,轴不会在这些位置开始和结束,但会使这些成为主要刻度线。

我非常感谢任何帮助!我知道其他帖子中已经解决了其中一些问题,但我似乎无法使用此建议来解决此问题。

1 个答案:

答案 0 :(得分:0)

根据您的问题,我了解您想要在单个绘图窗口中绘制两个ggplots。您可以使用gridextra包执行此操作:

library(gridExtra)
grid.arrange(p1, p2, nrow=2)