考虑以下示例:

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},')')))

难道我做错了什么?有没有一种方法可以固定间距,或者有更好的方法来创建带有大量下标/上标和希腊字母的标签?

最佳答案

您很可能会获得OS用来非serif显示的字体上正确的打印“空格”。您可以更改字体,也可以插入足够的空白以使用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指出的那样,可以使用普通的plotmath分隔符在不使用plomath paste的情况下完成此操作,因为真正的R表达式中的代字号将被视为“空格”:
     ylab=expression(flux*phantom(x)*(g~CO[2]~m^{-2}~h^{-1})))

关于r - 使用表达式时在轴标签上的间距(paste(...)),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10716374/

10-12 17:22