Replace coefficient with a numeric variable

I always run into this problem when plotting with ggplot2 and trying to reorder the factors according to the numerical variable in data.frame.

structure(list(Team = structure(1:32, .Label = c("ARI", "ATL", "BAL", "BUF", "CAR", "CHI", "CIN", "CLE", "DAL", "DEN", "DET", "GB", "HOU", "IND", "JAC", "KC", "MIA", "MIN", "NE", "NO", "NYG", "NYJ", "OAK", "PHI", "PIT", "SD", "SEA", "SF", "STL", "TB", "TEN", "WAS"), class = "factor"), Fans = c(49L, 145L, 175L, 75L, 104L, 167L, 101L, 147L, 157L, 304L, 112L, 338L, 200L, 118L, 37L, 60L, 65L, 225L, 371L, 97L, 163L, 87L, 84L, 102L, 111L, 85L, 422L, 311L, 63L, 56L, 49L, 271L)), .Names = c("Team", "Fans"), row.names = c(NA, -32L), class = "data.frame") 

This does not change the order of the teams on # fans:

 ggplot(total.fans, aes(x=reorder(Team, Fans), y=Fans)) + geom_bar() 

And this conversion call does not modify the data:

 transform(total.fans, variable=reorder(Team, -Fans)) 

What am I missing?

+4
source share
2 answers

You can change the order of your factor also outside of ggplot() by using the factor() function, and then use ggplot() .

 total.fans$Team <- factor(total.fans$Team , levels = total.fans[order(total.fans$Fans), 1]) ggplot(total.fans, aes(x=Team, y=Fans)) + geom_bar(stat="identity") 
+3
source

It works for me with ggplot2 0.9.3, although I get warnings: I think you want

 ggplot(total.fans, aes(x=reorder(Team, Fans),y=Fans)) + geom_bar(stat="identity") 

enter image description here

(Posting, not commenting, so I can show the plot ...)

+5
source

All Articles