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()
)
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)
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 = ','))