如何对 ggplot2 条形图中的条形进行排序


默认情况下, ggplot2按以下顺序排列条形图中的条形:

  • 因子变量按因子水平进行分类。
  • 字符变量按字母顺序列出。

但是,您可能经常有兴趣以其他特定顺序订购金条。

本教程说明如何使用以下数据框执行此操作:

 #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

示例 1:根据特定因子顺序对条形进行排序

如果我们尝试创建一个条形图来按团队显示频率,条形图将自动按字母顺序显示:

 library (ggplot2)

ggplot(df, aes(x=team)) +
  geom_bar ()

以下代码显示了如何按特定顺序对条形进行排序:

 #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 ()

示例 2:根据数值对柱进行排序

我们还可以根据数值对条形进行排序。例如,以下代码显示如何使用reorder()函数按频率从最高到最低的顺序对柱进行排序:

 library (ggplot2)

ggplot(df, aes(x= reorder (team, team, function (x)-length(x)))) +
  geom_bar () 

ggplot2 条形图中的订单条形

我们还可以通过删除reorder()函数中function()调用中的减号来按频率从最小到最大对条形进行排序:

 library (ggplot2)

ggplot(df, aes(x= reorder (team, team, function (x) length(x)))) +
  geom_bar () 

在 ggplot2 条形图中从最小到最大对条形进行排序

其他资源

geom_bar()函数的文档
reorder()函数的文档
R 统计教程的完整列表

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注