r - 在 R 中,除了 Pretty10exp() 之外,当我使用 Paste() 而不是 c() 时,为什么图例中会有尴尬的输出?

标签 r plot legend

我试图让这个图的图例变得漂亮,所以我需要有一个实际的上标,这就是为什么我使用 sfsmisc 库中的 Pretty10exp() 函数。当我使用 c() 函数时它有效。

但是,我也试图将字符串和科学计数法数字保持在同一行。 legend() 被分成两行,我认为这是由于 c().我以为我可以使用paste(),但由于某种原因,输出现在不正确。

plot(1:12)
pVal <- 4
legend("topright", legend = c("P value:", sfsmisc::pretty10exp(pVal)), cex = 1.5)

legend("topright", legend = paste("P value:", sfsmisc::pretty10exp(pVal)), cex = 1.5)

pVal 是以科学记数法表示的任意数字。第二行的输出如下:“P value: (significand) %*% 10^-4”。第一行也没有给我我想要的东西。我该如何解决这个问题?

最佳答案

pretty10exp 返回一个表达式,允许它使用 ?plotmath 功能来生成漂亮的数字。使用表达式时,您不能只将值粘贴到类似的字符串中。您需要使用一组特殊的函数来操作它们。其中一个函数是substitute。你可以做

plot(1:12)
pVal <- 4
legend("topright", cex = 1.5, 
    legend = substitute("P value: "*x, list(x=sfsmisc::pretty10exp(pVal)[[1]])) )

我们使用 substitute()pretty10exp 中获取表达式中包含的值,并在其前面添加所需的标签。 (我们使用 * 来连接而不是 paste() 因为 plotmath 允许这样做)

enter image description here

关于r - 在 R 中,除了 Pretty10exp() 之外,当我使用 Paste() 而不是 c() 时,为什么图例中会有尴尬的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38886210/

相关文章:

r - Dplyr 计数/多个过滤器计数

r - datetime 无法从 chr 数据类型解析

r - 如何使用 ggplot2 在 Kaplan-Meier 图下方放置 "number at risk"表

使用美观和 geom_text 时从图例中删除 'a'

r - 在 R 中稍微向上推图例

r - 将数据框的名称提取为 R tidyverse 中的字符串

如果工作日位于日期范围之间,R data.table 将使用逻辑值设置新列

matlab - 如何在 Matlab 中用坐标位置和半径数组可视化多个球体

python - 将 matplotlib 3D 图形的框架更改为 x、y 和 z 箭头

matlab - 图例中的颜色与绘图不匹配