2017-07-07 100 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) 
相關問題