Question

J'utilise ggplot2 pour créer des graphiques bullseye dans R. Ils ont l'air ravissants, et tout le monde est ravi - sauf qu'ils aimeraient que les valeurs des couches bullseye soient tracées sur le graphique. Je serais heureux de les placer dans le coin inférieur droit de l'intrigue, ou même dans les marges de l'intrigue, mais j'ai du mal à le faire.

Voici à nouveau les exemples de données:

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

Et comment le tracer:

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

Je voudrais ajouter une liste au coin inférieur droit de l'intrigue, par exemple, en disant:

Animals: 50
Bears: 10
PolarBears: 3

Mais je n'arrive pas à comprendre comment. Mes efforts avec annotate () ont été déjoués, en partie par les coordonnées polaires. Si je dois ajouter les numéros au titre, qu’il en soit ainsi, mais je garde toujours l’espoir d’une solution plus élégante. Merci d'avance.

EDIT: Une note importante pour ceux qui viendront après: le point de repère est un diagramme en barres mappé aux coordonnées polaires. La valeur par défaut de ggplot2 pour les graphiques à barres consiste à les empiler. Toutefois, cela signifie que les anneaux de votre cible seront également empilés (par exemple, le rayon dans mon exemple est égal à la somme des trois groupes, 63, au lieu de la taille du groupe le plus grand, 50). Je ne pense pas que c’est ce que la plupart des gens attendent d’un complot, surtout lorsque les groupes sont imbriqués. En utilisant geom_bar (position = identité_position ()) , les anneaux empilés se transforment en cercles superposés.

EDIT 2: Exemple tiré des ggplot2 :
entrer la description de l'image ici

Était-ce utile?

La solution

Vous pouvez ajouter les numéros à la légende.

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

Autres conseils

vous pouvez également l'ajouter directement à l'intrigue:

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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top