如何在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中的图例标签