You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用ggtext绘制ggplot箱图时,无法显示上标^-1求助

解决ggplot分组箱图中标签上标不显示的问题
  • 问题根源:使用ggtext的element_markdown()时,Markdown语法里多字符上标需要用大括号{}包裹,你写的kg^-1只会把-识别为上标,1会保留为普通文本,导致显示异常。

  • 两种修复方案:

方案1:用Markdown大括号包裹多字符上标

修改scale_x_discrete里的标签,把kg^-1改为kg^{-1}:

#install.packages("ggtext")
library(ggtext)

ggplot(pesosip,aes(x=Treatment,y=PESO..gr.,fill=Weight.record))+
  geom_boxplot()+
  ggtitle("C")+
  scale_x_discrete(breaks=c("Control (Male)","PTX 60","NCTD 3",
                            "MIX"),
                   labels=c("Control<br>*(M)*","PTX 60 mg kg^{-1} <br>*(F)*",
                            "NCTD 3 mg kg^{-1} <br>*(F)*","MIX<br>*(M)*"))+
  scale_fill_discrete(name="Record",labels=c("Initial","Final"))+
  theme_classic()+
  theme(axis.text.x = element_markdown(),legend.position = "top")+
  labs(x="Treatment",y="Weight (g)",fill="Record")

方案2:用HTML的<sup>标签

直接用HTML上标标签包裹需要上标的内容,兼容性更稳定:

#install.packages("ggtext")
library(ggtext)

ggplot(pesosip,aes(x=Treatment,y=PESO..gr.,fill=Weight.record))+
  geom_boxplot()+
  ggtitle("C")+
  scale_x_discrete(breaks=c("Control (Male)","PTX 60","NCTD 3",
                            "MIX"),
                   labels=c("Control<br>*(M)*","PTX 60 mg kg<sup>-1</sup> <br>*(F)*",
                            "NCTD 3 mg kg<sup>-1</sup> <br>*(F)*","MIX<br>*(M)*"))+
  scale_fill_discrete(name="Record",labels=c("Initial","Final"))+
  theme_classic()+
  theme(axis.text.x = element_markdown(),legend.position = "top")+
  labs(x="Treatment",y="Weight (g)",fill="Record")

两种方法都能让-1完整显示为上标,任选其一即可。

内容的提问来源于stack exchange,提问作者Atomix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 19:45:30