【问题标题】:R plot: Bringing formatted values into expression() in base graphics legendR plot:将格式化值带入基本图形图例中的表达式()
【发布时间】:2015-02-27 05:47:49
【问题描述】:

以下问题:我尝试制作一个传奇,我将在其中拥有类似的内容:
ɛ = 5 L / (mol cm)。然而,这个数字是计算出来的,这里是一个最小的例子:

plot(rnorm(10,3),rnorm(10,3))
epsilon.calc <- mean(rnorm(10,3))
legend("topleft",bty="n",legend=paste("epsilon=",format(epsilon.calc,digits=5),"L/(molcm)"))
legend("bottom",bty="n",legend=expression(epsilon,paste(format(epsilon.calc,digits=5)),"L/(molcm)"))

如果我使用第一个图例,我可以粘贴数字 (epsilon.calc),如果我使用图例 2,我可以以正确的方式表达 epsilon。 任何人都知道如何将这些表达式()和粘贴()组合在一个图例中?

【问题讨论】:

    标签: r plot legend


    【解决方案1】:

    这就是我认为你想要的:

    legend("bottom",bty="n",legend=c(bquote(epsilon ==.(format(epsilon.calc, digits=5))),
                                     expression( L/(mol %.% cm) )
           )                        )
    

    最好在最少使用paste() 的情况下学习使用plotmath。 bquote 是完成评估的最简单机制,但也可以使用 substitute 完成。表达式调用内部的paste 实际上是与paste“外部”函数不同的函数。

    这是单行版本:

    legend("bottom",bty="n",
        legend=bquote(epsilon ==.(format(epsilon.calc, digits=5))~(L/(mol %.% cm))
         )           )
    

    【讨论】:

    • 这很好,我怎样才能在一行中接收整个文本,现在单元在第二行?
    • 去掉逗号和表达式调用。用波浪号 (~) 链接令牌。
    • 单行版本不适合我(可能是因为 Mac?),并且在您的示例图片中,单位也没有正确表达。
    • 在点调用中的括号过多。与Mac无关。我自己用一个。但是关于单位,……你不是特别清楚什么是“合适的”。
    • 现在完美运行!我的意思是因为在您的 postet 绘图图片中,顶部图例中的单位看起来像 L/(mol%*%cm),但它现在工作得很好。谢谢!!
    猜你喜欢
    • 1970-01-01
    • 2021-03-05
    • 1970-01-01
    • 1970-01-01
    • 2016-06-28
    • 1970-01-01
    • 1970-01-01
    • 2021-03-12
    • 2021-05-21
    相关资源
    最近更新 更多