2015-11-02 56 views
1

我有一個折線圖,我想重新排列圖例中顯示的因子的排列方式。我試過scale_fill_discrete,但它不會改變順序。 這裏是我的問題的一個模擬:ggplot2:圖例中的更改因子順序

df <- data.frame(var1=c("F", "F", "F", "B", "B", "B"), 
       var2=c("levelB", "levelC", "levelA"), 
       value=c("2.487585", "2.535944", "3.444764", "2.917308", "2.954155","3.739049")) 

p <- ggplot(data=df, aes(x=var1, y=value, 
    group=var2, colour=var2, shape = var2)) + 
    geom_line(size = 0.8) + 
    geom_point()+ 
    xlab("var1") + ylab("Value") + 
    scale_x_discrete(limits=c("F","B")) + 
    theme(legend.title = element_text(size=12)) + 
    theme(legend.text = element_text(size=10)) + 
    scale_fill_discrete(breaks=c("levelB","levelC","levelA")) + 
    theme(title = element_text(size=12)) + 
    blank + scale_color_manual(values=c("green2", "red", "black")) + 
    theme(legend.key = element_blank()) 
p 

它創建這樣的:

enter image description here

我想一切都保持完全一致,除了傳奇,在這裏我想改變順序爲levelB,然後levelC,然後levelA。 我猜ggplot2按字母順序排列圖例,我想重寫這個。 重新排序我的數據框不起作用,scale_fill_discrete也不會改變它。 任何想法?

謝謝!

+1

[控制ggplot2圖例顯示順序]可能的副本(http://stackoverflow.com/questions/11393123/controlling-ggplot2-legend-display-order) – jeremycg

+2

不是重複的,因爲該問題涉及多個圖例的排序,而不是在圖例內部排序。 – kneijenhuijs

回答

4

通過對您的因子重新排序,您可以更改圖例標籤的順序。兼營:

df$var2 <- factor(df$var2, levels=c("levelB", "levelC", "levelA")) 

然後重新運行ggplot代碼,水平b現在應該在傳說和綠色,levelC第二和紅色的頂部,levelA第三和黑色。

+1

謝謝,是的,工作。它只是另外需要重新排列顏色,如下所示: scale_color_manual(values = c(「black」,「red」,「green2」))+ –

+0

噢,我錯過了你想讓所有其他東西保持不變顏色)!是的,那需要重新排序顏色。 – kneijenhuijs

相關問題