web-dev-qa-db-fra.com

comment mettre le nombre exact de décimales sur l'étiquette graphique à barres ggplot

Comment spécifier le nombre exact de décimales sur les étiquettes de graphique à barres ggplot?

Les données:

strefa  <- c(1:13)
a       <- c(3.453782,3.295082,3.137755,3.333333,3.500000,3.351351,3.458824,3.318681,3.694175,3.241379,3.138298,3.309524,3.380000)
srednie <- data.frame(strefa,a)

Le code est:

ggplot(srednie, aes(x=factor(strefa), y=a, label=round(a, digits = 2))) +
  geom_bar(position=position_dodge(), stat="identity",  colour="darkgrey", width = 0.5) +
  theme(legend.position="none",axis.text.x = element_blank(), axis.ticks.x = element_blank(), axis.ticks.y = element_blank()) +
  geom_text(size = 4, hjust = 1.2) +
  coord_flip(ylim = c(1,6))+
  xlab("") +
  ylab("")

Comme vous pouvez le voir, sur les barres intitulées 5 et 2, les étiquettes sont limitées à la 1ère décimale. Comment afficher 2 décimales même s'il y a par exemple 3.000000 ou 5.999999? Dans de tels cas, je voudrais afficher 3,00 et 6,00.

J'ai essayé d'utiliser comme paramètre aeslabel=round(a, digits = 2) mais cela ne fonctionne pas.

14
Maciej B.

Vous pouvez essayer ce qui suit car il arrondit à deux chiffres et imprime deux chiffres après la décimale.

ggplot(srednie, aes(x=factor(strefa), y=a, label=sprintf("%0.2f", round(a, digits = 2)))) +
  geom_bar(position=position_dodge(), stat="identity",  colour="darkgrey", width = 0.5) +
  theme(legend.position="none",axis.text.x = element_blank(), axis.ticks.x = element_blank(), axis.ticks.y = element_blank()) +
  geom_text(size = 4, hjust = 1.2) +
  coord_flip(ylim = c(1,6))+
  xlab("") +
  ylab("")

La seule modification consistait à changer votre code de

round(a, digits = 2)

à

sprintf("%0.2f", round(a, digits = 2))

enter image description here

21
steveb