114 votes

Comment mettre des étiquettes sur geom_bar pour chaque barre en R avec ggplot2

J'ai trouvé ça, Comment mettre des étiquettes sur geom_bar en R avec ggplot2 mais il ne met les étiquettes (chiffres) que sur une seule barre.

Voici, disons, deux barres pour chaque axe des x, comment faire la même chose ?

Mes données et mon code ressemblent à ceci :

dat <- read.table(text = "sample Types Number
sample1 A   3641
sample2 A   3119
sample1 B   15815
sample2 B   12334
sample1 C   2706
sample2 C   3147", header=TRUE)

library(ggplot2)
bar <- ggplot(data=dat, aes(x=Types, y=Number, fill=sample)) + 
  geom_bar(position = 'dodge') + geom_text(aes(label=Number))

Ensuite, nous aurons : enter image description here

Il semble que les textes des numéros soient également positionnés selon le modèle "dodge". J'ai cherché manuel geom_text pour trouver des informations, mais ne parvient pas à les faire fonctionner.

Des suggestions ?

172voto

rcs Points 22112

Essayez ça :

ggplot(data=dat, aes(x=Types, y=Number, fill=sample)) + 
     geom_bar(position = 'dodge', stat='identity') +
     geom_text(aes(label=Number), position=position_dodge(width=0.9), vjust=-0.25)

ggplot output

5voto

matmat Points 535

Pour compléter la réponse de rcs, si vous voulez utiliser position_dodge() avec geom_bar() lorsque x est une date POSIX.ct, vous devez multiplier la largeur par 86400, par exemple,

ggplot(data=dat, aes(x=Types, y=Number, fill=sample)) + 
 geom_bar(position = "dodge", stat = 'identity') +
 geom_text(aes(label=Number), position=position_dodge(width=0.9*86400), vjust=-0.25)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X