首页 > 解决方案 > 使用 geom_text 对 ggplot2 中的各个方面进行注释

问题描述

我正在尝试将文本包含在多面图的右上角。我有 5 个生存曲线图,我想在每个图中都包含文本,这将是生存概率等于 50 的月份。我的代码理想情况下会绘制物种的生存曲线并包含一个文本行:“平均Life X Months”,其中 X 是该物种有 50% 的生存概率的月份。我的代码几乎可以做到这一点,但是对于每个绘图,它都与每个文本行重叠。因此,我没有为每个绘图设置 1 个文本行,而是为每个绘图设置了 5 个相互重叠的文本行。我认为我的问题与分层的因素有关。

all<-survfit(Surv(MonthDifference,Survival)~Spec,data=ad,conf.type='log-log')
sum<-summary(all)
allquant<-quantile(all,.5)

stratalabs<-c("Species A","Species B","Species C","Species D","Species E")
names(stratalabs)<-c("A","B","C","D","E")

a<-ggplot(data = all, aes(x = time, y = surv))+
   geom_line() + 
   facet_wrap( .~strata, ncol = 2,labeller = 
   labeller(strata = stratalabs))

dat_tex<-data.frame(label=c("Average Life 90 Months","Average Life 76 Months","Average Life 73 Months","Average Life 51 Months","Average Life 50 Months"),
                f=factor(c(1:5)))

a+  geom_text(data=dat_tex,aes(x=800,y=1,label=label),vjust=2)

使用 egg 包的 tag_facet 函数对我在 SO 上的类似帖子的回答。使用此功能实际上确实有效并将文本放入正确的情节中,但问题是它删除了情节标题。

mytag<-c("Average Life 90 Months","Average Life 76 Months","Average Life 73 Months","Average Life 51 Months","Average Life 50 Months")

a<-ggplot(data = all, aes(x = time, y = surv))+
   geom_line() + 
   facet_wrap( .~strata, ncol = 2,labeller = 
   labeller(strata = stratalabs))

 tag_facet(a, x = Inf, y = Inf, 
      hjust = 1.0,
      tag_pool = mytag)

我解决此问题的尝试来自:

在 ggplot2 的单个方面注释文本

使用 geom_text 在 ggplot2 中的单个方面注释文本

ggplot2 # 2 中各个方面的注释文本

标签: rggplot2plotsurvival-analysis

解决方案


推荐阅读