我试图让这个图的图例变得漂亮,所以我需要有一个实际的上标,这就是为什么我使用 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
允许这样做)
关于r - 在 R 中,除了 Pretty10exp() 之外,当我使用 Paste() 而不是 c() 时,为什么图例中会有尴尬的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38886210/