2009-09-14 22 views
6

ggplot2を使ってRでいくつかのブルズアイチャートを作成しています。彼らは楽しいように見え、誰もが非常に喜んでいます - チャートにブルズアイレイヤの値をプロットしたいとします。私はちょうどプロットの右下隅、またはプロットマージンにそれらを配置することは幸せだろうが、私はこれを行うにはいくつかの困難を抱えています。ここで ブルズアイプロットの詳細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()で、部分的に極座標によって阻止されています。タイトルに数字を追加する必要がある場合は、そうすることをお勧めします。しかし、私はいつもより洗練されたソリューションを希望しています。前もって感謝します。

EDIT: 後に来る人にとって重要な点:ブルズアイは、極座標にマップされた棒グラフです。棒グラフのggplot2のデフォルトは、目立つように、それらを積み重ねることです。しかし、これはあなたのブルズアイの輪も積み重ねられます(たとえば、私の例の半径は、最大のグループのサイズではなく、3つのグループ63の合計、50に等しい)。私はではありませんは、ほとんどの人がブルズアイプロットから期待していることです、特にグループが入れ子になっていると思います。 geom_bar(position = position_identity())を使用すると、スタックされたリングがレイヤードサークルに変わります。

EDIT 2:例ggplot2ドキュメントから:あなたが伝説に番号を追加することができ
enter image description here

+0

必要はありませんが、申し訳ようにあなたの質問をしに。良い質問と私は答えを読むことを学んだ。 –

+1

ブルズアイをプロットすることについては、主に謝罪します。バープロットは(少なくとも私にとって)比較する方がはるかに簡単です。 –

答えて

4

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="")) 
5

あなたはまた、プロットに直接追加することができます

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 
+0

両方の良い答え!それは私が行ったルートなので、もう一度答えを出しただけです。 –