ggplot2中的上标和下标点

Superscript and subscript points in ggplot2

我想在 ggplot2 点图中将 sub/superscript 添加到某些 letters/characters。我知道如何在轴上执行此操作,但在这种情况下,因为它们是特殊字符,所以我在绘图之前定义了一个字符向量:

IPA=(c("ph", "th", "kh", "p", "t", "k", "ts", "tsh", etc.))

我想为图中的点绘制字母组合,例如 p^[h] 和 ts^[h],但此语法不起作用(p^{h} 或 p^h)。见图形。

p <- ggplot(data, aes(x, y, label=IPA))
p + geom_text(size = 5) +
  theme(legend.position="none") +
  scale_shape_manual(values = IPA)

您可以将文本转换为 plotmath 表达式并在 geom_text 中使用 parse=TRUE。以下是内置 mtcars 数据框的示例。我已将您的 IPA 值作为列添加到 mtcars,然后将 h 的所有实例转换为 [h],以及 ts 的所有实例] 到 t^s,它们分别是 plotmath 中的下标和上标表达式(有关表达式的更多信息,请参见 ?plotmath;还有很多与 R 图中的数学注释相关的 Whosebug 问题). parse=TRUE 导致 geom_texth 呈现为下标。

mtcars$IPA = gsub("h", "[h]", IPA)
mtcars$IPA = gsub("ts", "t^s", mtcars$IPA)

ggplot(mtcars, aes(mpg, wt, label=IPA)) +
  geom_text(size=5, parse=TRUE) +
  theme_classic()