2017-03-29 10 views
1

私は、このデータフレームを持っている:ggplot2のスタックバーの順序を逆にする方法は?

df <- structure(list(variable = c("var1", "var1", "var1", "var1", "var2", 
          "var2", "var2", "var2", "var3", "var3", "var3", "var3", "var1", 
          "var1", "var1", "var1", "var2", "var2", "var2", "var2", "var3", 
          "var3", "var3"), percentage = c(12.565445026178, 18.848167539267, 
                  42.4083769633508, 26.1780104712042, 3.57142857142857, 11.2244897959184, 
                  45.9183673469388, 39.2857142857143, 4.59183673469388, 10.2040816326531, 
                  57.1428571428571, 28.0612244897959, 3.03030303030303, 12.1212121212121, 
                  39.3939393939394, 45.4545454545455, 2.94117647058824, 5.88235294117647, 
                  38.2352941176471, 52.9411764705882, 17.6470588235294, 29.4117647058824, 
                  52.9411764705882), score = structure(c(1L, 2L, 3L, 4L, 1L, 2L, 
                            3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 2L, 3L, 
                            4L), .Label = c("1", "2", "3", "4"), class = "factor"), group = c("group1", 
                                            "group1", "group1", "group1", "group1", "group1", "group1", "group1", 
                                            "group1", "group1", "group1", "group1", "group2", "group2", "group2", 
                                            "group2", "group2", "group2", "group2", "group2", "group2", "group2", 
                                            "group2"), label = c(6.282722513089, 21.9895287958115, 52.6178010471204, 
                                                  86.9109947643979, 1.78571428571429, 9.18367346938776, 37.7551020408163, 
                                                  80.3571428571429, 2.29591836734694, 9.69387755102041, 43.3673469387755, 
                                                  85.969387755102, 1.51515151515152, 9.09090909090909, 34.8484848484848, 
                                                  77.2727272727273, 1.47058823529412, 5.88235294117647, 27.9411764705882, 
                                                  73.5294117647059, 8.82352941176471, 32.3529411764706, 73.5294117647059 
                                            ), percentage2 = c("13%", "19%", "42%", "26%", "4%", "11%", "46%", 
                                                 "39%", "5%", "10%", "57%", "28%", "3%", "12%", "39%", "45%", 
                                                 "3%", "6%", "38%", "53%", "18%", "29%", "53%")), .Names = c("variable", 
                                                                "percentage", "score", "group", "label", "percentage2"), row.names = c(NA, 
                                                                                  -23L), class = "data.frame") 

は今、私はこのコードで多面的な積み上げ棒グラフを作成してみてください:

ggplot(df, aes(x = variable, y = percentage, fill = score)) + 
    geom_bar(stat = 'identity')+ 
    geom_text(aes(y=label,label=percentage2), color='grey25', size=2) +  
    facet_wrap(~ group,ncol=2)+ 
    coord_flip() 

あなたが見ることができるように、ラベルがで正しい場所にありませんバー。私はバーの逆順が必要です。私はそれが1 hereのように、ビット重複質問のように聞こえるけど、私は解決策は、私はこのエラーを取得することを試みるとき:

警告:不明な美学を無視:順序

誰が解決する方法を知っていますこの問題?作るために

+3

'geom_col(位置= position_stack(逆= TRUE))'? – Axeman

+0

ありがとう、それは働いた! (と私の謝罪、私は完全にその重複を逃した) – rdatasculptor

+0

心配はありません、それらの束がありますが、ほとんどが時代遅れであるか、または貧しい答えがあります。 – Axeman

答えて

0

いくつかのポイント:

  1. geom_bar(stat = 'identity')は、今あなたがposition_stack(vjust = 0.5)

コードでposition引数を使用し

  • y美学を変更しないでくださいgeom_col()
  • によって置き換えられます
    library(ggplot2) 
    ggplot(df, aes(x = variable, y = percentage, fill = score)) + 
        geom_col(position = 'stack')+ 
        geom_text(aes(label = percentage2), 
           position = position_stack(vjust = .5), 
           color='grey25', 
           size=2) +  
        facet_wrap(~ group,ncol=2) + 
        coord_flip() 
    

  • 関連する問題