2017-02-07 16 views
2

私は、2つの列の間の各文字グレードの数を比較する並列バープロットを表示しようとしています。 (A互いの隣に、Bさんなど、互いの隣)side-by-side barplot with ggplot

> dat = data.frame(grade1 = c('A','A','A','B','B','C'), grade2 = c('A','B','C','C','D','D')) 
> dat 
    grade1 grade2 
1  A  A 
2  A  B 
3  A  C 
4  B  C 
5  B  D 
6  C  D 
> ggplot(dat, aes(x=grade1, fill=grade2)) + 
    geom_bar(position=position_dodge()) 

私は、x軸上の4つのラベル(A、B、Cとこのようになります結果を取得しようとしていますD)。私が使用すべき特定のdplyr関数はありますか?

https://i0.wp.com/martinsbioblogg.files.wordpress.com/2014/03/means-barplot.png

+0

あなたの質問が明確ではありません。説明してください – Koundy

+0

@koundy https://i0.wp.com/martinsbioblogg.files.wordpress.com/2014/03/means-barplot.png –

答えて

4

あなたはきちんと形式のデータフレームを変換する必要があります。そのためには tidyrパッケージ機能gatherを使用することができます。注文した係数を使用して文字のグレードの正しいソートを確実にするために適切である:

library(tidyr) 
library(ggplot2) 

dat <- data.frame(grade1 = c('A','A','A','B','B','C'), grade2 = c('A','B','C','C','D','D')) 

tidy_dat <- gather(dat) 
tidy_dat[,2] <- ordered(tidy_dat[,2], levels = c('A','B','C','D')) 

ggplot(tidy_dat, aes(x= value, fill = key))+ 
    geom_bar(position = 'dodge') 

enter image description here

+0

これは分かりましたが、これはさらに優れています。あなたの親切な先生に感謝! –