我希望将风险表标题和风险表文本定位并对齐到最左侧,如第一张图片所示。
我创建了一个对象:
library(survfit)
library(tidycmprsk)
fit.mh.male <- cuminc(Surv(time, status) ~ Exposure, data = timesplit.mh.m)
fit.mh.male %>%
ggcuminc()+
add_risktable(
risktable_stats = `n.risk`,
stats_label = list(n.risk = "No. at Risk"),
size = 3)+
add_confidence_interval()+
scale_ggsurvfit()+
labs(title = "FTMH male",
x = "Time since surgery")+
theme(axis.test.y = element_text(hjust = 1))+
coord_cartesian(xlim = c(0, 10),
ylim = c(0, 0.04)) +
scale_color_jama()+
scale_fill_jama()+
theme_minimal()+
theme(legend.position = "bottom")+
guides(color = guide_legend(nrow = 1))
在我的代码中,风险表文本是向右对齐的 - 它涵盖了在时间 = 0 时面临风险的一些数字,并且风险表标题在时间 = 0 的数字上对齐,而不是在时间 = 0 时的数字上对齐。风险表文本。
为了更好地理解这个问题,至关重要的是要认识到
ggcuminc
对象的 print 方法创建了两个 ggplot 对象:顶部带有曲线的主面板,以及底部的一个仅文本的 ggplot 对象风险表。标签“No. at Risk”是底部图的title,标签“Cataract”和“Victrection”是 y 轴标签。
使用此信息,我们可以传递参数以将这些元素作为
theme
对象传递给 theme
的 add_risktable
参数:
fit.mh.male %>%
ggcuminc() +
add_risktable(
risktable_stats = "n.risk",
stats_label = list(n.risk = " No. at Risk"),
size = 3,
theme = list(theme_risktable_default(),
theme(plot.title.position = "plot",
axis.text.y.left = element_text(hjust = 0,
margin = margin(0, 20, 0, 0))))
) +
add_confidence_interval() +
scale_ggsurvfit() +
labs(title = "FTMH male",
x = "Time since surgery")+
theme(axis.test.y = element_text(hjust = 1)) +
coord_cartesian(xlim = c(0, 10),
ylim = c(0, 0.04)) +
scale_color_jama() +
scale_fill_jama() +
theme_minimal() +
theme(legend.position = "bottom") +
guides(color = guide_legend(nrow = 1))
使用的数据
请注意,我们没有您的数据集,因此我必须创建一个具有相似特征和相同变量名称的数据集。这是我在上图中使用的数据:
set.seed(1)
timesplit.mh.m <- data.frame(Exposure = sample(c("Cataract", "Virectomy"),
300000, TRUE, prob = c(20, 0.1)))
timesplit.mh.m$status <- rbinom(300000, size = 1,
prob = ifelse(timesplit.mh.m$Exposure == "Cataract", 0.008, 0.02))
timesplit.mh.m$time <- runif(300000, 0, 120)/10
timesplit.mh.m$status <- factor(timesplit.mh.m$status)
fit.mh.male <- cuminc(Surv(time, status) ~ Exposure, data = timesplit.mh.m)