【问题标题】:How to enlarge ONLY a letter of a word in R如何仅放大R中的一个单词的字母
【发布时间】:2017-08-04 05:51:34
【问题描述】:

背景:

当您绘制由字母(例如,t)、括号和数字组成的等式时,经常会出现一些字母看起来比括号和数字小得多的情况。

问题:

我想知道 R 中是否有办法只放大(放大)我下面的 R 代码中的字母 "t" 来克服我描述的问题在后台(在下面查看我的 R 代码)?

这是我的 R 代码:

par(family = "serif")
plot(1:10, ty='n')

mtext(bquote(italic("t")*(.(11))*" = "*.(2.78)* ",  "*italic("p")*" = "*.(.032)*",  
"*italic("d")*" = "*.(.66)*",  " *"95% "*CI[~italic((d))]* " ["*.(.42)*",  "* .(1.23)*"]" ) 
, side = 1, line = -15, at = 2, adj = 0, cex = 1.5)

【问题讨论】:

  • 谷歌搜索“放大 cex”可能会导致令人惊讶的结果。

标签: r function plot


【解决方案1】:

你可以用 mtext 做到这一点,用 cex 放大所有内容,然后缩小 "t" 之后的所有表达式的大小:

mtext(bquote(italic("t")*scriptscriptstyle( (.(11))*" = "*.(2.78)* ",  "*italic("p")*" = "*.(.032)*",  
"*italic("d")*" = "*.(.66)*",  " *"95% "*CI[~italic((d))]* " ["*.(.42)*",  "* .(1.23)*"]" ) )
, side = 1, line = -15, at = 2, adj = 0, cex = 3)

【讨论】:

    【解决方案2】:

    您可以使用text 代替mtext。一个好处是如果你必须放大中间的某个字母,你可以将整个文本分成两组,然后使用strwidth找出你想要放大的字母的位置。在这种情况下,由于您要放大的字母在开头,因此您只需两步就可以写出整个文本。首先在某个 x 和 y 处写下较长的文本,然后在开头写上适当的 adjcex。阅读adj?text

    graphics.off()
    par(family = "serif")
    plot(1:10, ty='n')
    
    text(x = 2, y = 6, labels = bquote(italic("")*(.(11))*" = "*.(2.78)* ",  "*italic("p")*" = "*.(.032)*","*italic("d")*" = "*.(.66)*",  " *"95% "*CI[~italic((d))]* " ["*.(.42)*",  "* .(1.23)*"]" ), adj = 0, cex = 1.5)
    
    text(x = 2, y = 6, labels = expression(italic("t")), adj = c(1, 0.2), cex = 5)
    


    为了说明我能够在中间放大字母的意思,这里是一个我在中间放大“p”的例子
    graphics.off()
    windows(width = 8, height = 6, pointsize = 10)
    par(family = "serif")
    plot(1:10, ty='n', asp = 1)
    
    text(x = 1, y = 6, labels = bquote(italic("t")*(.(11))*" = "*.(2.78)* ",  "), adj = 0, cex = 1.5)
    
    w1 = strwidth(bquote(italic("t")*(.(11))*" = "*.(2.78)* ",  "), cex = 1.5)
    
    text(x = 1+w1, y = 6, labels = bquote(italic("p")), adj = 0, cex = 5)
    
    w2 = strwidth(bquote(italic("p")), cex = 5)
    
    text(x = 1+w1+w2, y = 6, labels = bquote(" = "*.(.032)*","*italic("d")*" = "*.(.66)*",  " *"95% "*CI[~italic((d))]* " ["*.(.42)*",  "* .(1.23)*"]" ), adj = 0, cex = 1.5)
    

    【讨论】:

    • 这是一个比我更好的通用解决方案。太糟糕了,代码高尔夫不是目标:-)(我也考虑过使用这种方法,但是由于(a)OP 使用mtext,并且(b)时间有限,我选择了更简单的方法。谢谢花时间“做得更好”!)
    【解决方案3】:

    由于您只是尝试更改第一个字母,因此相对容易。将放大的字母放在line/at右对齐,并将字符串的其余部分放在相同的line/at左对齐。

    par(family = "serif")
    plot(1:10, ty='n')
    at <- 1.5
    line <- -4
    mtext(bquote(italic("t")), side = 1, line = line, at = at, adj = 1, cex = 5)
    mtext(bquote((.(11))*" = "*.(2.78)), side = 1, line = line, at = at, adj = 0, cex = 1.5)
    

    【讨论】:

      猜你喜欢
      • 2023-04-04
      • 1970-01-01
      • 1970-01-01
      • 2011-07-29
      • 2014-12-04
      • 1970-01-01
      • 2020-07-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多