学习期间做个笔记,如果有问题欢迎各位大佬指出~
#问题:
#三天中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')
结果图: