R ggplot2使用bquote和atop制作多行标签时字符串替换异常问题
问题根源
bquote() 对变量求值替换的规则是仅处理被 .() 包裹的内容,你代码中直接传入 firstLine 会被识别为表达式的固定符号,不会读取变量对应的实际字符串值,因此会直接显示变量名。
修正代码
只需要把 atop() 内的 firstLine 用 .() 包裹即可:
testIt <- function(){ library(ggplot2) aPP <- 100.1 firstLine <- paste("Areal Production = ",aPP,sep="") pbase <- ggplot(mtcars, aes(x=wt, y=mpg)) p <- pbase + geom_point() + labs(x=bquote(atop(.(firstLine), ~(mgC/m^2/day))), y="Foo") print(p) }
简化写法
你也可以省去提前拼接第一行字符串的步骤,直接在表达式内部插入变量值,写法更简洁:
testIt <- function(){ library(ggplot2) aPP <- 100.1 pbase <- ggplot(mtcars, aes(x=wt, y=mpg)) p <- pbase + geom_point() + labs(x=bquote(atop(Areal~Production == .(aPP), ~(mgC/m^2/day))), y="Foo") print(p) }
内容的提问来源于stack exchange,提问作者Fleetboat
相关产品推荐
相关产品推荐

