用Python绘制超酷的gif动图,惊艳了所有人

这个Python库太强了,竟然能把图片,视频无损清晰放大! 这几天在逛GitHub的时候发现了一个非常牛逼的库,竟然有逆天的功能,一个用Python做的库,利用机器学习算法把图片无损的放大很多倍。 这个库叫video2x,目前收获1500颗星,是一款可以无损的放大图片,视频和 GIF功能的工具,它是基于waifu2x,Anime4K,SRMD 和RealSR开发而成的。那么到底有多牛逼呢,我看了之后直流口水。 2020最新python学习资源分享:1156465813 目前这个用神器是Python3开发的,而且是基于机器学习算法对图片进行无损放.. 阅读详情

87fb31f7862b3ca85849978946752d46.png

在之前的一篇文章当中,小编当时分享了如何用Python当中的gif模块来制作gif格式的图表,

厉害了,用Python绘制动态可视化图表,并保存成gif格式

今天小编再给大家来介绍一种制作gif格式图表的新方法,调用的是matplotlib的相关模块,其中的步骤与方法也是相当地简单易懂。

下载和导入数据库

我们这次用到的数据集是bokeh模块自带的数据集,通过下面这一行代码直接就可以下载

import bokeh
bokeh.sampledata.download()

然后导入后面要用到的数据集,我们挑选的是指定国家的1950年至今不同年龄阶段的人口所占比重的数据

from bokeh.sampledata.population import data
import numpy as np

data = filter_loc('United States of America')
data.head()

output

10d2c68f07a7c1eb0b50c3ec63824f25.png

先绘制若干张静态的图表

我们可以先绘制若干张静态的图表,然后将这几张图表合成一张gif格式的动图即可,代码如下

import seaborn as sns
import matplotlib.pyplot as plt
import matplotlib.patheffects as fx

# 绘制图表的函数
def make_plot(year):
    
    # 根据年份来筛选出数据
    df = data[data.Year == year]
        
    # 制作图表
    fig, (ax1, ax2) = plt.subplots(1, 2, sharey = True)
    ax1.invert_xaxis()
    fig.subplots_adjust(wspace = 0) 
    
    ax1.barh(df[df.Sex == 'Male'].AgeGrp, df[df.Sex == 'Male'].percent, label = 'Male')
    ax2.barh(df[df.Sex == 'Female'].AgeGrp, df[df.Sex == 'Female'].percent, label = 'Female', color = 'C1')
    
    country = df.Location.iloc[0]
    if country == 'United States of America': country == 'US'
        
    fig.suptitle(f'......')
    fig.supxlabel('......')
    fig.legend(bbox_to_anchor = (0.9, 0.88), loc = 'upper right')
    ax1.set_ylabel('Age Groups')
    
    return fig

我们自定义了一个绘制图表的函数,其中的参数是年份,逻辑很简单,我们是想根据年份来筛选出数据,然后根据筛选出的数据来绘制图表,每一年的图表不尽相同

years = [i for i in set(data.Year) if i < 2022]
years.sort()

for year in years:
    fig = make_plot(year)
    fig.savefig(f'{year}.jpeg',bbox_inches = 'tight')

output

0133a3f53b67578029375a7a0a971b0c.png

这样我们就生成了若干张静态的图表,然后集合成gif格式的图表几个,代码如下

import matplotlib.animation as animation
fig, ax = plt.subplots()
ims = []

for year in years:
    im = ax.imshow(plt.imread(f'{year}.jpeg'), animated = True)
    ims.append([im])

ani = animation.ArtistAnimation(fig, ims, interval=600)
ani.save('us_population.gif')

output

08ccc539fca047231b0d8f2c2b649c33.gif

还有另外一种思路

可能看到这儿,有人会觉得上面提到的方法稍显麻烦,毕竟我们需要先生成数十张静态的图表,要是电脑的磁盘空间有点紧张的话,或者还没有这样的一个地方来存放这数十张的图表。于是乎就会疑问道,是不是可以一步到位的来。

