如何将上标附加到变量以在ggplot轴中显示?

时间:2017-10-19 11:43:57

标签: r ggplot2

这是与此How to use superscript with ggplot2

类似的问题

但是我没有标签的硬编码值,而是在变量中有一个字符串,我需要将“mm ^ 3”附加到字符串并在ggplot中显示。

我有这样的代码:

genericPlot <- genericPlot + labs(y = wrap(ylab, wrap.length))

#' Wrap
#' 
#' @param x character, values to be wrapped
#' @param width numeric, max number of characters
#' 
#' @return Wrapped x
wrap <- function(x, width) {
  sapply(
    X = x, 
    FUN = function(x) paste(strwrap(x, width = width), collapse = "\n"))
}

我试过用这个:

paste(ylab, bquote(~mm^3))

但是这给了我带有2个元素的向量:

[1] "foo ~"    "foo mm^3"

2 个答案:

答案 0 :(得分:5)

你非常接近!而不是paste使用bquote.(VAR)调用您的变量。

library(ggplot2)
ylab <- "foo"
myX  <- "bar" 
ggplot() + 
    ylab(bquote(.(ylab) *" ~ "* mm^3)) +
    xlab(bquote(.(myX) *" ~ "* kg^2))

enter image description here

答案 1 :(得分:1)

我无法用短暂的时间跟踪您的情况,但我使用了以下代码一次来生成下面的输出

scale_y_continuous(trans="log10", breaks=ybreaks, name= expression(Discharge~~ or ~~ flow ~~ group("[",m^3/s, "]")))

enter image description here