質問
ggplot2を使用してRのブルズアイチャートを作成しています。見栄えが良く、誰もが非常に満足しています。ただし、ブルズアイレイヤーの値をチャートにプロットしたい場合を除きます。プロットの右下隅、またはプロットの余白に配置するだけでうれしいですが、これを行うのは少し困難です。
サンプルデータを再度示します。
critters <- structure(list(Zoo = "Omaha", Animals = 50, Bears = 10, PolarBears = 3), .Names = c("Zoo",
"Animals", "Bears", "PolarBears"), row.names = c(NA, -1L), class = "data.frame")
そしてそれをプロットする方法:
d <- data.frame(animal=factor(c(rep("Animals", critters$Animals),
rep("Bears", critters$Bears), rep("PolarBears", critters$PolarBears)),
levels = c("PolarBears", "Bears", "Animals"), ordered= TRUE))
grr <- ggplot(d, aes(x = factor(1), fill = factor(animal))) + geom_bar() +
coord_polar() + labs(x = NULL, fill = NULL) +
scale_fill_manual(values = c("firebrick2", "yellow2", "green3")) +
opts(title = paste("Animals, Bears and Polar Bears:\nOmaha Zoo", sep=""))
たとえば、このプロットの右下隅にリストを追加したい
Animals: 50
Bears: 10
PolarBears: 3
しかし、私はその方法がわかりません。これまでの annotate()
での努力は、極座標によって部分的に妨害されてきました。タイトルに数字を追加する必要がある場合は、そうする必要がありますが、よりエレガントなソリューションへの希望を常に持ち続けています。事前に感謝します。
編集:
後に来る人にとって重要な注意点:ブルズアイは極座標にマッピングされた棒グラフです。棒グラフのggplot2のデフォルトは、賢明なことに、それらを積み上げることです。ただし、それはあなたのブルズアイのリングも積み重ねられることを意味します(たとえば、私の例の半径は、最大グループのサイズ50ではなく、3つのグループすべての合計63と等しくなります)。特にグループが入れ子になっている場合、それはほとんどの人がブルズアイプロットから期待するものだとは思わない。 geom_bar(position = position_identity())
を使用すると、積み重ねられたリングが層状の円に変わります。
編集2: ggplot2 docs:
の例
解決
番号を凡例に追加できます。
library(ggplot2)
critters <- structure(list(Zoo = "Omaha", Animals = 50, Bears = 10, PolarBears = 3), .Names = c("Zoo", "Animals", "Bears", "PolarBears"), row.names = c(NA, -1L), class = "data.frame")
d <- data.frame(animal=factor(c(rep("Animals", critters$Animals),
rep("Bears", critters$Bears), rep("PolarBears", critters$PolarBears)),
levels = c("PolarBears", "Bears", "Animals"), ordered= TRUE))
levels(d$animal) <- apply(data.frame(table(d$animal)), 1, paste, collapse = ": ")
ggplot(d, aes(x = factor(1), fill = factor(animal))) + geom_bar() +
coord_polar() + labs(x = NULL, fill = NULL) +
scale_fill_manual(values = c("firebrick2", "yellow2", "green3")) +
opts(title = paste("Animals, Bears and Polar Bears:\nOmaha Zoo", sep=""))
他のヒント
プロットに直接追加することもできます:
grr <- ggplot(d, aes(x = factor(1), fill = factor(animal))) + geom_bar() +
coord_polar() + labs(x = NULL, fill = NULL) +
scale_fill_manual(values = c("firebrick2", "yellow2", "green3")) +
opts(title = paste("Animals, Bears and Polar Bears:\nOmaha Zoo", sep=""))+
geom_text(y=c(3,10,50)-3,label=c("3","10","50"),size=4)
grr
所属していません StackOverflow