当然也是可以的,例如我们打算绘制1950年到2020年不同年龄阶段的人口比例分布图,首先第一步在于我们先要绘制1950年,也就是起始年,该年不同年龄阶段的人口比例分布图,代码如下

fig, (ax1, ax2) = plt.subplots(1, 2, sharey = True)
   
df = data[data.Year == 1955]

y_pos = [i for i in range(len(df[df.Sex == 'Male']))]
male = ax1.barh(y_pos, df[df.Sex == 'Male'].percent, label = 'Male',
               tick_label = df[df.Sex == 'Male'].AgeGrp)
female = ax2.barh(y_pos, df[df.Sex == 'Female'].percent, label = 'Female', 
                  color = 'C1', tick_label = df[df.Sex == 'Male'].AgeGrp)

ax1.invert_xaxis()
fig.suptitle('.......')
fig.supxlabel('....... (%)')
fig.legend(bbox_to_anchor = (0.9, 0.88), loc = 'upper right')
ax1.set_ylabel('Age Groups')

output

766029dfb166ac0f81205e92e48474ea.png

然后我们自定义一个绘制图表的函数,其中参数为年份,目的在于通过年份来筛选出相对应的数据并且绘制出相对应的图表

def run(year):
    # 通过年份来筛选出数据
    df = data[data.Year == year]
    # 针对不同地性别来绘制
    total_pop = df.Value.sum()
    df['percent'] = df.Value / total_pop * 100
    male.remove()
    y_pos = [i for i in range(len(df[df.Sex == 'Male']))]
    male.patches = ax1.barh(y_pos, df[df.Sex == 'Male'].percent, label = 'Male', 
                     color = 'C0', tick_label = df[df.Sex == 'Male'].AgeGrp)
    female.remove()
    female.patches = ax2.barh(y_pos, df[df.Sex == 'Female'].percent, label = 'Female',
                 
                 color = 'C1', tick_label = df[df.Sex == 'Female'].AgeGrp)

    text.set_text(year)
    return male#, female

然后我们调用animation.FuncAnimation()方法,

ani = animation.FuncAnimation(fig, run, years, blit = True, repeat = True, 
                              interval = 600)
ani.save('文件名.gif')

output

22d6d6c8d0afd1715f6893b8f94e3121.gif

这样就可以一步到位生成gif格式的图表,避免生成数十张繁多地静态图片了。

将若干张gif动图放置在一张大图当中

最后我们可以将若干张gif动图放置在一张大的图表当中,代码如下

import matplotlib.animation as animation

# 创建一个新的画布
fig, (ax, ax2, ax3) = plt.subplots(1, 3, figsize = (10, 3))

ims = []
for year in years:
    im = ax.imshow(plt.imread(f'文件1{year}.jpeg'), animated = True)
    im2 = ax2.imshow(plt.imread(f'文件2{year}.jpeg'), animated = True)
    im3 = ax3.imshow(plt.imread(f'文件3{year}.jpeg'), animated = True)
    ims.append([im, im2, im3])

ani = animation.ArtistAnimation(fig, ims, interval=600)
ani.save('comparison.gif')

output

25c012c039e7ffddf8f8047e78a8498a.gif


 
推荐阅读:
入门: 最全的零基础学Python的问题  | 零基础学了8个月的Python  | 实战项目 |学Python就是这条捷径
干货:爬取豆瓣短评,电影《后来的我们》 | 38年NBA最佳球员分析 |   从万众期待到口碑扑街!唐探3令人失望  | 笑看新倚天屠龙记 | 灯谜答题王 |用Python做个海量小姐姐素描图 |碟中谍这么火,我用机器学习做个迷你推荐系统电影
趣味:弹球游戏  | 九宫格  | 漂亮的花 | 两百行Python《天天酷跑》游戏!
AI: 会做诗的机器人 | 给图片上色 | 预测收入 | 碟中谍这么火,我用机器学习做个迷你推荐系统电影
小工具: Pdf转Word,轻松搞定表格和水印! | 一键把html网页保存为pdf!|  再见PDF提取收费! | 用90行代码打造最强PDF转换器,word、PPT、excel、markdown、html一键转换 | 制作一款钉钉低价机票提示器! |60行代码做了一个语音壁纸切换器天天看小姐姐!|

