ggplot2 - 在栏中的标签后添加下标

ggplot2 - add subscript after label in bar

我正在尝试在条形图中的另一个标签(数字)之后添加一个标签(名词)(如下例)。它适用于普通文本(在示例中创建像 Value2 这样的列),但如果我需要下标,它就不起作用。

我尝试了一些使用“bquote”和“expression”的解决方法,但没有弄明白。这个想法是让 GHG 变量中的数字在图中显示为下标(CO[2]、CH[4] 和 N[2]O)。

有什么见解吗?下面的简单工作示例

GHG = c("CH4", "CO2", "N2O")

Value = c(10, 5, 2)

Value2 = c("10 - CH4", "5 - CO2", "2 - N2O")

df = data.frame(GHG, Value, Value2)

g1 = ggplot(data=df, aes(x=GHG, y=Value)) +
  
  geom_bar(stat="identity") +
  
  geom_text(data=df, aes(label = Value2, y= Value, hjust=-0.1), size=4) +
        
  xlab ("") +
  ylab ("") +
  
  coord_flip() +
  
  scale_y_continuous(limits=c(0,11)) + 
  
  theme(text=element_text(family="serif", size=15, colour="black")) +
  theme(axis.text.x=element_text(size=15, colour = "black")) +
  
  easy_remove_y_axis() 

g1

一种方法是使用 ggtext 包,您可以在其中使用 <sub><sup> 标签。

library(ggplot2)
library(ggtext)
library(ggeasy)

GHG = c("CH4", "CO2", "N2O")
Value = c(10, 5, 2)
Value2 = c("10 - CH<sub>4</sub>", "5 - CO<sub>2</sub>", "2 - N<sub>2</sub>O")
df = data.frame(GHG, Value, Value2)

ggplot(data=df, aes(x=GHG, y=Value)) +
  geom_col() +
  geom_richtext(aes(label = Value2, hjust=-0.1), size=4) +
  xlab ("") +
  ylab ("") +
  coord_flip() +
  scale_y_continuous(limits=c(0,11)) + 
  theme(text=element_text(family="serif", size=15, colour="black")) +
  theme(axis.text.x=element_text(size=15, colour = "black")) + 
  easy_remove_y_axis()