我正在尝试生成一条垂直线从图下方的x轴向下的正态分布。
到目前为止,我已经能够绘制分布曲线并添加x轴上方的线(图1),并组合两条线在其下方的图(图2)。
图1的问题是它们覆盖了图形而不是出现在下面,并且在图2中没有对齐。有人可以帮我弄这个吗?我不介意只要看起来还可以,该解决方案的方法/技巧如何。
library(gridExtra)
library(ggplot2)
# plot 1
p1 <- ggplot(data.frame(x = c(-3, 3)), aes(x)) +
stat_function(fun = dnorm,
fill = "mediumpurple",
alpha = 0.4,
xlim = c(-1.96,1.96),
geom = "area") +
stat_function(fun = dnorm) +
xlab(expression(mu)) +
ylab("") +
theme_classic() +
theme(axis.title.x = element_text(vjust=22, size = 25),
axis.text.x = element_text(size = 13),
axis.text.y = element_text(size = 13))
plot(p1)
# plot 2
p2 <- ggplot() +
geom_vline(xintercept =-1.96, linetype=2) +
geom_vline(xintercept = 1.96, linetype=2) +
geom_vline(xintercept = 0, size = 1.1) +
xlim(-3, 3) +
xlab("") +
theme_classic() +
theme(axis.line.x = element_blank(),
axis.ticks.x = element_blank(),
axis.text.x = element_blank())
grid.arrange(p1, p2, nrow=2)
答案 0 :(得分:1)
您可以使用此对齐两个图形(按照Left align two graph edges (ggplot)):
gA <- ggplotGrob(p1)
gB <- ggplotGrob(p2)
maxWidth = grid::unit.pmax(gA$widths[2:5], gB$widths[2:5])
gA$widths[2:5] <- as.list(maxWidth)
gB$widths[2:5] <- as.list(maxWidth)
grid.arrange(gA, gB, ncol=1)
然后,您只需要减小两个图之间的间隔即可。