年度爆款文案

点阅读原文,看B站我的视频!

Python Pygame|实现GIF(gif)动图的加载和降帧【源码+解析】 本文详细介绍了在Pygame中实现GIF动画播放的方法。首先需要准备透明背景的GIF素材,使用Pillow库对GIF进行解帧处理,将各帧保存为PNG格式。然后通过pygame.image.load()加载所有帧到列表中,在精灵类的update()方法中循环播放帧序列。针对游戏高帧率导致动画过快的问题,提出了降帧解决方案,通过调整帧率参数使动画播放更加自然。文章提供了完整的实现代码,为Python游戏开发中处理GIF动画提供了实用参考方案。 阅读详情

相关推荐

AS5600磁编码器IIC通信与角度读取实战指南

本文提供了AS5600磁编码器通过IIC通信协议实现高精度角度读取的完整实战指南。详细解析了硬件连接要点、IIC通信时序、Arduino与STM32平台驱动代码,并分享了多圈测量、噪声滤波等进阶应用与避坑技巧,帮助开发者快速将这款非接触式角度传感器集成到电机控制、旋钮等项目中。

weixin_29172201的博客 243

python生成GIF动画

python生成GIF动画

Q_Q_JY的博客 484

模拟电子技术课设-压控信号发生器

正弦波产生电路的目的就是使电路产生一定频率和幅度的正弦波,我们一般在放大电路中引入正反馈,并创造条件,使其产生稳定可靠的振荡。由于图2.3-1所示电路中存在RC电路和积分电路两个延迟环节,在实用电路中,将它们“合二为一”,即去掉方波发生电路中的RC回路,使积分运算电路即作为延迟环节,又作为方变三角波电路,滯回比较器和积分运算电路的输出互为另一个电路的输入。接着对各单元电路的工作原理进行了分析,由直流稳压电源电路提供所需电压,文氏振荡器产生正弦波,滞回比较器产生方波,滞回比较器与积分器连接产生三角波。

Sulfurone的博客 5324

用 python 制作无损 GIF 动图

先讲一讲整理的目标挑选喜欢的照片用python制作GIF图动图太大了,对它无损压缩。

m0_59596937的博客 1182

PC微信逆向:破解聊天记录文件!_读取别人pc微信msg文件

本文详细介绍了PC版微信数据库的解密方法,总结了前人经验并补充了关键细节。通过OllyDbg调试工具从微信内存中获取32字节加密密钥,使用C++结合OpenSSL库实现解密程序。重点解决了开发环境配置问题,包括Visual Studio项目设置和OpenSSL库的版本适配,将原本固定的数据库路径改为参数化输入,提高了工具的通用性。该方案为电子取证中的微信数据提取提供了完整的技术路径,避免了研究者重复探索已解决的问题。

zz96405784848的博客 9756

硬盘dma读写过程

保护模式中,pci上的硬盘dma读写方法

480

短短几行Python代码制作的GIF动图

短短几行Python代码制作的GIF动图

Python单行客的博客 4395

计算机网络自顶向下(第八版)第一章课后习题

电路交换网络具有以下优点:资源独占性,在建立连接时,电路交换网络为通信双方独占一条物理路径,不会受到其他用户的影响。低时延,由于建立了专用路径,数据传输时延较小,适合对时延敏感的应用,如实时语音和视频通信。数据链路层:提供节点之间可靠的数据传输,主要任务是错误检测和纠正,以及数据帧的传输和访问控制。移动蜂窝网络:如4G LTE和5G,通过移动基站提供的无线信号实现移动设备的互联网接入。网络层:负责数据包的路由和转发,主要任务是通过网络选择最佳路径,进行流量控制和拥塞控制。手机,服务器,路由器,电脑;

