小言_互联网的博客

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

391人阅读  评论(0)

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

 

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

01— 柱形图实现

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


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

 

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

 

02— 完整代码

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

windows 如何安装ffmpeg


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

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

 

​相关推荐:

 

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

动态数据视频(第一节)

windows 如何安装ffmpeg

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

 

​欢迎关注我们:

大家一起学编程

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

下期预告​:

    ​

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

喜欢就点个吧​


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