我想绘制变量名称及其符号.由于某些变量具有长名称,因此我尝试将换行符与轴标签混合使用.这会导致对齐中发生有趣的事情:
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)
第一行(从顶部开始)是我期望其他人以某种方式看起来的样子,这在轴旁边是合理的.
其余的行都显示了基本问题,即变量名称相对于表达式的第二个元素而不是轴是对齐的.这在变量名和它的符号之间插入大空格的最后一行变得特别奇怪.
理想情况下,我希望标签正确对齐,并以刻度线为中心.
这是我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)