如何使用 plotmath 在列表中的字符串中创建下标/上标?

问题描述 投票:0回答:1

我正在用 ggtitle 中的参数名称创建多个图。其中一些具有下标、上标或其他绘图字符。我的参数存储在参数列表中,并在我循环到 lapply 绘图列表中的 ggplot 函数中显示为字符串。我基本上只想将参数列表中的“NO[3] (mg/l)”、“NH[4]^+ (µg/l)”等插入到我的 ggtitle(param) 中,以使用这些参数创建标题名字。同时我希望将所有 [n] 转换为下标,并将所有 ^n 转换为上标。

This title is not well formatted

我读过 bquote 和 expression,但这些假设我有一个表达式。即使我从字符串创建表达式,bquote 也无法处理生成的名称。我希望能够将“NO[3] (mg/l)”转换为 NO[3]~(mg/l) 或类似的东西,然后使用 bquote 或表达式。有没有办法通过创建可以轻松解析的更智能的参数组合(类似于 aes 中的 [[param]])来做到这一点,或者我是否必须通过分隔所有有问题的字符然后再次与 bquote 组合来处理参数字符串还是表情?

感谢任何建议! :)

r ggplot2 subscript superscript plotmath
1个回答
0
投票

感谢您推荐过滤器。我最终只用 gsub:ing 空格表示 ~ 和逗号表示点,然后解析参数字符串。它最终很好,无需使用更多过滤器。

这是我可以在 ggtitle 中使用的最终代码:

if (grepl("\\[|\\^", param)) { #only use if [ or ^ is detected
    param_exp <- parse(text=gsub(" ", "~", gsub(",", "." ,param)))
} else {
    param_exp = param
}
© www.soinside.com 2019 - 2024. All rights reserved.