我希望创建一个分组条形图并保持顺序。如果只有单列而不是分组条形图,则使用reorder函数很明显。但不确定如何在融合的数据框上使用它。
以下是详细的代码示例说明:
假设我们有以下数据框:
绘制一个简单的条形图并翻转它。
现在假设我们向原始数据框添加另一列。
以下是详细的代码示例说明:
假设我们有以下数据框:
d.nfl <- data.frame(Team1=c("Vikings", "Chicago", "GreenBay", "Detroit"), Win=c(20, 13, 9, 12))
绘制一个简单的条形图并翻转它。
ggplot(d.nfl, aes(x = Team1, y=Win)) + geom_bar(aes(fill=Team1), stat="identity") + coord_flip()
上述图表没有任何顺序,如果我想按胜利次数对图表进行排序,可以执行以下操作:
d.nfl$orderedTeam <- reorder(d.nfl$Team1, d.nfl$Win)
ggplot(d.nfl, aes(x = orderedTeam, y=Win)) + geom_bar(aes(fill=orderedTeam), stat="identity") + coord_flip()
现在假设我们向原始数据框添加另一列。
d.nfl$points <- c(12, 3, 45, 5)
Team1 Win points
1 Vikings 20 12
2 Chicago 13 3
3 GreenBay 9 45
4 Detroit 12 5
要生成分组条形图,首先需要对其进行融合:
library(reshape2)
> d.nfl.melt <- melt(d.nfl[,c('Team1','Win','points')],id.vars = 1)
> ggplot(d.nfl.melt,aes(x = Team1,y = value)) + geom_bar(aes(fill = variable),position = "dodge", stat="identity") + coord_flip()
上面的 ggplot 是无序的。
但是我该如何制作按照顺序排列的分组柱状图(升序)?