2016-08-08 59 views
8

樣本數據幀:是否可以僅重新排列facet_wrap的方面,而不重新排序基礎因子水平?

df <- data.frame(x=rep(1:10,4),y=rnorm(40),Case=rep(c("B","L","BC","R"),each=10)) 

我可以繪製每個時間序列在自己的刻面:

ggplot(df,aes(x=x,y=y,color=Case)) + geom_line()+facet_wrap(~Case,nr=2,nc=2) 

enter image description here 現在,假設我要到小順序更改爲(從頂起左邊並沿着行向右下方)「L」,「B」,「R」,「BC」。這裏通常的建議是做this。但是,如果我重新排列因子Case的等級,曲線的顏色也會改變。是否可以對曲面重新排序,而不改變曲線顏色的順序?我知道這聽起來像一個奇怪的問題。問題是,我的報告是一項正在進行的工作,並在舊版本的報告,我已經拿給同事&管理,有多個地塊或多或少像這樣(沒有facet_wrap):

ggplot(df,aes(x=x,y=y,color=Case)) + geom_line() 

enter image description here

換句話說,現在人們習慣於將「B」與紅色相關聯。如果我重新訂購,「L」將變成紅色,「B」變成綠色,等等。我已經可以聽到這些抱怨......從這個問題中找出任何方法?

回答

4

只需將數據複製到您想要訂購的新列。使用新列進行刻面,舊列用於顏色。

df$facet = factor(df$Case, levels = c("L", "B", "R", "BC")) 

ggplot(df, aes(x = x, y = y, color = Case)) + 
    geom_line() + 
    facet_wrap(~facet, nr = 2) 
+0

太棒了!在我的真實情況下,我將Case不僅映射到了「顏色」aestethic,而且也映射到了「線型」之一。因此,其他解決方案也會迫使mr手動設置'linetype'的比例。您的解決方案更簡單。謝謝! – DeltaIV