Wie kann ich die Y-Achsen-Zahlen in einem Barplot in Prozent umwandeln?


106

Wie können wir die y-Achse wie in der Abbildung in Prozent ändern? Ich kann den Bereich der y-Achse ändern, aber ich kann es nicht in Prozent schaffen. Geben Sie hier die Bildbeschreibung ein

Antworten:


236

Verwenden:

+ scale_y_continuous(labels = scales::percent)

Oder, um Formatierungsparameter für den Prozentsatz anzugeben:

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

(Der Befehl labels = percentist seit Version 2.2.1 von ggplot2 veraltet.)


3
Mir hat gefallen, dass Sie dafür nicht tippen müssen library(scales).
Akshay Gaur

Und der Grund, warum scales::percent(accuracy = 1)es nicht funktioniert, ist, dass die *_format()Versionen eine Funktion erstellen, anstatt ... was auch immer percent()alleine erstellt wird, ist das richtig?
MokeEire

60

Grundsätzlich können Sie jede Neuformatierungsfunktion an den labelsParameter übergeben:

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

Oder

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

Reproduzierbares Beispiel:

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, "%"))

7
+1 für keine externe Abhängigkeit. Ich weiß, da Hadley der Autor von ggplot2 und scale ist, sollte es eigentlich keine Rolle spielen - aber diese Lösung wird immer noch geschätzt.
Mark White

44

ggplot2und scalesPakete können das:

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)

Es scheint, dass die stat()Option deaktiviert wurde und die Fehlermeldung verursacht. Versuche dies:

library(scales)

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

myplot

2

In Anlehnung an @Deena oben ist diese Funktionsänderung für Beschriftungen vielseitiger als Sie vielleicht gedacht haben. Zum Beispiel hatte ich ein ggplot, bei dem der Nenner der gezählten Variablen 140 war. Ich habe ihr Beispiel folgendermaßen verwendet:

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

Dies ermöglichte es mir, meine Prozentsätze auf den Nenner von 140 zu bringen und dann die Skala in Schritten von 25% zu brechen, anstatt die seltsamen Zahlen, die standardmäßig verwendet wurden. Der Schlüssel hier ist, dass die Skalenumbrüche immer noch durch die ursprüngliche Anzahl und nicht durch Ihre Prozentsätze festgelegt werden. Daher müssen die Unterbrechungen von Null bis zum Nennerwert sein, wobei das dritte Argument in "Unterbrechungen" der Nenner geteilt durch die Anzahl der gewünschten Beschriftungsunterbrechungen ist (z. B. 140 * 0,25 = 35).

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.