【发布时间】:2019-11-22 11:50:52
【问题描述】:
我正在绘制一个数据集,其中化学式作为类别,以及与每个类别相关的值:
data <- data.frame(compound = factor(c("SiO[2]", "Al[2]O[3]", "CaO")),
value = rnorm(3, mean = 1, sd = 0.25))
我想让化学式中的下标在轴标签中正确显示。我尝试了各种解决方案,涉及bquote()、label_parsed()、scales::parse_format() 和ggplot2:::parse_safe(根据this thread),但所有这些都没有给我任何类别标签或一团糟。例如:
ggplot(data = data, aes(x = compound, y = value)) +
geom_col() +
scale_x_discrete(labels = scales::parse_format())
给出这个错误信息:
Error in parse(text = x, srcfile = NULL) : 1:6: unexpected symbol
1: Al[2]O
^
有人可以帮忙吗?我之前使用 x 轴和 x 轴标签(通过labs() 然后bquote() 或类似)成功地完成了此操作,并且我可以看到各种线程来解决该问题,但似乎没有相同的解决方案为类别标签工作。
【问题讨论】:
-
最近刚写了一篇很长的
bquote()回答here。也许这会有所帮助?我想你会想把bquote()的东西隔离到labs()标签调用。 -
哦,抱歉,刚刚注意到您已经尝试过
labs()和bquote()。如果您可以使用dput()函数包含示例数据,那将有助于我和其他人回答您的问题。 -
谢谢@ravic_。您链接到的示例略有不同,因为非标准字符位于轴标签本身中,而不是沿轴的类别中。我认为我的问题中的虚拟数据足以重现问题,但如果我遗漏了什么,请告诉我!
-
比看起来更难,但我想我现在有一个可行的解决方案。
-
“比看起来更难” - 你没看错!
标签: r parsing ggplot2 subscript chemistry