轴标签与表达式的R对齐

non*_*ame 5 plot r

我想绘制变量名称及其符号.由于某些变量具有长名称,因此我尝试将换行符与轴标签混合使用.这会导致对齐中发生有趣的事情:

par(mar=c(1,12,1,1))

plot( y=1:6, 1:6, yaxt="n", ylim=c(1,6), ylab="" )

axis(2, at=6:1, las=1,
     labels=c(
  expression( paste( 'Variable, ',rho, sep="" ) ),
  expression( paste( 'Another variable,\n',alpha, sep="" ) ),
  expression( paste( 'Also\nvariable,\n',beta, sep="" ) ),
  expression( paste( 'This\nvariable too, ',Gamma, sep="" ) ),
  expression( paste( 'Verybigname\nvariable,',C[zeta], sep="" ) ),
  expression( paste( 'Verybigname\nvariable,',C[zeta],"moretext\n",C[delta], sep="" ) ) ))
Run Code Online (Sandbox Code Playgroud)

第一行(从顶部开始)是我期望其他人以某种方式看起来的样子,这在轴旁边是合理的.

其余的行都显示了基本问题,即变量名称相对于表达式的第二个元素而不是轴是对齐的.这在变量名和它的符号之间插入大空格的最后一行变得特别奇怪.

理想情况下,我希望标签正确对齐,并以刻度线为中心.

42-*_*42- 5

这是我text在“手动”侧面定位时能做的最好的事情。(许多使用 'hadj' 和 'padj' 轴的努力都失败了。)为了尝试在文本值下获取 plotmath 希腊语,我需要使用该atop函数。这反过来又需要使用phantom. 我主要使用纯 plotmath~*作为连接器而不是依赖paste,但在这里你使用 "\n" 确实完成了一个换行符(我发现这很令人惊讶)。顺便说一下, plotmathpaste函数实际上并不接受sep参数。

par(mar=c(1,12,1,1))
plot( y=1:6, 1:6, yaxt="n", ylim=c(1,6), ylab="" )

axis(2, at=6:1, las=1,
     labels=rep("",6 ))
text( 0.5, 6:1- c(0,0,.2,.1,.1,.1), c(
   expression( Variable~~rho ) ,
   expression( atop(~~Another~variable, phantom("Another~variable")~alpha)  ),
   expression( atop(paste( '        Also\n   variable') ,phantom("variable")~beta ) ),
   expression( atop( paste( '            This\nvariable too') ,phantom("           ")~Gamma ) ),
   expression( atop( paste( '   Verybigname\n            variable,'),phantom("  Verybigname")~C[zeta] ) ),
   expression(  paste( '   Verybigname\nvariable,',C[zeta],"moretext\n",C[delta] ) ) ), 
xpd=TRUE ,adj=1)
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明