ggplot - 查找构面间距的坐标

时间:2018-01-25 02:18:07

标签: r ggplot2 r-grid

我有,例如,下面的情节:

library(ggplot2)
dat = data.frame(x = rnorm(100), y = rexp(100), grp = factor(sample(1:2, 100, replace = TRUE)))
ggplot(dat, aes(x = x, y = y, color = grp)) + 
  geom_point() + 
  facet_wrap(~grp) +
  theme(panel.spacing = unit(2, "lines"))

并希望在两个图之间添加一条垂直线 - 即在面板间距的中间。我的问题是,我不知道如何以原生单位获得内部情节边缘/面板间距的坐标。

两个面板都有0.5 npc的单位 - 我不知道如何转换它。我尝试使用视口,但这不起作用。除了安排地块1之外还有其他方法 - 垂直线图 - 地块2吗?

2 个答案:

答案 0 :(得分:1)

这是你的想法吗?您可以使用参数调整以更改线条的显示位置。

# loading the libraries
library(ggplot2)
library(grid)
library(cowplot)

# preparing the data
dat = data.frame(x = rnorm(100),
                 y = rexp(100),
                 grp = factor(sample(1:2, 100, replace = TRUE)))

# preparing the plot
plot <- ggplot(dat, aes(x = x, y = y, color = grp)) +
  geom_point() + 
  facet_wrap( ~ grp) +
  theme(panel.spacing = unit(2, "lines"))

# preparing the line
gline <- grid::linesGrob(x = 0.5)

# plotting both the plot and the line
cowplot::ggdraw() +
  cowplot::draw_plot(plot) +
  cowplot::draw_plot(gline) 

reprex package(v0.1.1.9000)于2018-01-24创建。

答案 1 :(得分:0)

library(grid)
library(gtable)
library(magrittr)

ggplotGrob(p) %>%
  gtable_add_grob(segmentsGrob(0.5, 0, 0.5, 1), 
                  t = 4, b = 8, l = 7, r = 7)  %>%
  grid.draw()

enter image description here