今天讲讲用matplotlib绘制条形图,比如我们要显示几部电影的票房
from matplotlib import pyplot as plt
from matplotlib import font_manager
a=["战狼2","哪吒之魔童降世","流浪地球","复仇者联盟4:终局之战","红海行动","美人鱼","唐人街探案2","我和我的祖国","我不是药神","中国机长"]
my_font=font_manager.FontProperties(fname='C:/Windows/WinSxS/amd64_microsoft-windows-f..-microsoftyaheibold_31bf3856ad364e35_10.0.18362.1_none_e1230363312b5372/msyhbd.ttc')
b=[56.39,49.34,46.18,42.05,36.22,33.9,33.71,31.46,30.75,28.84]
list.reverse(b)
list.reverse(a)
plt.figure(figsize=(20,15),dpi=100)
plt.xticks(range(1,11),a,fontproperties=my_font,rotation=45)
#plt.yticks(range(1,13))
plt.bar(range(1,11),b)
plt.show()
结果如下图
我们发现如果名字太长可能就不能和图形对应了,所以我们可以把他画成横的
from matplotlib import pyplot as plt
from matplotlib import font_manager
my_font=font_manager.FontProperties(fname='C:/Windows/WinSxS/amd64_microsoft-windows-f..-microsoftyaheibold_31bf3856ad364e35_10.0.18362.1_none_e1230363312b5372/msyhbd.ttc')
a=["战狼2","哪吒之魔童降世","流浪地球","复仇者联盟4:终局之战","红海行动","美人鱼","唐人街探案2","我和我的祖国","我不是药神","中国机长"]
b=["56.39","49.34","46.18","42.05","36.22","33.9","33.71","31.46","30.75","28.84"]
list.reverse(b)
list.reverse(a)
plt.figure(figsize=(20,8),dpi=80)
plt.yticks(range(1,11),a,fontproperties=my_font)
plt.xticks(range(10,60,10))
plt.xlabel("票房",fontproperties=my_font)
plt.title("票房统计",fontproperties=my_font)
plt.barh(range(1,11),b,height=0.7,color="orange")
plt.show()
注意:在控制柱子宽度时,图是横的,就用height,图是竖的,就用width
我们也可以绘制多组条形图,比如要比较三部电影在四天的票房对比。
from matplotlib import pyplot as plt
from matplotlib import font_manager
my_font=font_manager.FontProperties(fname='C:/Windows/WinSxS/amd64_microsoft-windows-f..-microsoftyaheibold_31bf3856ad364e35_10.0.18362.1_none_e1230363312b5372/msyhbd.ttc')
a=["战狼2","哪吒之魔童降世","流浪地球","复仇者联盟4:终局之战"]
t_14=[1234,3213,1233,4221]
t_15=[3221,3233,4322,1221]
t_16=[3452,1342,1343,1111]
plt.figure(figsize=(20,8),dpi=80)
bar_height=0.2
a_y=list(range(4))
b_y=[i+bar_height for i in a_y]
c_y=[i+bar_height*2 for i in a_y]
plt.yticks(b_y,a,fontproperties=my_font)
plt.barh(range(4),t_14,height=0.2,label="14日")
plt.barh(b_y,t_15,height=0.2,label="15日")
plt.barh(c_y,t_16,height=0.2,label="16日")
plt.legend(prop=my_font)
plt.show()