我的一位同事需要绘制 101 个牛眼图。这不是她的主意。我没有让她的奴隶离开 Excel 或上帝知道是什么制作了这些东西,而是提出用 R 来做它们;在 ggplot2
中将条形图映射到极坐标以制作靶心是轻而易举的事。
但是,我遇到了一个问题:数据已经聚合,因此 Hadley 的示例 here不适合我。我可以将计数扩展为一个因子来执行此操作,但我觉得有更好的方法 - 告诉 geom_bar 如何读取数据的某种方法。
数据如下所示:
Zoo Animals Bears Polar Bears
1 Omaha 50 10 3
我将为每个动物园制作一个地 block - 但那部分我可以管理。
这是它的dput
:
structure(list(Zoo = "Omaha", Animals = "50", Bears = "10", `Polar Bears` = "3"), .Names = c("Zoo",
"Animals", "Bears", "Polar Bears"), row.names = c(NA, -1L), class = "data.frame")
注意:重要的是 Animals >= Bears >= Polar Bears。另外,她不在城里,所以我不能只从她那里得到原始数据(无论如何,如果有一个大文件的话)。
最佳答案
虽然我们正在等待更好的答案,但我认为我应该发布您提到的(次优)解决方案。 dat
是您问题中包含的结构。
d <- data.frame(animal=factor(sapply(list(dat[2:length(dat)]),
function(x) rep(names(x),x))))
cxc <- ggplot(d, aes(x = animal)) + geom_bar(width = 1, colour = "black")
cxc + coord_polar()
关于r - 牛眼图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1411599/