hiahiakk的博客 2256

[数据分析与可视化] 基于Python绘制简单动图

动画是一种高效的可视化工具,能够提升用户的吸引力和视觉体验,有助于以富有意义的方式呈现数据可视化。本文的主要介绍在Python中两种简单制作动图的方法。其中一种方法是使用matplotlib的Animations模块绘制动图,另一种方法是基于Pillow生成GIF动图。

You and Me 4647

全球AI算力最强公司分析报告

全球AI算力最强公司分析报告显示,Google凭借自研TPU技术和庞大数据中心网络位居榜首,拥有约100万至150万块等效H100 GPU算力。微软、Meta和亚马逊紧随其后,分别拥有75万、55万和25万块等效H100 GPU。中国企业中,百度、阿里巴巴和腾讯表现突出,华为在国产AI芯片领域领先。技术指标上,NVIDIA H100相比A100性能显著提升,但功耗也大幅增加。未来AI算力需求将持续激增,预计2028年全球市场将超2000亿美元。新兴挑战者如xAI可能改变竞争格局。

MyySophia的博客 5714

车载测试实战:adb logcat日志高效抓取与问题定位技巧

本文详细介绍了车载测试中adb logcat日志的高效抓取与问题定位技巧。作为车载测试的“第一现场”,adb logcat能实时、精准地抓取系统与应用日志,是定位应用崩溃、ANR及功能异常等问题的关键工具。文章从环境搭建、核心命令组合拳到实战分析与自动化脚本,提供了完整的操作指南,帮助测试人员快速掌握这一必备技能,大幅提升问题排查效率。

ii567的博客 1039

CJQT 完整指南:仓颉语言驱动 Qt 的跨平台GUI开发实战

CJQT 是基于仓颉语言的 Qt 绑定库,将 Qt 原生组件封装为仓颉风格 API,支持 64 位 Windows、Linux 与 macOS,适合想用仓颉做跨平台GUI、不深入 C++ 的桌面应用开发者。 ## 先睹为快:CJQT 示例应用一览 仓库的 example/ 目录内置三个可直接构建运行的桌面应用,运行截图与架构图随 doc/ 目录提供: - **俄罗斯方块**:自定义绘图、键盘

gitblog_00105的博客 810

【WebRTC】【Unity】Unity Web RTC1-Unity中简单实现远程画面

平台:基本常用平台包括安卓,苹果(max和IOS),Windows64,Linux都行。10. 注意,如果从移动设备浏览器连接服务,信令服务器的SSL证书一定要先设好。想要在Unity中实现实时远程桌面,找到了Render Streaming这个手段,本篇介绍相应的使用方法和实例。8. 打开电脑浏览器,地址栏输入http://127.0.0.1,点击Receiver Sample。新建Unity项目,模板选Third Person,Project Name随意。启动App,控制台出现如下信息表示成功。

每日出拳老爷子的博客 2518

这里有个Python模块,绘制出超级惊艳的可视化动图

今天小编给大家介绍一款可视化模块,使用它可以绘制出十分惊艳的动图效果,那么当然第一步我们首先是要安装一下该模块,通过pip命令行来安装pipinstallipyvizzu牛刀小试我们首先来简单地使用该模块来绘制一张动图,用Pandas导入数据集,代码如下importpandasaspd fromipyvizzuimportChart,Data,Conf...

Python数据之道 298

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

精选3种制作竞赛动图的方法,收藏

上面的两个动图,就是条形竞赛图和折线竞赛图,今天我们就来看看都有哪些方便的方法来制作呢 在线制作 有很多在线的网站都可以制作上述类似的竞赛图,下面我们来介绍萝卜哥常用的两个 flourish 首先推荐一个国外的网站 -- flourish,该网站可以在线制作大量精美的图表,其中动图图表尤为强大 有大量的例子供我们选择 还有如下条形竞赛图例子,是不是很惊艳 条形竞赛图也是完全支持的,下图就是制作页面,我们可以上传数据,并自由的设置图表的各项参数 唯一美中不足的就是导出动图需...

