带有 ggplot2 轴标签的下标和上标“-”或“+”? (离子化学符号)

Subscripts and superscripts "-" or "+" with ggplot2 axis labels? (ionic chemical notation)

我使用下面的代码得到了这个图

在我的剧情中,我希望NO3有负号“-”作为上标,如下所示

在x轴的标签中,我不能只使用负号作为NO3的上标,所以我不得不使用-1,如下所示

x <- seq(0,2*pi,0.1)
y <- sin(x)

df <- data.frame(x, y)
ggplot(df, aes(x=x, y=y))+
geom_point(size=4)+
labs(x=expression(Production~rate~" "~mu~moles~NO[3]^{-1}-N~Kg^{-1}),
     y=expression(Concentration~mg~L^{-1})) 

关于如何将标签更改为只有负号而没有 1 的任何建议?

尝试在上标运算符后引用减号:

ggplot(df, aes(x=x, y=y))+
geom_point(size=4)+
labs(x=expression(Production~rate~" "~mu~moles~NO[3]^{"-"}-N~Kg^{-1}),
     y=expression(Concentration~mg~L^{-1})) +
theme(legend.title = element_text(size=12, face="bold"),
      legend.text=element_text(size=12),
      axis.text=element_text(size=12),
      axis.title = element_text(color="black", face="bold", size=18))

我认为在单位之间使用 %.% 运算符看起来更科学准确:

+ labs(x=expression(Production~rate~" "~mu~moles~NO[3]^{textstyle("-")}-N %.% Kg^{-1}),
     y=expression(Concentration~mg~L^{-1})) +

textstyle 应该可以防止 superscript-ed 文本变小。我也不确定为什么两个波浪号之间有 " "。您可以将一大堆波浪线串在一起以增加 "spaces":

ggplot(df, aes(x=x, y=y))+
geom_point(size=4)+
labs(x=expression(Production~rate~~~~~~~~~~~~mu~moles~NO[3]^{textstyle("-")}-N %.% Kg^{-1}),
     y=expression(Concentration~mg~L^{-1})) +
theme(legend.title = element_text(size=12, face="bold"),
      legend.text=element_text(size=12),
      axis.text=element_text(size=12),
      axis.title = element_text(color="black", face="bold", size=18))

还有一个额外的 plotmath 提示:引用数字是一种解决使用 plotmath 生成斜体数字的记录困难的方法。 (使用 italic(123) 不成功,...但 italic("123") 成功。)