在之前的教程中,我们已经学习了如何生成动态的数据统计图,这次我们将这种方法应用于数据排行榜。
01— 柱形图实现
第一步:实现一个最简单的柱形统计图
让我们从一个简单的柱形图开始。
from matplotlib import pyplot # 导入模块fig, ax = pyplot.subplots() # 返回一个包含figure和axes对象的元组,将元组分解为fig和ax两个变量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()
graph(1)
实现结果如图所示:我们绘制了三条统计图。

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

第四步:赋予每条柱形不同的值,使其看起来在变动
我们引入math模块来为柱形图赋予不同的值。

第五步:让我们的数据动起来
我们发现柱形图已经动起来了,但文字仍然静止。如何解决这个问题呢?
Sudowrite
对用户最友好的AI写作工具
169 查看详情

from matplotlib import animationfrom matplotlib import pyplotfrom pylab import mplimport 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() # 移动到函数外面,不然不会动态显示
我们继续完善,实现动态效果:

02— 完整代码
注意:保存视频或图片需要使用插件,并设置环境变量。
在Windows上安装ffmpeg:
from matplotlib import animationfrom matplotlib import pyplotfrom pylab import mplimport 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()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('人口工作情况对比') # 添加图标题
animator = animation.FuncAnimation(fig, graph, frames=range(1, 100), interval=1)animator.save(filename="数据.gif", writer='pillow') # 保存gifanimator.save(filename="数据.mp4") # 保存视频pyplot.show() # 移动到函数外才能正常显示
通过以上步骤,我们成功完成了动态数据视频的制作。
以上就是matplotlib-bilibili,抖音很火的动态数据视频自动生成(第三节)的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/756644.html
微信扫一扫
支付宝扫一扫