【问题标题】:How to properly use an expression in a scale function in ggplot2?如何在 ggplot2 的比例函数中正确使用表达式?
【发布时间】:2017-12-11 15:10:48
【问题描述】:

我正在用 ggplot2 绘制一些结果。数据以如下结构的数据框组织:

   category  comparison    value
1  A         deltaXT/FT    6807
2  B         deltaXT/FT    11894
3  C         deltaXT/FT    1215
4  D         deltaXT/FT    42862
5  E         deltaXT/FT    34313
...

共有 4 个比较,每个都细分为 A-E 类,在同一个数据框中(图看起来像 this)。 我的目标是将“deltaXT/FT”替换为“ΔXT/FT”,使用希腊符号表示 Delta。

在图中,我使用“比较”列来定义条形的颜色,如下所示:

ggplot(data=vars, aes(x=category, y=value, fill=comparison)) + 
...
scale_fill_manual(values=c("deltaXT/FT"="#6FA9BC"), ...)

基本上,当我在scale_fill_manual 和原始数据框中使用“deltaXT/FT”时,一切正常。如果我尝试使用 expression(Delta * "XT/FT")="#6FA9BC", ...) 我会收到此错误:

Error: unexpected '=' in:
...
scale_fill_manual(values=c(expression(Delta * "XT/FT"))="

问题似乎与scale_fill_manual() 有关:expression() 不能用作其中的键。我在 StackOverflow 中阅读了其他线程,建议人们使用 bquote(expression()=value),但使用它时错误没有改变。

关于如何解决这个问题并在图例中有一个漂亮的 ΔXT/FT 名称有什么建议吗?

编辑:将 Δ 字符复制粘贴到需要工作的 Rscript 中,但我更感兴趣的是 expression() 在一般情况下是否可以用作键。

【问题讨论】:

    标签: r ggplot2 expression scale symbols


    【解决方案1】:

    您可以只更改与每个 comparison 关联的标签,而不是映射它的值。

    ... +
    scale_color_manual(values = c("deltaXT/FT" = "#6FA9BC"), 
                       labels = c("deltaXT/FT" = expression(Delta * "XT/FT")))
    

    或者,在一个完整的情节中:

    library(ggplot2)
    ggplot(data=df, aes(x=category, y=value, color=comparison)) + 
      geom_point(size = 5) +
      scale_color_manual(values=c("deltaXT/FT"="#6FA9BC"), 
                         labels = expression(Delta * "XT/FT"))
    

    数据:

    df <- read.table(text = ' category  comparison    value
    1  A         deltaXT/FT    6807
                     2  B         deltaXT/FT    11894
                     3  C         deltaXT/FT    1215
                     4  D         deltaXT/FT    42862
                     5  E         deltaXT/FT    34313', header = TRUE)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-22
      • 2021-08-09
      • 2014-03-13
      • 2017-09-05
      • 2017-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多