ファセットパイチャーにデータラベルを追加したい。
誰かが助けてくれるかもしれません。
私のデータ:
year <- c(1,2,1,2,1,2)
prod <- c(1,1,2,2,3,3)
quantity <- c(33,50,33,25,34,25)
df <- data.frame(year, prod, quantity)
rm(year, prod, quantity)
コード:
library(ggplot2)
# center's calculated by hand
centr2 <- c(16, 25, 49, 62.5, 81, 87.5)
ggplot(data=df, aes(x=factor(1), y=quantity, fill=factor(prod))) +
geom_bar(stat="identity") +
geom_text(aes(x= factor(1), y=centr2, label = df$quantity), size=10) +
facet_grid(facets = .~year, labeller = label_value) +
coord_polar(theta = "y")
そして私の結果は:
Coord_polar(theta = "y")を削除すると、次のプロットが得られます。
これで、データラベルが一致しなかった理由が明らかになりました。
しかし、私はそれを修正する方法がわかりません。
私は読む:
1。 円グラフにラベルを付ける
2。 ファセット密度でggplotにテキストを追加
3。 パイプロットが互いの上にテキストを取得する
しかし、答えが見つかりませんでした。
テキストラベルの位置を計算するpos
で別の変数(df
と呼びます)を定義することで、これにアプローチします。 dplyr
でこれを行いますが、もちろん他の方法を使用することもできます。
library(dplyr)
library(ggplot2)
df <- df %>% group_by(year) %>% mutate(pos = cumsum(quantity)- quantity/2)
ggplot(data=df, aes(x=factor(1), y=quantity, fill=factor(prod))) +
geom_bar(stat="identity") +
geom_text(aes(x= factor(1), y=pos, label = quantity), size=10) + # note y = pos
facet_grid(facets = .~year, labeller = label_value) +
coord_polar(theta = "y")