我正在使用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缺省为堆叠它们。但是,这意味着靶心的环也将堆叠(例如,在我的示例中,半径等于三组的总和63,而不是最大组的大小50)。我认为,这就是大多数人对靶心图的期望,尤其是当组嵌套时。使用geom_bar(position = position_identity())将堆叠的戒指变成分层的圆圈。

编辑2:ggplot2文档的示例:

最佳答案

您可以将数字添加到图例中。

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

关于r - R中有更多靶心图,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1424189/

10-12 17:25