900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > matplotlib绘制堆叠柱状图 多个柱形图

matplotlib绘制堆叠柱状图 多个柱形图

时间:2024-08-08 15:35:12

相关推荐

matplotlib绘制堆叠柱状图 多个柱形图

学习期间做个笔记,如果有问题欢迎各位大佬指出~

#问题:

#三天中3部电影的票房变化,movie = ['千与千寻', '玩具总动员4', '黑衣人:全球追缉']

#real_day1 = [4053, 7548, 6543],real_day2 = [1840, 4013, 3421],real_day3 = [2080, 1673, 2342]

#按照以上数据,绘制同位置多柱状图,绘制堆叠图

#解答:

import matplotlib.pyplot as plt

import numpy as np

%matplotlib inline

movie=[1,2,3]

real_day1=np.array([4053,7548,6543])

real_day2=np.array([1840,4013,3421])

real_day3=np.array([2080,1673,2342])

#设置画布

fig = plt.figure(figsize=(4,5),dpi=150)

#用于显示中文

import matplotlib

matplotlib.rcParams['font.family']='SimHei'

#绘制堆叠图

ax1 = fig.add_subplot(211)

width1=0.5

plt.bar(movie,real_day1,width=width1,color="silver")

plt.bar(movie,real_day2,width=width1,color="gold",bottom=real_day1)

plt.bar(movie,real_day3,width=width1,color="purple",bottom=real_day1+real_day2)

#修改x轴显示

plt.xticks(np.arange(1,4),('千与千寻','玩具总动员4','黑衣人:全球追缉'))

#绘制多柱形图

ax1 = fig.add_subplot(212)

width2=0.28

#设置x起始位置

day1_x=np.array([1,2,3])-width2

day2_x=day1_x+width2

day3_x=day1_x+2*width2

#绘图,label为设置图例做准备

plt.bar(day1_x,real_day1,width=width2,color='silver',label="第一天")

plt.bar(day2_x,real_day2,width=width2,color='gold',label='第二天')

plt.bar(day3_x,real_day3,width=width2,color='purple',label='第三天')

#修改x轴显示

plt.xticks(np.arange(1,4),('千与千寻','玩具总动员4','黑衣人:全球追缉'))

#设置y轴范围

plt.ylim(0,9000)

#设置图例

plt.legend(loc="upper left",fontsize=8)

#在坐标轴上加数值

for i in range(3):

# 第一天

plt.text(day1_x[i],real_day1[i],real_day1[i],fontsize=8,va="bottom",ha="center")

# 第一天

plt.text(day2_x[i],real_day2[i],real_day2[i],fontsize=8,va="bottom",ha="center")

# 第一天

plt.text(day3_x[i],real_day3[i],real_day3[i],fontsize=8,va="bottom",ha="center")

#tight保存图片完整

plt.savefig("test2",dpi=200,bbox_inches='tight')

结果图:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。