【发布时间】:2019-07-26 17:24:18
【问题描述】:
在查看了许多示例和大量尝试之后,我仍然无法将文本字符串和表达式组合成 ggplot2 轴标签,这正是我想要的。
成分:
parname <- 'FL.Red.Total'
xmean <- 123.34
xsigma <- 2580.23
要将数字更改为 10^n 符号,我使用以下公式:
sci_form10 <- function(x) {
paste(gsub("e\\+", " \xB7 10^", scientific_format()(x)))
}
然后将通过以下方式构建名称:
labs( x = bquote(.(gsub('\\.', '\\ ', parname)) ~ " (a.u.) (" ~ mu ~ "=" ~ .(sci_form10(xmean)) ~ ", " ~ sigma ~ " =" ~ .(sci_form10(xsigma)) ~ ")" ))
我希望将 10^04 替换为 10,后跟上标中的 4,并在第一张图片显示的标签中添加换行符
测试代码:
library(ggplot2)
library(scales)
sci_form10 <- function(x) {
paste(gsub("e\\+", " * 10^", scientific_format()(x)))
}
parname <- 'FL.Red.Total'
xmean <- 123.34
xsigma <- 2580.23
ggplot(mtcars, aes(x=mpg,y=cyl)) +
geom_point() +
labs( x = bquote(.(gsub('\\.', '\\ ', parname)) ~ " (a.u.) (" ~ mu ~ "=" ~ .(sci_form10(xmean)) ~ ", " ~ sigma ~ " =" ~ .(sci_form10(xsigma)) ~ ")" ))
给予:
附言我也试过了
sci_form10 <- function(x) {
paste(gsub(".*e\\+", "10^", scientific_format()(x)))
}
它只给出 10^03 部分,看看这是否会改变我标签的结果,但不会。
【问题讨论】:
-
抱歉,这里有错字。应该是一个。而不是 , 并且方程的名称应该是相同的。现在进行更正。
-
我测试了你的代码。但是,它给出了一个错误
Error in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, : invalid multibyte string at '<fc><be><8d><b6><88><bc> 10^02' -
嗯,我刚刚在重新启动 R 后测试了更新的代码块,但没有收到相同的错误(除了问题中的包外,没有加载任何其他包),但有时 \xB7 浮点似乎给问题。您可以尝试从函数 sci_form10() 中删除它
-
虽然无法测试,但可以选择
bquote(atop( -
我删除了问题代码 Akrun 中的问题符号。也许现在可以了。
标签: r ggplot2 scientific-notation