Hoe staven in een ggplot2-staafdiagram te sorteren
Standaard rangschikt ggplot2 de staven in een staafdiagram in de volgende volgorde:
- Factorvariabelen worden geclassificeerd op factorniveau.
- Karaktervariabelen worden alfabetisch weergegeven.
Het kan echter voorkomen dat u geïnteresseerd bent om de repen in een andere specifieke volgorde te bestellen.
In deze tutorial wordt uitgelegd hoe u dit kunt doen met behulp van het volgende dataframe:
#create data frame df <- data. frame (team = c('B', 'B', 'B', 'A', 'A', 'C'), points = c(12, 28, 19, 22, 32, 45), rebounds = c(5, 7, 7, 12, 11, 4)) #view structure of data frame str(df) 'data.frame': 6 obs. of 3 variables: $ team: Factor w/ 3 levels "A","B","C": 2 2 2 1 1 3 $ points: num 12 28 19 22 32 45 $rebounds: num 5 7 7 12 11 4
Voorbeeld 1: Bestel de staven op basis van een specifieke factorvolgorde
Als we proberen een staafdiagram te maken om de frequentie per team weer te geven, verschijnen de staven automatisch in alfabetische volgorde:
library (ggplot2) ggplot(df, aes(x=team)) + geom_bar ()
De volgende code laat zien hoe u de staven in een specifieke volgorde kunt sorteren:
#specify factor level order df$team = factor(df$team, levels = c('C', 'A', 'B')) #create bar chart again ggplot(df, aes(x=team)) + geom_bar ()
Voorbeeld 2: Sorteer staven op basis van numerieke waarde
We kunnen staven ook sorteren op basis van numerieke waarden. De volgende code laat bijvoorbeeld zien hoe u de balken van de hoogste naar de laagste frequentie kunt ordenen met behulp van de functie reorder() :
library (ggplot2) ggplot(df, aes(x= reorder (team, team, function (x)-length(x)))) + geom_bar ()
We kunnen de balken ook sorteren van de kleinste naar de grootste frequentie door het minteken in de function()- aanroep in de reorder()- functie te verwijderen:
library (ggplot2) ggplot(df, aes(x= reorder (team, team, function (x) length(x)))) + geom_bar ()
Aanvullende bronnen
Documentatie voor de functie geom_bar() .
Documentatie voor de functie reorder() .
Een volledige lijst met R-tutorials over statistieken.