web-dev-qa-db-fra.com

Comment changer le nombre de décimales sur les étiquettes d'axe dans ggplot2?

Plus précisément, il s’agit d’un facet_grid. Avoir beaucoup cherché sur Google pour des questions similaires, mais pas sur la syntaxe ou où il va. Ce que je veux, c'est que chaque nombre sur l'axe des y ait deux chiffres après la décimale, même si le dernier est 0. S'agit-il d'un paramètre dans scale_y_continuous ou element_text ou ...?

row1 <- ggplot(sector_data[sector_data$sector %in% pages[[x]],], aes(date,price)) + geom_line() +
  geom_hline(yintercept=0,size=0.3,color="gray50") +
  facet_grid( ~ sector) +
  scale_x_date( breaks='1 year', minor_breaks = '1 month') +
  scale_y_continuous( labels = ???) +
  theme(panel.grid.major.x = element_line(size=1.5),
        axis.title.x=element_blank(),
        axis.text.x=element_blank(),
        axis.title.y=element_blank(),
        axis.text.y=element_text(size=8),
        axis.ticks=element_blank()
  )
37
Peter Lewis

De l'aide pour ?scale_y_continuous, l'argument 'labels' peut être une fonction:

étiquettes Une des:

  • NULL pour les étiquettes

  • waiver () pour les étiquettes par défaut calculées par l'objet de transformation

  • Un vecteur de caractère donnant des étiquettes (doit avoir la même longueur que les sauts)

  • Une fonction qui prend les pauses en entrée et retourne les étiquettes en sortie

Nous allons utiliser la dernière option, une fonction qui prend breaks comme argument et renvoie un nombre avec 2 décimales.

#Our transformation function
scaleFUN <- function(x) sprintf("%.2f", x)

#Plot
library(ggplot2)
p <- ggplot(mpg, aes(displ, cty)) + geom_point()
p <- p + facet_grid(. ~ cyl)
p + scale_y_continuous(labels=scaleFUN)

enter image description here

44
Pierre Lafortune

Le paquet "scale" a quelques fonctions de Nice pour formater les axes. Une de ces fonctions est number_format (). Donc, vous n'avez pas à définir votre fonction en premier.

library(ggplot2)
# building on Pierre's answer
p <- ggplot(mpg, aes(displ, cty)) + geom_point()
p <- p + facet_grid(. ~ cyl)

# here comes the difference
p + scale_y_continuous(
  labels = scales::number_format(accuracy = 0.01))

# the function offers some other Nice possibilities, such as controlling your decimal 
# mark, here ',' instead of '.'
p + scale_y_continuous(
  labels = scales::number_format(accuracy = 0.01,
                                 decimal.mark = ','))
21
Rtist