r - 有没有办法在 "expression"中正确显示 "paste"?

标签 r label expression paste

我在 R 中有这样的表达式:

ylabel <- expression("NO"[3]*"-N-Concentration [mg/l]")

这应该是 ggboxplot 上 y 轴的标签。 由于 y 标签距离轴太近,我使用 \n (换行)来创建与轴的距离:

ylab=paste(ylabel,"\n")

但是在我的绘图上,我的标签将不会按照我的预期正确显示:

Wrong formated label

有人知道如何解决这个问题吗? 我已经搜索了论坛,但不幸的是仍然没有成功。

编辑: 我只是添加了一个小例子来重现该问题:

ylabel <- expression("NO"[3]*"-N-Concentration [mg/l]")
par(mar=c(6,8,1,1))
y=c(1,1,2,2,3,4,5)
plot(y, ylab=paste(ylabel,"\n"))

最佳答案

考虑使用bquote,它会使用atop计算表达式

par(mar =  c(3, 6,  2, 2))
 plot(1:10, ylab = bquote(atop(NO[3]*-N-Concentration [mg/l], "\n")))

-输出

enter image description here


或者如果我们需要表达式

par(mar =  c(3, 6,  2, 2))
ylabel <- expression(atop(NO[3]*-N-Concentration [mg/l], "\n"))
plot(y, ylab=ylabel)

-输出

enter image description here

---

或者正如评论中提到的OP,如果[mg/l]需要按原样显示,那么只需引用它即可

ylabel <- expression(atop(NO[3]*-N-Concentration*" [mg/l]", "\n"))
par(mar =  c(3, 6,  2, 2))
plot(1:10, ylab = ylabel)

关于r - 有没有办法在 "expression"中正确显示 "paste"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69329831/

相关文章:

r - 如何将一个字符串列分隔成多个列?

R optimParallel - 找不到函数

r - 尽管处于 64 位版本,但无法在 R 中分配向量

python - 如何在 nuke 表达式中为 python 函数提供参数?

r - 如何在 curve() 中使用公式作为特征向量

java - java中两个表达式的区别

r - 在 GGplot2 中使用 Geom_Bar

java - 可以在没有循环的情况下使用 LABEL block 吗?

java - 为什么我不能在 Java 8 中继续使用带有 Collections#forEach 的标签?

matplotlib - 具有相同标签的不同散点图标记