hhhhh我又来更文了,本来打算今天要学自己的东西的,没想到部门大哥在就回家前又给我提了个需求,我直言,你到底是程序员还是产品经理呀???我的,这个坏小子。而且提的需求都是那种很精辟的真是想的够美的哦。
好啦,进入正题。
今天给大家介绍的是同时在一张图上绘制折线图和叠加的条形图,大致样子长下图这样,不过今天教的是只有一条折线图的用法,我不会告诉你,这张图就是部门大哥手绘的,吼吼吼。
就直接进入代码吧。
import matplotlib
matplotlib.use('Agg')
import numpy as np
import pandas as pd
#关于import这些玩意,请使用 sudo apt install python-XXX
import matplotlib.pyplot as plt
from matplotlib import mlab
from matplotlib import rcParams
data=[25.9,84.6,21,21.8,36.7,4,5.2,43.7,0.12292,94] #折线图的y轴数据
rn=['a','b','c','d','e','f','h','i','j','k'] #横坐标的内容
vbar1=[5,4,7,9,12,3,7,4,10,9] #下面的条形图的y轴数据
vbar2=[4,6,9,2,7,8,10,8,12,6] #上面的条形图的y轴数据
fig, ax1 = plt.subplots(figsize=(15,10))
x=np.arange(len(rn))
y=np.array(list(vbar1))
w=np.array(list(vbar2))
xticks1=list(rn)
#条形图
#plt.bar(x[0:6],y[0:6],width = 0.45,align='center',color = 'gray',alpha=0.9)
#plt.bar(x[6:],y[6:],width = 0.45,align='center',color = 'c',alpha=0.9)
#上面这两条语句,是用来设置条形图的颜色的,前6条柱子是gray色,而后四条是蓝绿色
plt.bar(x,y,width = 0.45,label='female',align='center',color = 'c',alpha=0.9)
plt.bar(x,w,bottom=vbar1,label='male',tick_label=vbar1,width = 0.45,align='center',color = 'y',alpha=0.9)
#看我斜体数据,就是关键了
plt.xticks(x,xticks1,size='medium')
打印下方条形图的数据
for a,b in zip(x,y):
plt.text(a, b, '%s' % b, ha='center', va= 'bottom',fontsize=10)
#折线图
ax2 = ax1.twinx()
z=np.array(list(data))
ax2.plot(x,z,c='y',marker='o')
#打印折线图的数据
for a,b in zip(x,z):
plt.text(a, b, '%s' % b, ha='center', va= 'bottom',fontsize=10)
#保存成图片
plt.savefig("result.png",format='png')
最后的效果图如图所示
emmmmm我觉得挺好看的。
ok今天就到这里吧,还要再写一篇呢。