如何正确使用ggplot2中的缩放函数中的表达式?
问题描述:
我正在用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)。 我的目标是用“ΔXT/ FT”替代“deltaXT/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()
在一般情况下是否可以用作关键字。
答
您可以更改与每个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)