如何在同一面板(ggplot2)中绘制两个图形

时间:2018-07-13 06:28:57

标签: r ggplot2 data-visualization curve-fitting

我只需要将两个不同的曲线(一个GLM分段回归和相同数据的正常GLM)放在一个面板中(一个图形,没有不同的面)。我只能将两个图形彼此并排放置(如下),但是我需要将蓝色曲线包括到另一个图形中。关于如何解决这个问题有什么想法吗?希望对于有ggplot2经验的人来说,这可能是一个非常简单的问题。

Two graphs side by side

我最接近合并这两条曲线的方法是按照某些帖子中的建议(使用library(reshape2,Plot two graphs in same plot in R)将某些数据转换为data.frame,然后设法做到了(如下)。但是,要绘制GLM(此处的绿线)和点的Conf。间隔一直很困难,所以我想知道是否有更简单的方法来连接上述曲线(我按y轴缩放)。

我还尝试了一些在线发现的其他建议,例如仅使用add = TRUE添加两个图等。预先感谢。

Both lines in the same plot, but no confidence intervals

更多信息:
非常感谢您的回复。数据由景观中的油棕比例(x.oilpalm)的梯度(解释变量)组成,响应为物种丰富度(spp.obs_NP)。

head(dati)     

x y
1 50.155835 8
2 34.648817 10
3 80.927821 11
4 53.352809 8
5 1.303226 10
6 31.818881 9

所以对于GLM图(左侧)。我使用了以下代码:

p1 <- ggplot(newdata, aes(x=x.oilpalm, y=fit)) +
geom_ribbon(aes(ymin = lwr, ymax = upr), alpha = .25) +   
geom_line(size = 1) +
geom_point(data = vars, aes(y = spp.obs_NP, x = x.oilpalm)) +
labs(x = "Percentage of oil palm coverage", y = "Mammalian species richness")  
+
theme_bw()    
print(p1)

p2 <- p1 + theme(axis.text.x = element_text(color="black", size = 12),
             axis.text.y = element_text(color="black", size = 12),
             axis.title.y = element_text(size = 13),
             axis.title.x = element_text(size =13))
p2

对于右侧的图(分段GLM回归)

p6 <- ggplot(dati, aes(x = x, y = y)) +
  geom_point() +
  geom_line(data = dat22, color = 'blue') +
  ylab("Mammalian species richness") +
  xlab("Percentage of oil palm coverage")+theme_bw() 

p7 <- p6 + theme(axis.text.x = element_text(color="black", size = 12),
             axis.text.y = element_text(color="black", size = 12),
             axis.title.y = element_text(size = 13),
             axis.title.x = element_text(size =13))
p7

将两个图并排在一起

首先我重新缩放p7,这样Y轴也最大为16

  p8a <- ggplot(dati, aes(x = x, y = y, ymax= y+ 3.5)) + 
  geom_point() +
  geom_line(data = dat22, color = 'blue',linetype ="dashed", lwd = 1) +
  ylab("Mammalian species richness") +
  xlab("Percentage of oil palm coverage")+theme_bw() 
  p9a <- p8a + theme(axis.text.x = element_text(color="black", size = 12),
               axis.text.y = element_text(color="black", size = 12),
               axis.title.y = element_text(size = 13),
               axis.title.x = element_text(size =13))
  p9a  

然后我只是使用gridExtra将两个图放在一起

library(gridExtra)
 aa <- grid.arrange( p2,  p9a, ncol=2)
 p22 <- aa + scale_y_continuous()

*请不要担心传说,如果我要使用这种样式,可以使其更整洁。但是我只需要一个数字。这是,使蓝色曲线(右)重叠在左面板上。

解决方案(请参阅评论)

enter image description here enter image description here

0 个答案:

没有答案