web-dev-qa-db-fra.com

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

J'ai trouvé ceci, Comment mettre des étiquettes sur geom_bar dans R avec ggplot2 , mais cela ne fait que mettre des étiquettes (nombres) sur une seule barre.

Voici, disons, deux barres pour chaque axe des abscisses, 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 numériques sont également positionnés dans le modèle "dodge". J'ai cherché manuel geom_text pour trouver des informations, mais je ne peux pas les faire fonctionner.

Suggestions?

77
Puriney

Essaye ç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

114
rcs

Pour ajouter à la réponse de rcs, si vous souhaitez 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)
3
matmat