Matplotlib 可能是 Python 2D-绘图领域使用最广泛的套件。它能让使用者很轻松地将数据图形化,并且提供多样化的输出格式。这里将会探索 matplotlib 的常见用法。
条形图:排列在工作表的列或行中的数据可以绘制到条形图中。
特点:绘制连离散的数据,能够一眼可看出各个数据的大小,比较数据之间的差别。(统计)
首先,我们分析下绘制柱状图代码:(基于Jupyter Notebook运行,Pycharm也可)
from matplotlib import pyplot as plt
#解决中文问题
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=True
a=["星球崛起3:终极之战","敦刻尔克","蜘蛛侠:英雄归来","战狼2"]
b_1=[15746,3331,4497,5319]
b_2=[12345,1556,2245,1688]
b_3=[2359,3999,2358,3622]
width_bar=0.2
x_1=list(range(len(a)))
#这里的目的是把条形图间隔开来,防止重叠,都加上width_bar的倍数
x_2=[i+width_bar for i in x_1]
x_3=[i+width_bar*2 for i in x_1]
#设置图片大小和分辨率,其中figure单位为英寸,dpi为分辨率
plt.figure(figsize=(20,8),dpi=80)
#设置X轴的刻度和字符串,步长为1
plt.xticks(x_2,a)
#plt.bar()用于画条形图
c_1=plt.bar(range(len(a)),b_1,width=width_bar,label="9月10号")
c_2=plt.bar(x_2,b_2,width=width_bar,label="9月11号")
c_3=plt.bar(x_3,b_3,width=width_bar,label="9月12号")
#用于设置数字标注
for k in c_1:
height=k.get_height()
plt.text(k.get_x() + k.get_width() / 2, height, str(height),fontsize=20, ha="center", va="bottom")
for k in c_2:
height=k.get_height()
plt.text(k.get_x() + k.get_width() / 2, height, str(height),fontsize=20, ha="center", va="bottom")
for k in c_3:
height=k.get_height()
plt.text(k.get_x() + k.get_width() / 2, height, str(height),fontsize=20, ha="center", va="bottom")
plt.xlabel("电影名字")
plt.ylabel("票房 单位:百万")
plt.title("万达电影院")
plt.legend()
plt.show()
图片效果:
在这里,其实是用到了单式条形图的多次输出,没有太大的难点,通过3次For循环输出对应的数字标注。
这里涉及到的一个知识点就是如何控制图形不重叠。例如蓝色跟蓝色的柱子间的间隔是1。
那么,1根柱子就是0.2的宽度,3根就是0.6;如果我们设置宽度为0.4;那么3根就是1.2,会发生重叠。
到此,复式(多类别)条形图内容大概差不多结束,说的比较简单,因为这都是基于单式(单类别)条形图基础上画出来的。所以如果不太懂的话,可以看看我单类别的条形图,比这里详细很多。
单式(单类别)条形图篇(详细讲解横轴、竖轴数字标注): https://blog.csdn.net/weixin_43682519/article/details/109424127