2017-01-17 76 views
0

我有一個ggplot酒吧陰謀與分組酒吧。每個x值有4個小節,並且條形填充,顏色和alpha由數據中的變量確定。我希望我的傳奇能夠精確地反映情節中酒吧的外觀。不幸的是,我沒有足夠的聲譽後我的陰謀的照片,但這裏是我的代碼:如何使ggplot圖例完全反映酒吧的外觀

ggplot(all_frame_freq, aes(x = Frame, y = prop_type, group = interaction(speaker,Type), fill = Type, color = Type, alpha = speaker)) + 
    geom_bar(position = "dodge", stat="identity") + 
    scale_fill_manual(values = c("#E41A1C","#377EB8"), name="Type", labels=c("A","B")) + 
    scale_color_manual(values = c("#E41A1C","#377EB8"), guide=FALSE) + 
    scale_alpha_manual(values = c(.2, 1), name="speaker", labels=c("1", "2")) 

這就造成周圍所有的酒吧一條線,但該行僅顯示周圍的酒吧,在那裏阿爾法是< 1.因此,該圖顯示爲帶有輪廓的黑色條和沒有輪廓的黑色條。 (我發現這比簡單的明暗條更容易看)。我希望圖例能夠反映出這一點,以便揚聲器1的圖例框出現時帶有相應條形的輪廓。但是,目前揚聲器圖例只顯示1灰色的淺灰色框和2灰色的深灰色框,我無法弄清楚如何僅在淺灰色框中添加一條線。有沒有辦法做到這一點?我得到的最接近的是

theme(legend.key = element_rect(color = 'black', size = 0.5)) 

但是,它在所有圖例框中添加了一行。有沒有辦法將它添加到alpha圖例中的一個框中,或者(可能更簡單)添加到alpha圖例中,在那裏我可以設置線條顏色以匹配較暗的框?我一直在嘗試各種方法,並在相當長的一段時間內尋找想法,但還沒有找到合適的解決方案。

我的數據的樣品 - 正確格式化此時間:

structure(list(Type = structure(c(1L, 1L, 2L, 2L, 1L, 1L, 2L, 
2L), .Label = c("A", "B"), class = "factor"), Frame = structure(c(1L, 
2L, 1L, 2L, 1L, 2L, 1L, 2L), .Label = c("V CP", "V NP"), class = "factor"), 
prop_type = c(0.209513024, 0.138731597, 0.017167382, 0.387528402, 
0.437998087, 0.144086707, 0.042695836, 0.398376853), speaker = structure(c(1L, 
1L, 2L, 2L, 1L, 1L, 2L, 2L), .Label = c("Speaker1", "Speaker2" 
), class = "factor")), .Names = c("Type", "Frame", "prop_type", 
"speaker"), class = "data.frame", row.names = c(NA, -8L)) 
+2

你知道,我們沒有你的數據all_frame_freq,所以我們無法重新創建你的圖片。請輸入'dput(all_frame_freq)'並將輸出粘貼到您的問題中,向我們顯示數據。 – G5W

+0

我的不好 - 剛剛添加。 – Ed2122

+0

請提供一個可重現的例子,「添加的數據」是不可重現的。有關幫助,請參閱[這裏](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)。 –

回答

1

[C] urrently揚聲器圖例只是示出了用於圖1和2暗 灰色框爲淺灰色框,我不能瞭解如何僅在 淺灰色框中添加一條線。

你可以做

ggplot(all_frame_freq, aes(x = Frame, y = prop_type, group = interaction(speaker,Type), fill = Type, color = Type, alpha = speaker)) + 
    geom_bar(position = "dodge", stat="identity") + 
    scale_fill_manual(values = c("#E41A1C","#377EB8"), name="Type", labels=c("A","B")) + 
    scale_color_manual(values = c("#E41A1C","#377EB8"), guide=FALSE) + 
    scale_alpha_manual(values = c(.2, 1), name="speaker", labels=c("1", "2")) + 
    guides(alpha = guide_legend(override.aes = list(color = c("red", NA)))) 

enter image description here

+0

如果我將顏色設置爲黑色而不是紅色,這與我需要的完全相同。 (另外,我的情節沒有堆積酒吧,但那並不重要。)我在某些時候嘗試了override.aes,但無法弄清楚正確的語法。謝謝! – Ed2122