Python可视化应用――如何在一张图上同时绘制折线图和叠加的条形图

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今天就到这里吧,还要再写一篇呢。

你可能感兴趣的:(Python可视化应用――如何在一张图上同时绘制折线图和叠加的条形图)