在两个不同(“网格排列”)图之间绘制线

RHA

因此,我设法创建了两个ggplot-graphs并将它们与完美对齐grid.arrange现在,我想将箱线图的最小值,1Q,3Q和最大值与左侧图中的分布联系起来。geom_hline在两个图中都绘制了水平(红色条纹)线,但是我想将这些线连接起来,所以也要遍历两个图之间的空白。有什么建议么?这是图形:在此处输入图片说明

噢,是的,复杂的因素是:正确的图形的坐标被翻转了!

这是一个可重现的示例:

library(ggplot2)
library(scales)
library(gridExtra)

# create some data
df_ahn <- data.frame(yh=rnorm(1000,0.23,0.05))
df_peil <- data.frame(hoogte = rnorm(1000,0,1))

# vector met de hoogtes
Summary_df <- summary(df_ahn$yh)

p_peil <- ggplot(df_peil,aes(x=hoogte))+
  geom_histogram(aes(y=cumsum((..count..)/sum(..count..))), binwidth = 0.01,fill="gray")+
  stat_bin(aes(y=cumsum((..count..)/sum(..count..))),binwidth = 0.01,geom="line",color="black") +
  geom_vline(aes(xintercept = as.vector(Summary_df[1])), lty = 2,color =2)+
  geom_vline(aes(xintercept = as.vector(Summary_df[2])), lty = 2,color =2)+
  geom_vline(aes(xintercept = as.vector(Summary_df[5])), lty = 2,color =2)+
  geom_vline(aes(xintercept = as.vector(Summary_df[6])), lty = 2,color =2)+
  coord_flip() +
  ggtitle("Onderschrijdingsfrequentie\n waterstand in kreek") +
  xlab("Hoogte in meter NAP") +
  ylab("Onderschrijdingsfrequentie in % (10% = 36,5 dagen/jaar)") +
  scale_y_continuous(limits = c(0, 1),labels = percent, breaks=seq(0,1,by=0.1)) +
  scale_x_continuous(limits = c(-0.5, 0.6), breaks=seq(-0.5,0.6,by=0.1)) +
  theme(panel.background = element_rect(fill = "transparent",colour = "black"),
        panel.grid.major = element_line(colour = "darkgray"),
        panel.grid.minor = element_line(colour = "gray"),
        strip.background = element_rect(fill="gray"),
        strip.text = element_text(size=14, color="black"),
        axis.ticks.y = element_line(colour = "black"),
        axis.ticks.x = element_line(colour = "black"),
        axis.text.x = element_text(size=14, color="black"),
        axis.text.y = element_text(size=14, color="black"),
        axis.title = element_text(size=14, color="black")
  )

p_ahn <-    ggplot(df_ahn, aes(x=1, y=yh)) +
  geom_boxplot(outlier.size=3, outlier.shape=1) +
  geom_hline(aes(yintercept = as.vector(Summary_df[1])), lty = 2,color =2)+
  geom_hline(aes(yintercept = as.vector(Summary_df[2])), lty = 2,color =2)+
  geom_hline(aes(yintercept = as.vector(Summary_df[5])), lty = 2,color =2)+
  geom_hline(aes(yintercept = as.vector(Summary_df[6])), lty = 2,color =2)+
  scale_y_continuous(limits = c(-0.5,0.6), breaks=seq(-0.5,0.6,by=0.1)) +
  ggtitle("Hoogte groeiplaatsen\nKruipend moerascherm") +
  ylab("") +
  xlab("") +
  theme(panel.background = element_rect(fill = "transparent",colour = "black"),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        strip.background = element_rect(fill="gray"),
        strip.text = element_text(size=14, color="black"),
        axis.ticks.y = element_line(colour = "black"),
        axis.ticks.x = element_line(colour = "white"),
        axis.text.x = element_text(size=14, color="white"),
        axis.text.y = element_text(size=14, color="black"),
        axis.title = element_text(size=14, color="black", face="bold")

  ) 
grid.arrange(p_peil,p_ahn, layout_matrix = matrix(c(1,1,1,2), nrow=1, byrow=TRUE), ncol = 4)
浸礼会

您可以从其中一个图提取线,然后将其添加到组合gtable的整个区域中,

在此处输入图片说明

library(ggplot2)
library(gtable)
library(grid)

set.seed(123)
y <- rnorm(10)
p1 <- qplot(1:10, y) +
  geom_hline(yintercept=0, lty=3)

p2 <- qplot(1:10, 10*y) +
  geom_hline(yintercept=0)

#library(gridExtra)
#grid.arrange(p1,p2,widths=c(3,1)) # no line

g1 <- ggplotGrob(p1)
g2 <- ggplotGrob(p2)
lines <- g1$grobs[[4]][["children"]][[3]]
g1$grobs[[4]][["children"]][[3]] <- NULL # remove line
g2$grobs[[4]][["children"]][[3]] <- NULL # remove line
g <- cbind(g1,g2,size="first")
g$heights <- unit.pmax(g1$heights, g2$heights)
g$widths[[9]] <- unit(1/3, "null")
g <- gtable_add_grob(g, lines, l=4, t=3, r=9, z=Inf)
grid.newpage()
grid.draw(g)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将绘制的条形图从两个图重新排列为R中的三个不同图

C3.js在两个不同的列或数据系列之间绘制线

Python:在矩阵的两个坐标之间绘制线

如何在两个页眉之间绘制理想线?

在两个给定点之间绘制线(OpenCV,Python)

在两个ggplot饼图之间绘制箭头

Matlab_绘制两个图之间的差异

两个图相同的x轴,两个y轴-如何在网格中排列图

使用jQuery DOM线在两个div之间绘制线

在ggplot2中绘制两个误差线和一个点图

绘制分位数线并连接两个小提琴图

排列两个表之间的关联

两个网格单元之间的距离,无对角线

使用tmap软件包绘制时,两个多边形之间的边界线似乎与轮廓线不同

两个视图之间的自定义绘制线无法正常工作

在Julia的灰度图像上的两个像素之间绘制一条线

如何在两个文本线android之间绘制垂直分隔线?

在R中的两个SF POINT特征之间绘制线

在不与matplotlib相交的情况下在两个圆之间绘制椭圆线

ggplot2:在两个值之间绘制一条线

如何在HTML canvas元素中的两个圆圈之间绘制线

如何在两个因子变量之间绘制多条线

在两个div之间绘制一条静态线

在TableLayout Android中的两个元素之间绘制自定义线

Javascript + SVG,在两个给定点之间绘制窦(波浪)线

在matlab中在两个补丁之间绘制3D线

在 TMapView (Delphi FMX) 中的两个坐标之间绘制一条线

无法绘制两个图 - Matplotlib

从具有交互作用的glm模型绘制两个不同组的拟合线