Вопрос

Я использую 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 документы:
enter image description here

Это было полезно?

Решение

Вы можете добавить цифры в легенду.

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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top