如何在ggplot2中重新排列堆积条形图中的条形


您可以使用以下基本语法来重新排列 ggplot2 中堆积条形图中条形的位置:

 #specify order of bars (from top to bottom)
df$fill_var <- factor(df$fill_var, levels=c(' value1 ', ' value2 ', ' value3 ', ...))

#create stacked bar chart
ggplot(df, aes(x=x_var, y=y_var, fill=fill_var)) + 
    geom_bar(position=' stack ', stat=' identity ')

以下示例展示了如何在实践中使用此语法。

示例:重新排列 ggplot2 中堆积条形图中的条形

假设我们在 R 中有以下数据框,显示不同篮球运动员的得分:

 #create data frame
df <- data. frame (team=c('A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C'),
                 position=c('G', 'F', 'C', 'G', 'F', 'C', 'G', 'F', 'C'),
                 points=c(22, 12, 10, 30, 12, 17, 28, 23, 20))

#view data frame
df

  team position points
1 AG 22
2 AF12
3 AC 10
4 BG 30
5 BF 12
6 BC 17
7 GC 28
8 CF 23
9 CC 20

如果我们创建一个堆积条形图来可视化每支球队球员的得分,ggplot2 将自动按字母顺序堆积条形图:

 library (ggplot2)

#create stacked bar chart
ggplot(df, aes(x=team, y=points, fill=position)) + 
    geom_bar(position=' stack ', stat=' identity ') 

请注意,每个堆叠条按字母顺序显示位置(从上到下)。

要以特定方式重新排列条形,我们可以将位置变量转换为因子,并使用级别参数来指定堆积条形图中条形的顺序(从上到下):

 library (ggplot2)

#convert 'position' to factor and specify level order
df$position <- factor(df$position, levels=c(' F ', ' G ', ' C '))

#create stacked bar chart
ggplot(df, aes(x=team, y=points, fill=position)) + 
    geom_bar(position=' stack ', stat=' identity ') 

现在,条形图按照我们在级别参数中指定的确切顺序堆叠(从上到下)。

其他资源

以下教程解释了如何在 ggplot2 中执行其他常见任务:

如何在ggplot2中旋转轴标签
如何在ggplot2中设置轴中断
如何在ggplot2中设置轴限制
如何更改ggplot2中的图例标签

添加评论

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