Python绘制组合图的示例
绘制组合图:
组合图就是将多个形状,组合到⼀个图形中,主要作⽤是节约作图的空间,节省读者的时间,从⽽提⾼
信息传达的效率。
importpandasaspd
importnumpyasnp
importmatplotlib.pyplotasplt
defplot_combination1():
sale=pd.read_excel('./data/每月目标销售额和实际销售额.xlsx',header=0,index_col=0)
#设置正常显示中文标签
plt.rcParams['font.sans-serif']=['SimHei']
#正常显示负号
plt.rcParams['axes.unicode_minus']=False
#设置字体大小
plt.rcParams.update({'font.size':16})
#提取数据
x=np.arange(12)+1
y1=sale.目标销售额
y2=sale.实际销售额
#计算目标完成率
y3=y2/y1#float
#print(y3)1月1.1200002月0.8875003月1.1181824月1.150000
"""
第一种方式:是⽤两个不同颜⾊的柱⼦,分别展示每个⽉的实际销售额和⽬标销售额,
⽤折线图展示⽬标完成率。
左边的主坐标轴是柱形图对应的数据,右边的次坐标轴是折线图对应的
数据,下边的横坐标轴表示细分的维度,⽐如时间、地区、渠道等。
"""
plt.figure(figsize=(16,8))
plt.subplot(111)
#柱形宽度
bar_width=0.35
#在主坐标轴绘制柱形图
plt.bar(x,y1,bar_width,label='目标销售额')
plt.bar(x+bar_width,y2,bar_width,label='实际销售额')
#设置坐标轴的取值范围,避免柱子过高而与图例重叠
plt.ylim(0,max(y1.max(),y2.max())*1.2)
#设置图例
plt.legend(loc='upperleft')
#设置横坐标的标签
plt.xticks(x)
#plt.set_xticklabels(sale.index)
#在次坐标轴上绘制折线图
plt.twinx()
#ls:线的类型,lw:宽度,o:在顶点处实心圈
plt.plot(x,y3,ls='-',lw=2,color='r',marker='o',label='目标完成率')
#设置次坐标轴的取值范围,避免折线图波动过大
plt.ylim(0,1.35)
#设置图例
plt.legend()
#定义显示百分号的函数
defto_percent(number,position=0):
return'%.f'%(number*100)+'%'
#次坐标轴的标签显示百分号FuncFormatter:自定义格式函数包
frommatplotlib.tickerimportFuncFormatter
plt.gca().yaxis.set_major_formatter(FuncFormatter(to_percent))
#设置标题
plt.title('\n每月销售目标达成情况\n',fontsize=36,loc='center',color='k')
plt.show()
defplot_combination2():
"""
第二种方式:是⽤两条不同颜⾊的折线,分别展示每个⽉的实际销售额和⽬标销售额,再⽤两种不同颜
⾊的柱形图展示实际与⽬标的差额,绿⾊代表完成⽬标,红⾊代表没有完成⽬标,
这种组合图不需要⽤到两个纵坐标轴,
"""
importpandasaspd
importnumpyasnp
importmatplotlib.pyplotasplt
#设置正常显示中⽂标签
plt.rcParams['font.sans-serif']=['SimHei']
#正常显示负号
plt.rcParams['axes.unicode_minus']=False
#设置字体⼤⼩
plt.rcParams.update({'font.size':16})
#从Excel⽂件中读取数据,第⼀列设置为索引
sale=pd.read_excel('./data/每月目标销售额和实际销售额.xlsx',index_col=0)
#提取数据
#print('index')
x=sale.index#Index(['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月'],dtype='object',name='month')
#print(x)
y1=sale.目标销售额
y2=sale.实际销售额
#计算差额
y3=y2-y1
#绘制折线图
plt.figure(figsize=(16,8))
plt.subplot(111)
plt.plot(x,y1,ls='-',lw=2,label='目标销售额')
plt.plot(x,y2,ls='--',lw=2,label='实际销售额')
#⽤列表推导式定义柱⼦的颜⾊,绿⾊代表完成⽬标,红⾊代表没有完成⽬标
color=['g'ifi>0else'#dc5034'foriiny3]
#绘制柱形图
plt.bar(x,y3,color=color,label='差额')
#设置图例
plt.legend(loc='upperleft')
#设置标题
title='\n每月销售目标达成情况\n'
plt.title(title,fontsize=36,loc='center',color='k')
plt.show()
if__name__=='__main__':
plot_combination1()
plot_combination2()
绘制结果:
第一种
第二种:
参考书目:
数据化分析Python实战-林骥
以上就是Python绘制组合图的示例的详细内容,更多关于Python绘制组合图的资料请关注毛票票其它相关文章!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。