大模型教程的博客 524

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

谁说程序员不懂浪漫?这款神器让你3秒做出爆款Slack动图,圈粉无数!

摘要:SlackGIFCreator是一款GitHub开源工具,让用户用简单代码即可创建个性化动画表情。该工具支持多种尺寸和20+种动画效果,自动优化文件大小,适合团队沟通场景。即使没有设计基础,通过粗线条、鲜明配色等技巧也能制作专业动图。高级玩家可组合不同效果,并通过降帧、减色等技巧优化文件。项目旨在帮助用户用创意动图提升数字沟通的趣味性,打造独特的团队文化语言。

mfy201233的博客 1033

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

值得收藏,这6种制作竞赛动图的方法妙不可言

AI因你而升温,记得加个星标哦! 大家好,下面的两个动图,就是条形竞赛图和折线竞赛图,今天我们就来看看有哪些方便的方法来制作呢,文末提供技术交流群 干货推荐 Python数据分析三剑客真香啊,还有高清思维导图 绝了,这6个精挑细选的机器学习资料简直太香了 Python编程从入门到实战,看这一篇足够了 1、在线制作 有很多在线的网站都可以制作上述类似的竞赛图,下面我们来介绍常用的两个 flourish 首先推荐一个国外的网站 – flourish,该网站可以在线制作大量精美的图表,其中动图图表尤为.

Python数据挖掘 2257

精选6种制作酷炫动图的方法,收藏!

上面的两个动图,就是条形竞赛图和折线竞赛图,今天我们就来看看都有哪些方便的方法来制作呢在线制作有很多在线的网站都可以制作上述类似的竞赛图,下面我们来介绍萝卜哥常用的两个flourish首先...

张俊红的个人博客 1084

揭秘两种绘制条形竞赛图的方法,都很惊艳!

你好,我是 zhenguo下面是2016年到2021年中国市场手机出货量前5排名的条形竞赛图,这我这周末绘制的:若觉得还不错,给视频点个赞呀我们如何绘制出这种条形竞赛图呢?我推荐两种方法...

算法channel 1524

Python实战:使用matplotlib绘制动态孵化演示图

数据可视化是理解复杂数据规律的核心手段,尤其在工程实践和生物统计场景中,将时间序列数据转化为直观动态图像能显著提升信息传递效率。Python凭借其强大的科学计算生态,成为数据分析与可视化的首选语言。通过matplotlib库,开发者可以灵活构建多子图联动、自定义事件标注以及动画帧推进的演示系统,实现对温度、湿度等环境参数的实时模拟与趋势展示。结合数据清洗、平滑处理与颜色映射,图像既能保留细节又具备专业质感。该技术广泛应用于农业物联网监控、教学演示、科研汇报及生产环境看板搭建等场景,帮助研究人员和从业者快速洞

weixin_31742871的博客 137

如何快速制作精美动画:matplotlib GIF扩展完整指南

想要在数据可视化中创建引人注目的动画效果吗?matplotlib GIF扩展库为你提供了简单高效的解决方案。这个强大的Python库专门用于将matplotlib图表转换为动态GIF图像,让数据故事更加生动有趣。 ## 🚀 为什么选择matplotlib GIF扩展? **简单易用**是这款工具的最大特点。只需几行代码,你就能将静态图表转换为流畅的动画。无论是展示数据变化趋势,还是创建教学演

gitblog_00971的博客 430
上一篇: 哈哈哈!史上最牛叉的程序员!
下一篇: 霸气!不让居家办公了?GAN 之父愤而从苹果离职!
菜鸟学Python
博客等级 码龄9年 8062粉丝 571原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值