2017-03-29 27 views
3

棒グラフを作成しようとしています。これを達成するために、変数chooseに応じて色を設定します。それが本当であれば、境界は黒く、そうでなければ透明です。棒グラフの枠線が棒で上書きされています

問題:最初のバーにボーダーがある場合、ボーダーの右端が2番目のバーで上書きされます。ここで

は私のコードと問題の画像です:

#Sample Data 
    Var1 <- rep(c("A1","A2"),4) 
    Var2 <- c("Q1","Q1","Q2","Q2","Q3","Q3","Q4","Q4") 
    Freq <- c(4,2,6,2,6,4,9,3) 
    choose <- c(F,F,T,F,F,T,F,T) 

    df <- as.data.frame(cbind(Var1,Var2, Freq,choose)) 


    g<- ggplot(df, aes(x=factor(Var2), y=Freq))+ 
     geom_bar(stat="identity", aes(fill = Var1, color = choose), size = 3) + 
     scale_color_manual(values = c('FALSE' = 'transparent', 'TRUE' = 'black'))+ 
     coord_flip() 

    g 

Problem

私は、これはボーダーを描画し、塗りつぶし= NAとバー後にボーダーを描画することによって、それを修正しようとしましたバーの上にあるが、正しい位置にはない。

g<- ggplot(df, aes(x=factor(Var2), y=Freq))+ 
     scale_color_manual(values = c('FALSE' = 'transparent', 'TRUE' = 'black'))+ 
     geom_bar(stat="identity", aes(fill = Var1))+ 
     geom_bar(stat="identity", aes(color = choose), fill = NA, size = 3)+ 
     coord_flip() 

    g 

Problem fix

任意のアイデアはどのようにこの問題を解決するには?

+0

2番目の 'geom_bar'に' group = Var1'を追加すると、正しくスタックされます。 – aosmith

+0

これは問題を解決します。どうもありがとうございました!あなたは答えを書くことができますか?それから、問題を解決済みとしてマークします。 – Martin

答えて

2

地図Var1からgroupあなたのセカンドに積み重ねられた物を得るためには、geom_bar

ggplot(df, aes(x=factor(Var2), y=Freq))+ 
    scale_color_manual(values = c('FALSE' = 'transparent', 'TRUE' = 'black'))+ 
    geom_bar(stat="identity", aes(fill = Var1))+ 
    geom_bar(stat="identity", aes(color = choose, group = Var1), fill = NA, size = 3)+ 
    coord_flip() 
関連する問題