首页 > 解决方案 > 如何避免由于 R 中的条带而导致重复文本?

问题描述

我想在 R 中的森林图中添加一个文本,其中包含 strip 但文本在每个 strip 上重复。如何仅将文本添加到一个条带或仅在情节上?我的代码如下:

我的数据是这样的:

     Group     Mean LowerLimit UpperLimit
       M      1.172827   1.083498   1.268857
       H      5.142589   4.333141   6.148088


   h<-"XXXX"

  p = ggplot(data=df4,
       aes(x = Group,y = Mean, ymin = LowerLimit, ymax = UpperLimit), 
      +  
       ggtitle(PlotTitle)+
       geom_point(aes(fill=Group, color=Group), shape=22, size=3)+
      geom_pointrange(aes(col=Group), fatten = 3)+
      geom_hline(aes(),yintercept =1, linetype="longdash")+
      geom_text(aes(-1.5, 0.8, vjust =-0.5, hjust=-0.8, size=10),label=h, 
      check_overlap = T)+
      geom_errorbar(aes(ymin=LowerLimit, 
      ymax=UpperLimit,col=Group),width=0.4,cex=1)+ 
      facet_wrap(~Group,strip.position="left",nrow=2, scales= "free_y") +
 theme(plot.title=element_text(aes(5, 5), hjust=0.5, size=14,face="bold"),
    legend.position='none',
    strip.text.y = element_text(size=10, hjust=0.5,vjust =1,lineheight=0.1, angle=270,face="bold"),
    panel.background = element_blank(),
    strip.background = element_rect(fill="green"),
    plot.margin = margin(3.5,0.1,3.5, 0.5, "cm"))+
    coord_flip()

 p

标签: rggplot2

解决方案


在您的参数中geom_text尝试更改label=hlabel = ''

library(ggplot2)

df4 <- data.frame(Group = c("M", "H"),
                  Mean = c(1.172827, 5.142589),
                  LowerLimit = c(1.083498, 4.333141),
                  UpperLimit = c(1.268857,  6.148088))

PlotTitle = "Insert plot title here"

p = ggplot(data=df4,
           aes(x = Group,y = Mean, ymin = LowerLimit, ymax = UpperLimit)) + 
             ggtitle(PlotTitle) +
             geom_point(aes(fill=Group, color=Group), shape=22, size=3) +
             geom_pointrange(aes(col=Group), fatten = 3) +
             geom_hline(aes(),yintercept =1, linetype="longdash") +
             geom_text(aes(-1.5, 0.8, vjust =-0.5, hjust=-0.8, size=10),label='', 
                       check_overlap = T) +
             geom_errorbar(aes(ymin=LowerLimit, 
                               ymax=UpperLimit,col=Group),width=0.4,cex=1) + 
             facet_wrap(~Group,strip.position="left",nrow=2, scales= "free_y") +
             theme(plot.title=element_text(aes(5, 5), hjust=0.5, size=14,face="bold"),
                   legend.position='none',
                   strip.text.y = element_text(size=10, hjust=0.5,vjust =1,lineheight=0.1, angle=270,face="bold"),
                   panel.background = element_blank(),
                   strip.background = element_rect(fill="green"),
                   plot.margin = margin(3.5,0.1,3.5, 0.5, "cm")) +
             coord_flip()
p

这产生了这个图像:

在此处输入图像描述


推荐阅读