Python使用Matplotlib绘制堆叠柱状图:基于Excel数据的实现
本文介绍如何使用Python的Matplotlib库绘制堆叠柱状图,展示各分类占比及与整体的关系。通过读取Excel文件数据,利用循环和bottom参数实现柱状图的堆叠效果,并自定义颜色与图例。
堆叠柱状图的应用场景
堆叠柱状图是一种常用的数据可视化方式,它将柱子分割以显示各数据的大小,同时展示小分类占比及与整体的关系。在数据分析中,这种图表常用于展示不同类别下的子类别分布情况,例如不同治疗方式(treatment)在不同物种(species)中的比例(ra)。
数据准备与处理
在开始绘图之前,需要准备好数据。假设我们有一个Excel文件'ccc.xlsx',其中包含我们需要可视化的数据。以下是数据处理的步骤:
- 使用xlrd库打开Excel文件。
- 获取第一个工作表(sheet1)的数据。
- 读取表格中的行数。
- 筛选出特定年份(如2015年)和特定plot(如'plot1')的数据。
- 提取每个元素所占的比例(ra)。
绘制堆叠柱状图
接下来,我们将使用Matplotlib库来绘制堆叠柱状图。以下是具体的代码实现:
from matplotlib import pyplot as plt
import pandas as pd
import xlrd
import numpy as np
data = xlrd.open_workbook('ccc.xlsx') #打开数据
table = data.sheet_by_index(0) #获取sheet1的数据
nrows = table.nrows #获取sheet1中的行
plot_list = ['plot1']
plot1_ra_list = [[0] for i in range(17)]#构建一个17X1的列表
i = 0
for row in range(1,nrows): #循环读取表内数据
if table.cell(row,0).value == 2015.0 and table.cell(row,1).value == 'plot1':
print(table.cell(row, 3).value) #第三列是各个元素所占的比例
print(i)
plot1_ra_list[i][0]=(float(table.cell(row, 3).value))
i+=1
#颜色列表
color = ['y','r','snow','b','k','g','orange','c','bisque','brown','lime','aqua','coral','darkcyan','gold','teal','pink',]
plt.figure(figsize=(8,6))
for i in range(17):
plt.bar(range(len(plot1_ra_list[i])), plot1_ra_list[i],bottom=np.sum(plot1_ra_list[:i],axis = 0),label=str(i+1),tick_label = plot_list,fc = color[i])
plt.legend()
plt.show()代码解析
上述代码首先导入了必要的库,包括Matplotlib、pandas、xlrd和numpy。然后,它打开了Excel文件并获取了第一个工作表的数据。接下来,代码筛选出特定年份和plot的数据,并提取每个元素所占的比例。
在绘制堆叠柱状图时,代码使用了Matplotlib的bar函数。通过设置bottom参数,实现了柱状图的堆叠效果。同时,代码还自定义了颜色列表,并为每个柱子分配了相应的颜色。
注意事项
在绘制堆叠柱状图时,需要注意以下几点:
- 确保数据格式正确,特别是比例(ra)的值。
- 根据实际需求调整柱子的数量和颜色。
- 如果需要绘制多个plot的堆叠柱状图,需要确保每个plot的species数量对齐。



以上就是Python绘制堆叠柱状图的详细内容,更多关于Python数据可视化的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













