2013-07-27 10 views
5

ggplotのバープロットからゼロの値を除外することができるかどうかは誰にも分かりますか?ggplot barplotからゼロ値を除外しますか?

私は次のように比率を含むデータセットを持っている:

X5employf  prop X5employff 
1 increase 0.02272727   
2 increase 0.59090909   1 
3 increase 0.02272727 1 and 8 
4 increase 0.02272727   2 
5 increase 0.34090909   3 
6 increase 0.00000000   4 
7 increase 0.00000000   5 
8 increase 0.00000000   6 
9 increase 0.00000000 6 and 7 
10 increase 0.00000000 6 and 7 
11 increase 0.00000000   7 
12 increase 0.00000000   8 
13 decrease 0.00000000   
14 decrease 0.00000000   1 
15 decrease 0.00000000 1 and 8 
16 decrease 0.00000000   2 
17 decrease 0.00000000   3 
18 decrease 0.10000000   4 
19 decrease 0.50000000   5 
20 decrease 0.20000000   6 
21 decrease 0.00000000 6 and 7 
22 decrease 0.00000000 6 and 7 
23 decrease 0.10000000   7 
24 decrease 0.10000000   8 
25  same 0.00000000   
26  same 0.00000000   1 
27  same 0.00000000 1 and 8 
28  same 0.00000000   2 
29  same 0.00000000   3 
30  same 0.21052632   4 
31  same 0.31578947   5 
32  same 0.26315789   6 
33  same 0.15789474 6 and 7 
34  same 0.00000000 6 and 7 
35  same 0.05263158   7 
36  same 0.00000000   8 

あなたは「小道具」欄に見ることができるようにゼロ値が多いです。私はファセットとして 'X5employf'カラムを持つファセット付き棒グラフを作成しています。しかしゼロの値のために、私は私のプロット上に多くの空きスペースで終わります(下記参照)。 ggplotにゼロ値をプロットしないように強制する方法はありますか? NA値ではなく0であるため、使用されていない要素を削除するのではありません。何か案は??!

example plot

答えて

1

私はggplotで無視値を設定する方法があるかどうかわかりませんよ。しかし、あなたは単にNAに0を再コーディング考えることができます:

df[df$prop == 0] <- NA 
4

をあなたのプロットについては、単にあなたが唯一の非ゼロの割合を含むデータフレームのサブセットを使用することを指定しwhichを使用しています。この方法で元のデータフレームを変更する必要はありません。次に、scales引数に "free_x"をfacet_gridで指定すると、ファセットプロットの空き領域がなくなります。私はExcelからRへの迅速な輸入のために「空白」で空白のフィールドを置き換え

plot <- ggplot(df[which(df$prop>0),], aes(X5employff, prop)) + 
    geom_bar(aes(fill=X5employff, stat="identity")) + 
    facet_grid(~ X5employf, scales="free_x") + 
    theme_bw() 
plot 

enter image description here

注意。

+0

また、[この類似の質問に対する回答](http://stackoverflow.com/questions/17888456/why-this-facet-grid-doesnt-delete-columns)では、これを行う方法が少し異なります。 'gesplot()'の中の 'aes'引数の中に' drop = TRUE'を追加します。 –

+1

ありがとうございました。私はRの構文の周りに私の頭を得ようとしている! ggplotが最初に私の割合を計算するかどうか分かりますか?以前はデータをプロットする前にddplyを使ってデータを集計しなければなりませんでしたか? –

+0

オリジナルのデータフレームがどのようなものか見ておく必要がありますが、通常は 'aes()'の中の割合を計算します。だから、 'ggplot(data、aes(x、y = [value/sum(values)]))'のようなものです。とにかく、これはあなたが[ここ](http://stackoverflow.com/questions/18057081/ddply-summarise-proportional-count)を求めているのですか? –

関連する問題