2011-02-13 105 views
4

我有兩個面積圖(稱之爲'藍色'和'綠色'),其中​​大部分在blue圖下,但在極少數點上,它高於blue圖。我想爲兩者使用透明度說alpha = 0.2,也能夠指定每個的顏色。我現在的問題是,由於​​情節大多在blue情節下,其面積主要有混合顏色blue​​=其他一些顏色,並在只有少數地方顯示其「真實」的綠色。然而圖例當然顯示映射到藍色的blue圖和映射到綠色的​​圖。問題是,當有人看圖時,他們會感到困惑,因爲​​圖大多看起來不是綠色的(因爲它大部分時間都與藍色重疊)。R/ggplot2:如何在重疊區域圖中匹配圖例和繪圖顏色?

這是我的代碼(我的真實應用程序的超級簡化版本)。

df <- data.frame(date = 1:5, blue = 10, green = c(1,5,11,5,1)) 
df.m <- melt(df, id = 'date', variable_name = 'type') 
df.m$type <- ordered(df.m$type, c('green', 'blue')) 

ggplot(df.m, aes(date,value)) + 
    geom_area(aes(fill = type), position = 'identity', alpha = 0.2) + 
    scale_fill_manual (values = c('green', 'blue')) 

enter image description here

正如你所看到的,綠色的情節「真正的綠色」面積很小,所以對於​​傳奇色彩並沒有真正符合廣大​​情節。這當然是正確的設計行爲,但我想知道是否有某種方式可以獲得​​的圖例顏色以及搭配顏色的重疊blue+green。我嘗試過的一件事是將blue變量變換爲blue - green,然後將區域圖堆棧爲(與position = "stack")。這幾乎可以工作,但不太令人滿意,因爲新的blue變量爲負數的日期顏色看起來很奇怪。

有沒有其他方法可以讓​​的圖例顏色與「重疊的藍色/綠色」區域的顏色相匹配?也許一種直接指定圖例顏色的方法?任何幫助感謝!

+0

你不試着選擇其他顏色嗎? `%)` – ulidtko 2011-02-13 01:07:53

回答

2

我不認爲在ggplot2中通過簡單的調用就可以在圖例中定義自定義顏色,但是如果您堅持指定顏色,則可以通過opts(legend.position = "none")繪製沒有圖例的繪圖並附加一個單獨的圖例。 。使用網格視口。包gridExtra也可能是後一項任務的一個很好的資源。

+0

謝謝@daroczig。我可以關閉圖例並使用文本註釋指向每個區域。 – 2011-02-13 20:50:36