11

考虑以下示例:

plot(c(2,4,6)~c(1,2,3),xlab="x",
ylab=expression(paste('flux (g ',CO[2]~m^{-2}~h^{-1},')')))

显然我想要在“g”和“CO”之间有一个完整的空间,但由于某种原因,我在图形标签中得到了一个更小的(一些标签甚至为零)空间。

如果我这样做,问题就更加明显了:

plot(c(2,4,6)~c(1,2,3),xlab="x",
ylab=expression(paste('flux (g C',O[2]~m^{-2}~h^{-1},')')))

难道我做错了什么?有没有办法固定间距,甚至有更好的方法来创建带有大量子/上标和希腊字母的标签?

4

1 回答 1

11

您很可能会在操作系统用于非衬线显示的字体中获得印刷正确的“空格”。您可以更改字体,也可以使用 plotmath 插入足以容纳特定字符串的空格phantom()

 plot(c(2,4,6)~c(1,2,3),xlab="x",
     ylab=expression(paste('flux',phantom(x),'(g ',CO[2]~m^{-2}~h^{-1},')')))

或者正如@baptiste 指出的那样,这可以在没有paste使用普通绘图分隔符的情况下完成,因为真正的 R 表达式中的波浪号被处理为“空格”:

     ylab=expression(flux*phantom(x)*(g~CO[2]~m^{-2}~h^{-1})))
于 2012-05-23T12:17:24.490 回答