On m'a demandé de recréer le style de graphique suivant. (Veuillez ignorer la question de savoir si c'est un bon type de visualisation et considérez charitablement qu'il s'agit d'ajouter un élément coloré à un tableau numérique).
La plupart du temps, c'est assez simple, mais je n'ai pas encore trouvé un bon moyen de rendre le centre creux. Pour gagner du temps, il se peut que j'aie recours à l'ajout de données fictives invisibles (je publierai cette approche si personne d'autre ne le fait, mais elle semble moins optimale que celle qui modifie le thème). Existe-t-il une solution basée sur le thème ou une solution R non-ggplot2 ?
Ce que nous imitons
Résultat simple de ggplot2 (centre rempli non désiré)
library(ggplot2)
# make sample dataframe
Category <- c("Electronics", "Appliances", "Books", "Music", "Clothing",
"Cars", "Food/Beverages", "Personal Hygiene",
"Personal Health/OTC", "Hair Care")
Percent <- c(81, 77, 70, 69, 69, 68, 62, 62, 61, 60)
internetImportance<-data.frame(Category,Percent)
# append number to category name
internetImportance$Category <-
paste0(internetImportance$Category," - ",internetImportance$Percent,"%")
# set factor so it will plot in descending order
internetImportance$Category <-
factor(internetImportance$Category,
levels=rev(internetImportance$Category))
# plot
ggplot(internetImportance, aes(x = Category, y = Percent,
fill = Category)) +
geom_bar(width = 0.9, stat="identity") +
coord_polar(theta = "y") +
xlab("") + ylab("") +
ylim(c(0,100)) +
ggtitle("Top Product Categories Influenced by Internet") +
geom_text(data = internetImportance, hjust = 1, size = 3,
aes(x = Category, y = 0, label = Category)) +
theme_minimal() +
theme(legend.position = "none",
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
axis.line = element_blank(),
axis.text.y = element_blank(),
axis.text.x = element_blank(),
axis.ticks = element_blank())
Comment pouvons-nous tracer ces données avec un centre creux ?