使用表达式时在轴标签上的间距(粘贴(...))

Rol*_*and 11 r axis-labels plotmath

请考虑以下示例:

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

显然我想要"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},')')))
Run Code Online (Sandbox Code Playgroud)

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

42-*_*42- 10

在所有的可能性,你得到一个排版正确的"空间",在您的操作系统使用非衬线显示的字体.您可以更改字体,也可以插入足以用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},')')))
Run Code Online (Sandbox Code Playgroud)

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

     ylab=expression(flux*phantom(x)*(g~CO[2]~m^{-2}~h^{-1})))
Run Code Online (Sandbox Code Playgroud)