python 并列条形图_如何用各种不同方式绘制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()

2519818ea44e6375c945401763b79ff3.jpeg-wh_651x-s_1454145681.jpeg

简单水平条形图

#导入绘图模块

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()

df37f2944b7b0d613a967b078ad45088.jpeg

水平交错条形图

#导入绘图模块

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()

9249958ef665f59f1b78672d2bc30099.jpeg

垂直堆叠条形图

#导入模块

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()

ee35a10a551a1a68e3cea2363b8a6791.jpeg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值