Python数据分析条形图的各种绘制方式,包括:简单垂直条形图、简单水平条形图、水平交错条形图、垂直堆叠条形图等。
简单垂直条形图
- GDP=[12406.8,13908.57,9386.87,9143.64]
- #绘图
- plt.bar(range(4),GDP,align='center',color='steelblue',alpha=0.8)
- #添加轴标签
- plt.ylabel('GDP')
- #添加标题
- plt.title('GDP')
- #添加刻度标签
- plt.xticks(range(4),['beijing','shanghai','tianjing','chongjing'])
- #设置Y轴的刻度范围
- plt.ylim([5000,15000])
- #为每个条形图添加数值标签
- forx,yinenumerate(GDP):
- plt.text(x,y+100,'%s'%round(y,1),ha='center')
- plt.show()
简单水平条形图
- #导入绘图模块
- importmatplotlib.pyplotasplt
- #构建数据
- price=[39.5,39.9,45.4,38.9,33.34]
- #绘图
- plt.barh(range(5),price,align='center',color='steelblue',alpha=0.8)
- #添加轴标签
- plt.xlabel('price')
- #添加标题
- plt.title('Booksatdifferentprices')
- #添加刻度标签
- plt.yticks(range(5),['Amazon','Dangdang','ChinaBooksNetwork','Jingdong','Tianmao'])
- #设置Y轴的刻度范围
- plt.xlim([32,47])
- #为每个条形图添加数值标签
- forx,yinenumerate(price):
- plt.text(y+0.1,x,'%s'%y,va='center')
- plt.savefig('foo.png')
- #显示图形
- plt.show()
水平交错条形图
- #导入绘图模块
- importmatplotlib.pyplotasplt
- importnumpyasnp
- Y2016=[15600,12700,11300,4270,3620]
- Y2017=[17400,14800,12000,5200,4020]
- labels=['Beijing','Shanghai','HongKong','Shenzhen','Guangzhou']
- bar_width=0.45
- #绘图
- plt.bar(np.arange(5),Y2016,label='2016',color='steelblue',alpha=0.8,width=bar_width)
- plt.bar(np.arange(5)+bar_width,Y2017,label='2017',color='indianred',alpha=0.8,width=bar_width)
- #添加轴标签
- plt.xlabel('Top5City')
- plt.ylabel('Numberofhouseholds')
- #添加标题
- plt.title('BillionairesTop5Cities')
- #添加刻度标签
- plt.xticks(np.arange(5)+bar_width,labels)
- #设置Y轴的刻度范围
- plt.ylim([2500,19000])
- #为每个条形图添加数值标签
- forx2016,y2016inenumerate(Y2016):
- plt.text(x2016,y2016+100,'%s'%y2016,ha='center')
- forx2017,y2017inenumerate(Y2017):
- plt.text(x2017+bar_width,y2017+100,'%s'%y2017,ha='center')
- #显示图例
- plt.legend()
- plt.savefig('foo.png')
- #显示图形
- plt.show()
垂直堆叠条形图
- #导入模块
- importmatplotlib.pyplotasplt
- importnumpyasnp
- importpandasaspd
- #导入数据
- traffic_volume={'Index':['railway','green','watertransport','airtransport'],
- 'Jan':[31058,255802,52244,57],
- 'Feb':[28121,179276,46482,42],
- 'Mar':[32185,285446,50688,59],
- 'Api':[30133,309576,54728,57],
- 'May':[30304,319713,55813,60],
- 'Jun':[29934,320028,59054,58],
- 'Jul':[31002,319809,57353,55],
- 'Aug':[31590,331077,57583,57]}
- data=pd.DataFrame(traffic_volume)
- print(data)
- #绘图
- plt.bar(np.arange(8),data.loc[0,:][1:],color='red',alpha=0.8,label='railway',align='center')
- plt.bar(np.arange(8),data.loc[1,:][1:],bottom=data.loc[0,:][1:],color='green',alpha=0.8,label='highway',
- align='center')
- plt.bar(np.arange(8),data.loc[2,:][1:],bottom=data.loc[0,:][1:]+data.loc[1,:][1:],color='m',alpha=0.8,
- label='watertransport',align='center')
- plt.bar(np.arange(8),data.loc[3,:][1:],bottom=data.loc[0,:][1:]+data.loc[1,:][1:]+data.loc[2,:][1:],
- color='black',alpha=0.8,label='airtransport',align='center')
- #添加轴标签
- plt.xlabel('month')
- plt.ylabel('Cargovolume(10,000tons)')
- #添加标题
- plt.title('Monthlylogisticsvolumein2017')
- #添加刻度标签
- plt.xticks(np.arange(8),data.columns[1:])
- #设置Y轴的刻度范围
- plt.ylim([0,500000])
- #为每个条形图添加数值标签
- forx_t,y_tinenumerate(data.loc[0,:][1:]):
- plt.text(x_t,y_t/2,'%sW'%(round(y_t/10000,2)),ha='center',color='white',fontsize=8)
- forx_g,y_ginenumerate(data.loc[0,:][1:]+data.loc[1,:][1:]):
- plt.text(x_g,y_g/2,'%sW'%(round(y_g/10000,2)),ha='center',color='white',fontsize=8)
- forx_s,y_sinenumerate(data.loc[0,:][1:]+data.loc[1,:][1:]+data.loc[2,:][1:]):
- plt.text(x_s,y_s-20000,'%sW'%(round(y_s/10000,2)),ha='center',color='white',fontsize=8)
- #显示图例
- plt.legend(loc='uppercenter',ncol=4)
- #显示图形
- plt.show()
以上就是各种条形图的绘制方式,你Get到了吗?
©本文为清一色官方代发,观点仅代表作者本人,与清一色无关。清一色对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。本文不作为投资理财建议,请读者仅作参考,并请自行承担全部责任。文中部分文字/图片/视频/音频等来源于网络,如侵犯到著作权人的权利,请与我们联系(微信/QQ:1074760229)。转载请注明出处:清一色财经