【问题标题】:Special characters and superscripts on plot axis titles绘图轴标题上的特殊字符和上标
【发布时间】:2013-03-22 02:38:15
【问题描述】:

我正在尝试使用特殊字符和上标制作 y 轴标题。我能够做到这一点,但我希望右括号不要上标。这就是我遇到的问题。我认为这只是我的括号,但我已经尝试了(似乎)一切。

plot(WatexCl, ConcuM, col = as.numeric(1), pch = as.numeric(Depth), 
   xlab = expression(paste("Concentration Cl  ( ", mu, "moles/g dry wt)")), 
   ylab = expression(paste("Average Conc of S- on plates ( ", mu, "Moles/cm"^"2"),)), 
   data = plates)

【问题讨论】:

    标签: r plot superscript plotmath


    【解决方案1】:

    用户经常无法理解的一件事是,当用于情节标签的表达式时,您总是不需要将字符串和paste 一起引用。直接使用布局工具通常更简单(例如~*)。例如:

    df <- data.frame(y = rnorm(100), x = rnorm(100))
    
    plot(y ~ x, data = df,
         ylab = expression(Average ~ Conc ~ of ~ S- ~ on ~ plates ~ 
                           (mu ~ Moles ~ cm^{-2} ~ dry ~ wt)),
         xlab = expression(Concentration ~ Cl ~ (mu ~ moles ~ g^{-1} ~ dry ~ wt)))
    

    或者,您可以为较长的文本部分包含字符串;在这种情况下,可以说更容易做到:

    plot(y ~ x, data = df,
         ylab = expression("Average Conc of S- on plates" ~
                             (mu ~ moles ~ cm^{-2} ~ "dry wt")),
         xlab = expression("Concentration Cl" ~ (mu ~ moles ~ g^{-1} ~ "dry wt")))
    

    但请注意这里不需要paste字符串和其他功能。

    两者都产生:

    注意 plotmath 与上标 2 的问题。您可能希望为 y 轴边距添加一些额外空间以适应该问题:

    op <- par(mar = c(5,4.5,4,2) + 0.1)
    plot(y ~ x, data = df,
         ylab = expression("Average Conc of S- on plates" ~
                              (mu ~ moles ~ cm^{-2} ~ "dry wt")),
         xlab = expression("Concentration Cl" ~ (mu ~ moles ~ g^{-1} ~ "dry wt")))
    par(op)
    

    生产

    【讨论】:

      【解决方案2】:

      这样就解决了上标右括号的问题:

      # reproducible data
      plates <- data.frame(WatexCl = rnorm(100), ConcuM = rnorm(100), Depth = rnorm(100))
      
      # alter the default plot margins so the 
      # superscript in the y-axis label is completely displayed
      par(mar=c(5,5,4,2))
      
      # draw the plot
      plot(WatexCl ~ ConcuM, data = plates,
           col = as.numeric(1), 
           pch = as.numeric(Depth), 
           xlab = bquote("Concentration Cl ("*mu~"moles/g dry wt)"), 
           ylab = bquote("Average Conc of S- on plates ("~mu~"Moles/cm"^"2"*")"))
      

      【讨论】:

      • bquote 在这里有点矫枉过正。 expression 应该可以正常工作。 bquote 在想要将表达式中的对象替换为其值时最有用。
      • @GavinSimpson,谢谢,很高兴知道!看起来expression 在空格字符方面也比bquote 做得更好,我的情节括号附近有一些奇怪的空格...
      • 那是因为您使用~ mu ~ 来分隔两个带引号的字符串。如果您将其设置为* mu ~,您将获得正确的间距。 ~ 是空格运算符,* 将参数并列(即没有空格)。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-30
      • 1970-01-01
      • 2021-05-13
      相关资源
      最近更新 更多