28

対応する値ラベルをgeom_col積み上げ棒グラフの各棒セグメントの中央に配置したいと思います。

しかし、私の素朴な試みは失敗します。

library(ggplot2) # Version: ggplot2 2.2

dta <- data.frame(group  = c("A","A","A",
                             "B","B","B"),
                  sector = c("x","y","z",
                             "x","y","z"),
                  value  = c(10,20,70,
                             30,20,50))

ggplot(data = dta) +
  geom_col(aes(x = group, y = value, fill = sector)) +
  geom_text(position="stack",
            aes(x = group, y = value, label = value)) 

明らかに、設定y=value/2geom_text役に立ちません。また、テキストが間違った順序で配置されています (反転)。

これを解決する(エレガントな)アイデアはありますか?

4

1 に答える 1

65

でグループを表すには、変数を美学にマップする必要がありますgeom_text。あなたにとって、これは「セクター」変数です。groupの美学とともに使用できますgeom_text

次にposition_stackwithを使用しvjustて、ラベルを中央に配置します。

ggplot(data = dta) +
    geom_col(aes(x = group, y = value, fill = sector)) +
    geom_text(aes(x = group, y = value, label = value, group = sector),
                  position = position_stack(vjust = .5))

美学をグローバルに設定することで、タイピングを節約できます。次にfill、のグループ化変数として使用され、geom_textスキップできますgroup

ggplot(data = dta, aes(x = group, y = value, fill = sector)) +
    geom_col() +
    geom_text(aes(label = value),
              position = position_stack(vjust = .5))

ここに画像の説明を入力

于 2016-11-21T16:00:55.417 に答える