使用数据框中的字符串列获取绘图轴标签中的上标

Getting Superscripts in Plot Axis Labels Using Character String Columns From a Data Frame

提问人:David Moore 提问时间:10/6/2023 最后编辑:David Moore 更新时间:10/6/2023 访问量:34

问:

我有一个变量名称和单位的数据框。

df1 <- data.frame(Variable = paste('Variable', 1:4), Unit = c('mm', 'cm ^ 2', 'cm ^ 2 * hr ^ -1', 'cm ^ 3 * cm ^ -2 * hr ^ -1'))
# > df1
#     Variable                       Unit
# 1 Variable 1                         mm
# 2 Variable 2                     cm ^ 2
# 3 Variable 3           cm ^ 2 * hr ^ -1
# 4 Variable 4 cm ^ 3 * cm ^ -2 * hr ^ -1

我想在生成绘图的轴标签时使用它们。下面是我正在玩的一些示例代码。

par(mfrow = c(2, 2))
for (u in 1:4) {
  plot(0, xlab = paste0(df1[u, ]$Variable, ', ', bquote(.(df1[u, ]$Unit))))
}

这是这些情节的样子。您可以看到上标如何无法正常工作。

enter image description here

我怎样才能得到我想要的上标?我以前使用过 、 和 函数,但从未用于对象(例如我使用的数据框包含一列单位)、上标和算术运算符的特定组合。我不确定我是否需要以某种方式重新格式化单位列或更改我在函数中生成轴标签的方式。expression()paste()bquote()plot()

谢谢!

r 绘图 axis-labels 上标

评论


答:

1赞 jay.sf 10/6/2023 #1

用。我会把它放在一个.str2langmtext

par(mfrow = c(2, 2))
for (u in 1:4) {
  plot(0, ann=FALSE)
  mtext(bquote(.(df1[u, ]$Variable)*', '~.(str2lang(df1[u, ]$Unit))), 1, 3)
}

enter image description here


数据:

df1 <- structure(list(Variable = c("Variable 1", "Variable 2", "Variable 3", 
"Variable 4"), Unit = c("mm", "cm ^ 2", "cm ^ 2 * hr ^ -1", "cm ^ 3 * cm ^ -2 * hr ^ -1"
)), class = "data.frame", row.names = c(NA, -4L))

评论

0赞 David Moore 10/6/2023
这太棒了 - 谢谢。我唯一的评论是,我希望在“cm^2”和“hr^1”之间,以及“cm^3”和“cm^-2”和“hr^-1”之间有空格(甚至可能是星号)。我该怎么做?
1赞 jay.sf 10/6/2023
@DavidMoore 中的特殊字符,直接添加不带空格,并表示空格。因此,要添加空间,请尝试“cm ^ 2 ~ hr ^ -1。需要将可见的星号添加为字符,如下所示:.bquote*~"cm ^ 2 *'*'* hr ^ -1"