2017-07-07 102 views
0

我正在用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()在一般情况下是否可以用作关键字。

回答

0

您可以更改与每个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) 
相关问题