在使用ggplot2进行绘图并尝试根据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")
这不会让粉丝们对球队重新排序:
ggplot(total.fans, aes(x=reorder(Team, Fans), y=Fans)) + geom_bar()
此变换调用也不会更改数据:
transform(total.fans, variable=reorder(Team, -Fans))
我错过了什么?
答案 0 :(得分:5)
ggplot2 0.9.3对我有用,虽然我收到警告:我想你想要
ggplot(total.fans, aes(x=reorder(Team, Fans),y=Fans)) +
geom_bar(stat="identity")
(发布而非评论,以便我可以显示情节...)
答案 1 :(得分:3)
您可以使用功能ggplot()
在factor()
来电之外重新排序您的因素,然后使用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")