【数据处理】
原始数据如图1所示,为2000、2004、2008,三个年份,A、B、C类型的a~h项指标数据。为方便生成百分比柱状堆积图,先对图一中数据每列求和得到sum,再用公式(Xij*100/sum)计算每个数据的百分比数值部分,结果如图2所示。
原始数据
百分比数值部分
【计算过程】
(一) 导入pyplot、pandas、numpy、FixdLocater模块,并利用pd.read_excel读取Excel数据。
pd.excel(io,sheet_name,header, index_col)
io为文件对象;sheet_name可接表索引,表名,列表形式的多个索引;header为指定表头行号;index_col指定索引列。
(二) 将每一行数据转化为数组的形式
.iloc[a][b] a,b为数值元素或列表,表示行索引与列索引,支持切片
.array() 转化为数组
(三) 搭建图像框架:设置图幅、分辨率、字体、刻度、刻度标签、坐标轴
pyplot.rcParams[“font.sans-serif”] = [字体名]
.xaxis.set_minor_locater(FixedLocator([]) 列表中为刻度值
.tick_params(axis,direction,which,length,width) axis指定x或y轴;direction为刻度朝向,which为指定主次坐标;length指定刻度长度;width指定刻度宽度
(四) 绘制图像,生成图例,保存图像
pyplot.bar(x, height, width=0.8, bottom=None) x为x轴上的坐标;height柱状的高度;width柱状的宽度;bottom柱状底部数字
pyplot.legend(loc,bbox_to_anchor,ncol,fontsize,frameon,title,labelspacing,handlelength)
loc指在框内的位置;bbox_to_anchor指在框外的位置接元组;ncol几列图例;fontsize字体大小;frameon是否显示边框;title图例标题;labelspacing行间距;handlelength条带长度
【最终结果】
欢迎关注、转发
后期会不断更新python相关知识和技巧,
大家相互学习共同进步。
谢谢大家!!!