简单垂直条形图
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()