Больше графиков «яблочко» в R
Вопрос
Я использую 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=""))
Другие советы
вы также можете добавить его непосредственно в сюжет:
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