web-dev-qa-db-fra.com

Comment puis-je changer les chiffres de l'axe des Y en pourcentages dans un diagramme à barres?

Comment pouvons-nous changer l'axe des ordonnées en pourcentage comme le chiffre? Je peux modifier la plage de l'axe des y, mais je ne peux pas atteindre un pourcentage. enter image description here

80
STAT

Utilisation:

+ scale_y_continuous(labels = scales::percent)

Ou, pour spécifier les paramètres de formatage du pourcentage:

+ scale_y_continuous(labels = scales::percent_format(accuracy = 1))

(la commande labels = percent est obsolète depuis la version 2.2.1 de ggplot2)

170
luchonacho

En principe, vous pouvez transmettre toute fonction de reformatage au paramètre labels:

+ scale_y_continuous(labels = function(x) paste0(x*100, "%")) # Multiply by 100 & add %  

Ou

+ scale_y_continuous(labels = function(x) paste0(x, "%")) # Add percent sign 

Exemple reproductible:

library(ggplot2)
df = data.frame(x=seq(0,1,0.1), y=seq(0,1,0.1))

ggplot(df, aes(x,y)) + 
  geom_point() +
  scale_y_continuous(labels = function(x) paste0(x*100, "%"))
43
Deena

Les packages ggplot2 et scales peuvent le faire:

y <- c(12, 20)/100
x <- c(1, 2)

library(ggplot2)
library(scales)
myplot <- qplot(as.factor(x), y, geom="bar")
myplot + scale_y_continuous(labels=percent)

Il semble que l'option stat() ait été supprimée, ce qui a provoqué le message d'erreur. Essaye ça:

library(scales)

myplot <- ggplot(mtcars, aes(factor(cyl))) + 
          geom_bar(aes(y = (..count..)/sum(..count..))) + 
          scale_y_continuous(labels=percent)

myplot
39
Penguin_Knight

Emprunté à @Deena ci-dessus, cette modification de fonction pour les étiquettes est plus polyvalente que vous ne le pensiez. Par exemple, j'avais un ggplot où le dénominateur des variables comptées était 140. J'ai utilisé son exemple comme suit:

scale_y_continuous(labels = function(x) paste0(round(x/140*100,1), "%"), breaks = seq(0, 140, 35))

Cela m’a permis d’obtenir mes pourcentages sur le dénominateur 140, puis de casser l’échelle par incréments de 25% plutôt que par les nombres étranges auxquels elle était par défaut. La clé ici est que les coupures d’échelle sont toujours définies par le nombre initial, et non par vos pourcentages. Par conséquent, les sauts doivent être compris entre zéro et le dénominateur, le troisième argument de "sauts" étant le dénominateur divisé par le nombre de sauts d’étiquettes souhaité (par exemple, 140 * 0,25 = 35).

0
DanM