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

大家好,我是 Lemon。

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

  • 太赞了!100个案例,Matplotlib 从入门到大神!

  • 30000字 Matplotlib 实操干货,38个案例带你从入门到进阶!

  • 深度好文 |Matplotlib 可视化最有价值的 50 个图表(附完整 Python 源代码,推荐收藏)

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

4种类型的动态 gif 图

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

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

单曲线动态图

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


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

@gif.frame
def plot(df,date):
    df = df.loc[df.index[0]:pd.Timestamp(date)]
    fig, (ax1) = plt.subplots(1,figsize=(20,10),dpi=100)
    ax1.plot(
        df.close, marker='o',
        linestyle='--',
        linewidth=3,
        markersize=15,
        color = 'tab:blue'
        )
    y_max = round(df.close.max()*1.05)
    y_min = round(df.close.min()*0.95)
    ax1.set_title('沪深300指数2015年至2020年月均指数点位',fontsize=30)
#     ax1.set_title('average close price of Hushen 300 index during 2010 to 2020', fontsize=30)
    ax1.set_xlim([START,END])
    ax1.set_ylim([y_min,y_max])
    ax1.set_ylabel('指数收盘点位', color='tab:blue', fontsize=20
    # 设置刻度字体大小
    ax1.tick_params(labelsize=16)

    
#### 创建动态图 ####
frames = []
for date in pd.date_range(start =START, end=END,freq='1M'):
    frame = plot(df_300_price,date)
    frames.append(frame)

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

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


双曲线动态图

多图多曲线动态图

代码文件获取

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

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


©著作权归作者所有:来自51CTO博客作者mb5fe18e7c44408的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 升级版,用Python来进行多条曲线动态演示全球疫情变化
  2. 用 Python 动态曲线图来对全球疫情进行演示
  3. 学习PHP实现的曲线统计图表示例
  4. 学习php+jQuery+Ajax实现点赞效果的方法
  5. jQuery+PHP实现购物商城常用的星级评分效果
  6. PHP+jQuery实现中国地图热点数据统计展示效果
  7. 官方示例(十):网页开发3D粒子系统实现降雨效果 ThingJS
  8. jQueryValidate的js效果出不来需要注意的几点
  9. jquery 半透明遮罩效果 小结

随机推荐

  1. Android——Gallery 图片拖动效果
  2. Android 屏幕设置
  3. Android组件应用
  4. android之应用程序退到android桌面的实现
  5. Android SDK下载和更新失败的解决方法!!!
  6. Android file transfer/Upload
  7. AndroidManifest.xml 中application 的 a
  8. Android实现全屏
  9. android ant 打包报错:  [aapt] invalid
  10. Android键盘属性