2016-11-23 19 views
1

私が直面している問題は非常に簡単です。ggplot2、geom_textとorder

3種類のデータを棒グラフでY軸にプロットし、データフレームの別の列を使用して各グループに色付けしています。

グラフは次のようになります。

graph

ggplot(cleaned_data, aes(x = Engine, fill = Errorcat)) + 
    geom_bar(aes(y = (..count..)/sum(..count..))) + 
    scale_y_continuous(labels = percent) + 
    scale_fill_discrete("Events", breaks = c("Ok", "Waiting", "Error")) + 
    labs(y = "") 

データは次のように織り込まれていて、生成: cleaned_data $ Errorcat < - 因子($ Errorcat cleaned_data、レベル= c( "Error"、 "Ok"、 "Waiting"))

私は、各ビンの真ん中にパーセンテージがあります。だから私は後ろに行き、ちょうどこのように、geom_text呼び出しを追加:Y座標が正しいではありません

Graph 2

数字は、唯一の彼らのrespectives正しいです:

ggplot(cleaned_data, aes(x = Engine, fill = Errorcat)) + 
    geom_bar(aes(y = (..count..)/sum(..count..))) + 
    geom_text(aes(y = ((..count..)/sum(..count..)) - 0.5* (((..count..)/sum(..count..))) , 
       label = scales::percent((..count..)/sum(..count..))), stat = "count", vjust = -0.25, check_overlap = TRUE) + 
    scale_y_continuous(labels = percent) + 
    scale_fill_discrete("Events", breaks = c("Ok", "Waiting", "Error")) + 
    labs(y = "") 

それは、この生成します注文。ご覧のように、45%は「トップ」の数字ですが、グリーンではなく青色に対応する必要があります。下から上に向かって、私はgeom_textが赤/青/緑を表示していると思いますが、赤/緑/青の棒のようにしたいのです。

私はそれをどのように行うことができないのか、なぜすぐにそれをやっていないのか理解できないようです。最終目標は、Errorcatに特定の色を割り当てることです。私は、緑色になるのを待って、青色になるのを待って、赤色になるためには、エラーを欲しい。そして伝説私は上に次にエラーを待って欲しい。

誰かが私が逃していることを説明するのに十分親切であれば...ありがとう!

ggplot(cleaned_data, aes(x = Engine, fill = Errorcat)) + 
    geom_bar(aes(y = (..count..)/sum(..count..))) + 
    geom_text(aes(y = (..count..)/sum(..count..), label = scales::percent((..count..)/sum(..count..))), 
      stat = "count", check_overlap = FALSE, position = position_stack(vjust = 0.5)) + 
    scale_y_continuous(labels = percent) + 
    scale_fill_discrete("Events", breaks = c("Ok", "Waiting", "Error")) + 
    labs(y = "") 

みんなありがとう:上記のコメントの

+0

「イベント」の要素の基本的な順序は、「ブレーク」に指定した順序とは異なります。 –

+0

実際には違っています。 'cleaned_data $ Errorcat < - factor(cleaned_data $ Errorcat、levels = c(" Error "、" Ok "、" Waiting "))' 私は特にOkが緑色で、青色でエラーが赤色で、凡例はつまり、まず最初にOKを待ってからエラーを待つ。 – homer3018

+1

ggplot2 2.2.0では、 'geom_text(aes(y =(..count ..)/ sum(.. count ..)、label = scales :: percent(.. .. count ..)のようなものが必要です。 – aosmith

答えて

0

まとめ、次のコードは、各ビンの中央に適切な場所にあるすべてのラベルを、生産しています。

関連する問題