在R中创建堆叠条形图时出现行列堆叠方向错误的问题
问题解决:按行堆叠的条形图修正
问题出在barplot()对矩阵的处理逻辑上:该函数默认将矩阵的每一列作为一组堆叠元素,而你的需求是把**每一行(对应单个州)**作为一组,堆叠农村和城镇人口数据。
修正方案
只需要在调用barplot()时,用t()函数转置你的矩阵即可。转置后矩阵会变成2行(农村、城镇)×10列(10个州),这样barplot就会为每个州生成一个堆叠条形,包含农村和城镇两部分。
修正后的完整代码:
# 原矩阵代码无需修改 population_matrix <- matrix(c(filter_data$Rural.population, filter_data$Urban.population), nrow = 10,ncol = 2,byrow = FALSE) # 转置矩阵后绘制条形图 barplot(t(population_matrix)/1000000, xlab = "States",ylab = "Population (in Millions)", col = c("Green","Blue"), # Green对应农村,Blue对应城镇 main = "Statewise population", border = "Black")
补充说明
- 转置后的矩阵,第一行对应原矩阵的第一列(农村人口),第二行对应原矩阵的第二列(城镇人口),
col参数的顺序刚好匹配农村和城镇的颜色设置。 - 如果需要添加图例来区分类别,可在代码末尾追加:
legend("topright", legend = c("Rural Population", "Urban Population"), fill = c("Green", "Blue"))
内容的提问来源于stack exchange,提问作者kartik trivedi
相关产品推荐
相关产品推荐

