提问人:Mark H 提问时间:10/27/2023 最后编辑:Mark H 更新时间:11/23/2023 访问量:14
如何在 R 中使用 ggplot2 自定义 y 轴上的间距?
How do you customise spacing on the y-axis using ggplot2 in R?
问:
我想从分层模型创建结果的森林图,以便变量名称显示在 y 轴上,并且分层中每个级别的名称显示在下面(最好从变量名称缩进)。
我有以下示例:
library(tidyverse); theme_set(theme_classic())
# Create example data
data <- data.frame(variable = c(rep("Covariate1",3), rep("Covariate 2",3),
rep("Covariate3",3)),
posterior = rep(c("GroupA", "GroupB", "GroupC"),3),
mu = c(0.25, 0.08, 0.07, 0.27, -0.45, 0.01,
0.37, 0.002, 0.24),
colour = rep(c("red","blue","yellow")))
data$est <- paste(data$variable, data$posterior, sep="_")
data
# variable posterior mu colour est
#1 Covariate1 GroupA 0.250 red Covariate1_GroupA
#2 Covariate1 GroupB 0.080 blue Covariate1_GroupB
#3 Covariate1 GroupC 0.070 yellow Covariate1_GroupC
#4 Covariate 2 GroupA 0.270 red Covariate 2_GroupA
#5 Covariate 2 GroupB -0.450 blue Covariate 2_GroupB
#6 Covariate 2 GroupC 0.010 yellow Covariate 2_GroupC
#7 Covariate3 GroupA 0.370 red Covariate3_GroupA
#8 Covariate3 GroupB 0.002 blue Covariate3_GroupB
#9 Covariate3 GroupC 0.240 yellow Covariate3_GroupC
plot1 <- data |>
ggplot(aes(y = fct_rev(reorder(est, as.numeric(row.names(data)))))) +
geom_point(aes(x=mu), shape=16, size=3.5, colour=data$colour) +
geom_vline(xintercept = 0, linetype="solid",
linewidth=0.3, colour="gray70") +
labs(x="Effect size", y="") +
coord_cartesian(xlim=c(-0.5, 0.5), ylim=c(1,9)) +
ggtitle("My Title")
plot1
我创建了向量来帮助解释问题。我希望 y 轴标签更像这样,使用 和 :est
variable
posterior
Covariate1
GroupA
GroupB
GroupC
Covariate2
GroupA
GroupB
GroupC
Covariate3
GroupA
GroupB
GroupC
协变量之间有一个空格。有谁知道如何做到这一点?到目前为止,我只找到了均匀增加/减少所有 y 轴项目之间空间的解决方案,但我需要一些更自定义的东西来对我的数据进行分组。
我没有使用,因为我对图中的每个协变量都有不同的统计模型(加上置信区间,这里不包括在内),而且我无法让它工作。ggforestplot
答: 暂无答案
评论