我有,例如,下面的情节:
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吗?
答案 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()