2016-10-26 8 views
2

ドッジド棒グラフを使用する場合、どの要素が他の要素の前にプロットされるかを制御する方法はありますか?この例ではposition_dodgeの制御階層

ggplot(mtcars, aes(x=factor(cyl), fill=factor(vs))) + 
    geom_bar(position= position_dodge (width = - 0.5)) 

enter image description here

青いバーは赤いものの前にプロットされています。アルファ値をハッキングしないで注文を元に戻すことができますか?

+0

ファクタの順序を逆にすることもできますが、それによって左右どちらの方向も変わると思います。 – Axeman

+1

ええと、私は実際にはdevのバージョンで別の方法でそれらを取得します。 – Axeman

+0

プロットコマンドのinstedデータを変更することは、私がハッキングと考えていることです;)私はそれを避けたいと思っています... – mhwh

答えて

2

あなたのコントロールは制限されています。因子レベルを使用して、i)fillの発注と、groupを使用するposition_dodgeの発注を制御することができます。ここで

は、4つのオプションがあります:

p1 <- ggplot(mtcars, aes(x = factor(cyl), fill = factor(vs, 0:1), group = factor(vs, 0:1))) + 
    geom_bar(position = position_dodge(width = - 0.5)) 

p2 <- ggplot(mtcars, aes(x = factor(cyl), fill = factor(vs, 0:1), group = factor(vs, 1:0))) + 
    geom_bar(position = position_dodge(width = - 0.5)) 

p3 <- ggplot(mtcars, aes(x = factor(cyl), fill = factor(vs, 1:0), group = factor(vs, 0:1))) + 
    geom_bar(position = position_dodge(width = - 0.5)) 

p4 <- ggplot(mtcars, aes(x = factor(cyl), fill = factor(vs, 1:0), group = factor(vs, 1:0))) + 
    geom_bar(position = position_dodge(width = - 0.5)) 

library(cowplot) 
plot_grid(p1, p2, p3, p4, align = 'hv') 

enter image description here

だからのみ覆い焼き順序が重要であると思われます。 devのバージョンでは、右のバーは常に左のバーの前にプロットされています。