小言_互联网的博客

matplotlib-bilibili,抖音很火的动态数据视频自动生成(第三节)-柱形数据视频

822人阅读  评论(0)

“ matplotlib-bilibili,抖音很火的动态数据视频自动生成(第三节)-柱形数据视频”

 

在之前已经告诉大家如何生成会动的数据统计图,这次我们把它应用到数据排行中吧!

01— 柱形图实现

第一步:实现一个最简单柱形统计图


  
  1. from matplotlib import pyplot #导入模块
  2. ​
  3. fig, ax = pyplot.subplots() #返回一个包含figure和axes对象的元组,将元组分解为fig和ax两个变量
  4. def graph(num):
  5. ax.barh( 1, num, color= '#adb0ff') # 绘制水平方向的条形图barh()
  6. ax.barh( 3, num, color= '#ffb3ff') # 绘制水平方向的条形图barh()
  7. ax.barh( 5, num, color= '#90d595') # 绘制水平方向的条形图barh()
  8. pyplot.show()
  9. 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模块,随便表示一下好了。

 

第五步,让我们的数据动起来:

结果发现一个问题,动是动起来了,但是文字还在。如何处理呢。


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

 

我们继续来完善一下,做出动态的效果:

 

02— 完整代码

注意:保存视频,或者保存图片,需要使用到插件,并设置环境变量​。

windows 如何安装ffmpeg


  
  1. from matplotlib import animation
  2. from matplotlib import pyplot
  3. from pylab import mpl
  4. import math
  5. ​
  6. mpl.rcParams[ 'font.sans-serif'] =[ "SimHei"]
  7. mpl.rcParams[ 'axes.unicode_minus'] = False
  8. fig, ax = pyplot.subplots() #返回一个包含figure和axes对象的元组,将元组分解为fig和ax两个变量
  9. ​
  10. def graph(num):
  11. ax.clear()
  12. if num< 50:
  13. ax.barh( 1, num -1, color= '#adb0ff') # 绘制水平方向的条形图barh()
  14. ax.text(num -1, 1, "广东省", size= 14, weight= 600, ha= 'right', va= 'bottom') #添加文字并设置样式
  15. ax.barh( 3, num+ 0.1, color= '#ffb3ff')
  16. ax.text(num + 0.1, 3, "北京省", size= 14, weight= 600, ha= 'right', va= 'bottom')
  17. if num>= 50:
  18. ax.barh( 1, 50, color= '#adb0ff') # 绘制水平方向的条形图barh()
  19. ax.text( 50, 1, "广东省", size= 14, weight= 600, ha= 'right', va= 'bottom') #添加文字并设置样式
  20. if num< 70:
  21. ax.barh( 3, num+ 2, color= '#ffb3ff')
  22. ax.text(num+ 2, 3, "北京省", size= 14, weight= 600, ha= 'right', va= 'bottom')
  23. if num >= 70:
  24. ax.barh( 3, num -1, color= '#ffb3ff')
  25. ax.text(num -1, 3, "北京省", size= 14, weight= 600, ha= 'right', va= 'bottom')
  26. ax.barh( 5, num, color= '#90d595')
  27. ax.text(num, 5, "云南省", size= 14, weight= 600, ha= 'right', va= 'bottom')
  28. pyplot.title( '人口工作情况对比') #添加图标题
  29. ​
  30. animator=animation.FuncAnimation(fig, graph, frames=range( 1, 100),interval= 1)
  31. animator.save(filename= "数据.gif",writer= 'pillow') #保存gif
  32. animator.save(filename= "数据.mp4") #保存视频
  33. pyplot.show() #移动到函数外才能正常显示

这样,我么就完成了数据动态视频的制作​。

 

​相关推荐:

 

bilibili,抖音很火的动态数据视频自动生成(第二节)

动态数据视频(第一节)

windows 如何安装ffmpeg

如何爬取王者荣耀全皮肤英雄壁纸

 

​欢迎关注我们:

大家一起学编程

以学习为主,兴趣为辅,致力于开发,发现更多好玩有趣的编程技巧以及好玩有趣的编程思路。为喜欢编程和想要学习编程的人找到编程的乐趣和动力。

下期预告​:

    ​

    ​给你喜欢的人画一个大大的爱心吧​

喜欢就点个赞吧​


转载:https://blog.csdn.net/qq_39046854/article/details/115679761
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场