调整 R 表达式中的括号大小

9
我希望我的坐标轴标签读作类似于(m²),括号的高度要大一些以匹配上方的2,但是括号仍然要内联。然而,如果使用类似于以下的方式,我会得到太小的括号:
parse(text='group("(",m^{2},")")')

产生的结果为

small parentheses

或者是过于大且不对齐的括号,通过类似以下方式进行调整
parse(text='bgroup("(",m^{2},")")')

产生

large parentheses

我能不能不用R来完成这个任务?

更新:

根据用户@42-的建议,我也尝试了scriptstyle。然而,这会使括号内的文本变得更小。特别是与相邻文本一起出现时更为明显。例如,

parse(text='Area~~(scriptstyle(m^{2}))')

将产生以下结果:

scriptstyle ex1

我意识到解决方法是使用类似于 parse(text='scriptstyle(Area~~(m^{2}))') 这将产生

scriptstyle ex2

然后手动放大字体大小来补偿,但是否有修复或替代方案,不需要这种猜测的方法?
1个回答

9

你想要什么;

plot(1,1, main=parse(text='scriptstyle( bgroup("(",m^{2},")"))') )

或者也许:

plot(1,1, main=parse(text='"("*scriptstyle(m^{2})*")"') )

enter image description here

第三种选择是使用“phantom()”,它将保留与其参数相等的空间。通过实验,我发现您可以使用以下方法获得不那么“下降”的括号:
plot(1,1, main=parse(text='"("*phantom(m^2)*")"') ,cex.main=1.6)

然后用以下内容填充空白:
title(main=expression(m^2) )

enter image description here

如果需要进一步微调,则可以使用title(main= <expression> , line= 2.5)命令,以文本行为单位相对于“框”来调整文本的水平。

 plot(1,1) ; title( main=expression(Area(phantom("   "))) ,cex.main=1.5, line=1.5)
 title(main=expression(phantom('Area(')*m^2) ,line=1.5)

enter image description here


有用的语法!但是有没有办法在不使内部文本变小的情况下使括号更大/高?如果有周围文本,就会非常明显,如parse(text='Area~~(scriptstyle(m^{2}))') - user2455117
1
Plotmath只是真正的LaTeX的可怜副产品。您可能需要在Markdown中使用LaTeX或MathML。 - IRTFM
我明白了。有没有办法预测字体大小的缩小(请参见更新的问题)? - user2455117
网格包具有确定文本大小的特性。 - IRTFM
基础图形也有strwidth和strheight函数,但是?strheight说它没有考虑文本中的“下降部分”,但显然测量了plotmat边界框的完整高度。 - IRTFM

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接