2016-08-08 6 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」)のいずれかを選択することができます。 SOの通常の提案は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だけでなく 'linetype 'にマッピングしました。したがって、他の解決法では、mrが 'linetype'のためにスケールを手動で設定することも強制されていました。あなたのソリューションは簡単です。ありがとう! – DeltaIV

関連する問題