在之前的教程中,我们已经学习了如何生成动态的数据统计图,这次我们将这种方法应用于数据排行榜。
让我们从一个简单的柱形图开始。
from matplotlib import pyplot # 导入模块 fig, ax = pyplot.subplots() # 返回一个包含figure和axes对象的元组,将元组分解为fig和ax两个变量 <p>def graph(num): ax.barh(1, num, color='#adb0ff') # 绘制水平方向的条形图barh() ax.barh(3, num, color='#ffb3ff') # 绘制水平方向的条形图barh() ax.barh(5, num, color='#90d595') # 绘制水平方向的条形图barh() pyplot.show()</p><p>graph(1)
实现结果如图所示:我们绘制了三条统计图。

现在我们为每条柱体添加文字。
ax.text(num, 1, "广东省", size=14, weight=600, ha='right', va='bottom') # 添加文字并设置样式
由于中文可能会出现乱码,我们需要进行特殊处理。
from pylab import mpl mpl.rcParams['font.sans-serif'] = ["SimHei"] mpl.rcParams['axes.unicode_minus'] = False

我们引入math模块来为柱形图赋予不同的值。

我们发现柱形图已经动起来了,但文字仍然静止。如何解决这个问题呢?

from matplotlib import animation from matplotlib import pyplot from pylab import mpl import mathmpl.rcParams['font.sans-serif'] = ["SimHei"] mpl.rcParams['axes.unicode_minus'] = False
fig, ax = pyplot.subplots() # 返回一个包含figure和axes对象的元组,将元组分解为fig和ax两个变量
def graph(num): ax.clear() # 清除,不叠加 ax.barh(1, num, color='#adb0ff') # 绘制水平方向的条形图barh() ax.text(num, 1, "广东省", size=14, weight=600, ha='right', va='bottom') # 添加文字并设置样式 ax.barh(3, num / math.pi, color='#ffb3ff') ax.text(num / math.pi, 3, "北京省", size=14, weight=600, ha='right', va='bottom') ax.barh(5, num / math.tan(1), color='#90d595') ax.text(num / math.tan(1), 5, "云南省", size=14, weight=600, ha='right', va='bottom') pyplot.title('人口工作情况对比') # 添加图标题
animator = animation.FuncAnimation(fig, graph, frames=range(1, 100), interval=1) pyplot.show() # 移动到函数外面,不然不会动态显示
我们继续完善,实现动态效果:

注意:保存视频或图片需要使用插件,并设置环境变量。
在Windows上安装ffmpeg:
from matplotlib import animation
from matplotlib import pyplot
from pylab import mpl
import math</p><p>mpl.rcParams['font.sans-serif'] = ["SimHei"]
mpl.rcParams['axes.unicode_minus'] = False</p><p>fig, ax = pyplot.subplots() # 返回一个包含figure和axes对象的元组,将元组分解为fig和ax两个变量</p><p>def graph(num):
ax.clear()
if num == 50:
ax.barh(1, 50, color='#adb0ff') # 绘制水平方向的条形图barh()
ax.text(50, 1, "广东省", size=14, weight=600, ha='right', va='bottom') # 添加文字并设置样式
if num == 70:
ax.barh(3, num - 1, color='#ffb3ff')
ax.text(num - 1, 3, "北京省", size=14, weight=600, ha='right', va='bottom')
ax.barh(5, num, color='#90d595')
ax.text(num, 5, "云南省", size=14, weight=600, ha='right', va='bottom')
pyplot.title('人口工作情况对比') # 添加图标题</p><p>animator = animation.FuncAnimation(fig, graph, frames=range(1, 100), interval=1)
animator.save(filename="数据.gif", writer='pillow') # 保存gif
animator.save(filename="数据.mp4") # 保存视频
pyplot.show() # 移动到函数外才能正常显示通过以上步骤,我们成功完成了动态数据视频的制作。
以上就是matplotlib-bilibili,抖音很火的动态数据视频自动生成(第三节)的详细内容,更多请关注php中文网其它相关文章!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号