web-dev-qa-db-fra.com

Comment étiqueter les barres d'histogramme avec des valeurs de données ou des pourcentages en R

Je voudrais étiqueter chaque barre d'un histogramme avec le nombre de comptages dans ce bac ou le pourcentage du nombre total qui se trouvent dans ce bac. Je suis sûr qu'il doit y avoir un moyen de le faire, mais je n'ai pas pu le trouver. Cette page contient quelques images d'histogrammes SAS qui font essentiellement ce que j'essaie de faire (mais le site ne semble pas avoir de versions R): http://www.ats.ucla.edu/stat/sas/faq/histogram_anno.htm

Si possible, il serait également agréable d'avoir la possibilité de mettre les étiquettes au-dessus ou quelque part à l'intérieur des barres, comme vous le souhaitez.

J'essaie de le faire avec les installations de traçage de base R, mais je serais intéressé par des méthodes pour le faire dans ggplot2 et lattice également.

20
eipi10

Pour inclure le nombre de comptages, vous pouvez simplement définir labels=TRUE.

L'exemple ci-dessous est juste légèrement adapté de celui de la page d'aide hist() :

hist(islands, col="gray", labels = TRUE, ylim=c(0, 45))

enter image description here

Obtenir des pourcentages est un peu plus compliqué. La seule façon que je sache de le faire pour manipuler directement l'objet retourné par un appel à hist(), comme décrit un peu plus en détail dans ma réponse à cette question similaire :

histPercent <- function(x, ...) {
   H <- hist(x, plot = FALSE)
   H$density <- with(H, 100 * density* diff(breaks)[1])
   labs <- paste(round(H$density), "%", sep="")
   plot(H, freq = FALSE, labels = labs, ylim=c(0, 1.08*max(H$density)),...)
}

histPercent(islands, col="gray")

enter image description here

36
Josh O'Brien

L'ajout de nombres au sommet des barres dans les graphiques à barres ou les histogrammes déforme l'interprétation visuelle des barres, même en plaçant les étiquettes à l'intérieur des barres près du haut, cela crée un effet de flou en haut qui rend plus difficile pour le spectateur d'interpréter correctement le graphique. Si le nombre est intéressant, cela crée une table mal disposée, pourquoi ne pas simplement créer une table appropriée.

Si vous ressentez vraiment le besoin d'ajouter les chiffres, il est préférable de les placer sous les barres ou le long de la marge supérieure afin qu'ils s'alignent mieux pour une comparaison plus facile et n'interfèrent pas avec l'interprétation visuelle du graphique. Des étiquettes peuvent être ajoutées aux graphiques de base à l'aide des fonctions text ou mtext et les emplacements x peuvent être trouvés dans la valeur de retour de la fonction hist. Les hauteurs de traçage peuvent être calculées à l'aide de la fonction grconvertY.

5
Greg Snow