小言_互联网的博客

Matplotlib 动态图还可以这样玩,收藏了!

222人阅读  评论(0)

作者:Lemon

来源:Python数据之道

Matplotlib 动态图还可以这样玩,收藏了!

大家好,我是 Lemon。

Matplotlib 是 Python 数据可视化中不可或缺的一个可视化库,「Python数据之道」之前也给大家分享了一系列 Matplotlib 从基础到进阶的内容,包括:

今天给大家分享的是使用 Matplotlib 来创建动态 gif 图片,这个内容是以前没有分享过的。但 Lemon 觉得今天的内容也是特别的实用。

4种类型的动态 gif 图

今天给大家分享的包括4种类型的动态 gif 图,分别是单曲线动态图、分段分不同背景颜色的动态图、双曲线动态图、多图多曲线动态图。

核心思路是通过 Matplotlib 绘制动态图的动画帧,然后通过 python 的 'gif' 库来绘制动态图片。

单曲线动态图

先来看看单曲线动态图,效果如下:

实现上面视频中效果的核心代码如下:


   
  1. @gif.frame
  2. def plot(df,date):
  3.     df = df.loc[df.index[ 0]:pd.Timestamp(date)]
  4.     fig, (ax1) = plt.subplots( 1,figsize=( 20, 10),dpi= 100)
  5.     ax1.plot(
  6.         df. close, marker= 'o',
  7.         linestyle= '--',
  8.         linewidth= 3,
  9.         markersize= 15,
  10.         color =  'tab:blue'
  11.         )
  12.     y_max = round(df. close.max()* 1.05)
  13.     y_min = round(df. close.min()* 0.95)
  14.     ax1.set_title( '沪深300指数2015年至2020年月均指数点位',fontsize= 30)
  15. #     ax1.set_title( 'average close price of Hushen 300 index during 2010 to 2020', fontsize= 30)
  16.     ax1.set_xlim([START,END])
  17.     ax1.set_ylim([y_min,y_max])
  18.     ax1.set_ylabel( '指数收盘点位', color= 'tab:blue', fontsize= 20
  19.     # 设置刻度字体大小
  20.     ax1.tick_params(labelsize= 16)
  21.     
  22. #### 创建动态图 ####
  23. frames = []
  24. for date in pd.date_range(start =START, end=END,freq= '1M'):
  25.     frame = plot(df_300_price,date)
  26.     frames. append(frame)

效果是不是很赞啊,另外 3 种动态图的代码实现过程也是类似的,其效果如下:

分段分不同背景颜色的动态图

双曲线动态图

多图多曲线动态图

代码文件获取

为了方便大家练习和复现上面的效果,Lemon 整理好了本文的实现代码过程,大家可以在下面的公众号 「柠檬数据」 回复 mat-gif 来获取。

PS: 建议直接复制关键词在后台进行回复


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