如何在 ggplot2 的比例函数中正确使用表达式?
How to properly use an expression in a scale function in ggplot2?
我正在用 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。
在图中,我使用 "comparison" 列来定义条形的颜色,如下所示:
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()
不能用作其中的键。我在 Whosebug 中阅读了其他主题,建议人们使用 bquote(expression()=value)
但在使用时错误没有改变。
关于如何解决这个问题并在图例中有一个漂亮的 ΔXT/FT 名称有什么建议吗?
编辑:将 Δ 字符复制粘贴到需要的 Rscript 中,但我更感兴趣的是 expression()
是否可以在这种情况下用作一般情况下的键。
您可以只更改与每个 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)
我正在用 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。
在图中,我使用 "comparison" 列来定义条形的颜色,如下所示:
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()
不能用作其中的键。我在 Whosebug 中阅读了其他主题,建议人们使用 bquote(expression()=value)
但在使用时错误没有改变。
关于如何解决这个问题并在图例中有一个漂亮的 ΔXT/FT 名称有什么建议吗?
编辑:将 Δ 字符复制粘贴到需要的 Rscript 中,但我更感兴趣的是 expression()
是否可以在这种情况下用作一般情况下的键。
您可以只更改与每个 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)