如何用 Python 让你的 PPT 数据动起来?

用 Python 让你的 PPT 数据动起来 在读技术博客的过程中,我们会发现那些能够把知识、成果讲透的博主很多都会做动态图表。他们的图是怎么做的?难度大吗? 这篇文章就介绍了 Python 中一种简单的动态图表制作方法。 数据暴增的年代,数据科学家、分析师在被要求对数据有更深的理解与分析的同时,还需要将结果有效地传递给他人。如何让目标听众更直观地理解?当然是将数据可视化啊,而且最好是动态可视化。 本文将以线型图、条形图和饼图为例,系统地讲解如何让你的数据图表动起来。 这些动态图表是用什么做的? 接触过数据可视化的同学应该对 Python 里的 M 阅读详情

点击上方“编程派”,选择设为“设为星标”

优质文章,第一时间送达!

作者:Costas Andreou

机器之心编译

参与:Jamin、张倩

在读技术博客的过程中,我们会发现那些能够把知识、成果讲透的博主很多都会做动态图表。他们的图是怎么做的?难度大吗?这篇文章就介绍了 Python 中一种简单的动态图表制作方法。

数据暴增的年代,数据科学家、分析师在被要求对数据有更深的理解与分析的同时,还需要将结果有效地传递给他人。如何让目标听众更直观地理解?当然是将数据可视化啊,而且最好是动态可视化。

本文将以线型图、条形图和饼图为例,系统地讲解如何让你的数据图表动起来。

这些动态图表是用什么做的?

接触过数据可视化的同学应该对 Python 里的 Matplotlib 库并不陌生。它是一个基于 Python 的开源数据绘图包,仅需几行代码就可以帮助开发者生成直方图、功率谱、条形图、散点图等。这个库里有个非常实用的扩展包——FuncAnimation,可以让我们的静态图表动起来。

FuncAnimation 是 Matplotlib 库中 Animation 类的一部分,后续会展示多个示例。如果是首次接触,你可以将这个函数简单地理解为一个 While 循环,不停地在 “画布” 上重新绘制目标数据图。

如何使用 FuncAnimation?

这个过程始于以下两行代码:

import matplotlib.animation as ani

animator = ani.FuncAnimation(fig, chartfunc, interval = 100)

从中我们可以看到 FuncAnimation 的几个输入:

  • fig 是用来 「绘制图表」的 figure 对象;

  • chartfunc 是一个以数字为输入的函数,其含义为时间序列上的时间;

  • interval 这个更好理解,是帧之间的间隔延迟,以毫秒为单位,默认值为 200。

这是三个关键输入,当然还有更多可选输入,感兴趣的读者可查看原文档,这里不再赘述。

下一步要做的就是将数据图表参数化,从而转换为一个函数,然后将该函数时间序列中的点作为输入,设置完成后就可以正式开始了。

在开始之前依旧需要确认你是否对基本的数据可视化有所了解。也就是说,我们先要将数据进行可视化处理,再进行动态处理。

按照以下代码进行基本调用。另外,这里将采用大型流行病的传播数据作为案例数据(包括每天的死亡人数)。

import matplotlib.animation as ani
import matplotlib.pyplot as plt
import numpy as np
import pandas as pdurl = 'https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_deaths_global.csv'
df = pd.read_csv(url, delimiter=',', header='infer')df_interest = df.loc[
    df['Country/Region'].isin(['United Kingdom', 'US', 'Italy', 'Germany'])
    & df['Province/State'].isna()]df_interest.rename(
    index=lambda x: df_interest.at[x, 'Country/Region'], inplace=True)
df1 = df_interest.transpose()df1 = df1.drop(['Province/State', 'Country/Region', 'Lat', 'Long'])
df1 = df1.loc[(df1 != 0).any(1)]
df1.index = pd.to_datetime(df1.index)

绘制三种常见动态图表

绘制动态线型图

如下所示,首先需要做的第一件事是定义图的各项,这些基础项设定之后就会保持不变。它们包括:创建 figure 对象,x 标和 y 标,设置线条颜色和 figure 边距等:

import numpy as np
import matplotlib.pyplot as pltcolor = ['red', 'green', 'blue', 'orange']
fig = plt.figure()
plt.xticks(rotation=45, ha="right", rotation_mode="anchor") #rotate the x-axis values
plt.subplots_adjust(bottom = 0.2, top = 0.9) #ensuring the dates (on the x-axis) fit in the screen
plt.ylabel('No of Deaths')
plt.xlabel('Dates')

接下来设置 curve 函数,进而使用 .FuncAnimation 让它动起来:

def buildmebarchart(i=int):
    plt.legend(df1.columns)
    p = plt.plot(df1[:i].index, df1[:i].values) #note it only returns the dataset, up to the point i
    for i in range(0,4):
        p[i].set_color(color[i]) #set the colour of each curveimport matplotlib.animation as ani
animator = ani.FuncAnimation(fig, buildmebarchart, interval = 100)
plt.show()

动态饼状图

可以观察到,其代码结构看起来与线型图并无太大差异,但依旧有细小的差别。

import numpy as np
import matplotlib.pyplot as pltfig,ax = plt.subplots()
explode=[0.01,0.01,0.01,0.01] #pop out each slice from the piedef getmepie(i):
    def absolute_value(val): #turn % back to a number
        a  = np.round(val/100.*df1.head(i).max().sum(), 0)
        return int(a)
    ax.clear()
    plot = df1.head(i).max().plot.pie(y=df1.columns,autopct=absolute_value, label='',explode = explode, shadow = True)
    plot.set_title('Total Number of Deaths\n' + str(df1.index[min( i, len(df1.index)-1 )].strftime('%y-%m-%d')), fontsize=12)import matplotlib.animation as ani
animator = ani.FuncAnimation(fig, getmepie, interval = 200)
plt.show()

主要区别在于,动态饼状图的代码每次循环都会返回一组数值,但在线型图中返回的是我们所在点之前的整个时间序列。返回时间序列通过 df1.head(i) 来实现,而. max()则保证了我们仅获得最新的数据,因为流行病导致死亡的总数只有两种变化:维持现有数量或持续上升。

df1.head(i).max()

动态条形图

创建动态条形图的难度与上述两个案例并无太大差别。在这个案例中,作者定义了水平和垂直两种条形图,读者可以根据自己的实际需求来选择图表类型并定义变量栏。

fig = plt.figure()
bar = ''def buildmebarchart(i=int):
    iv = min(i, len(df1.index)-1) #the loop iterates an extra one time, which causes the dataframes to go out of bounds. This was the easiest (most lazy) way to solve this :)
    objects = df1.max().index
    y_pos = np.arange(len(objects))
    performance = df1.iloc[[iv]].values.tolist()[0]
    if bar == 'vertical':
        plt.bar(y_pos, performance, align='center', color=['red', 'green', 'blue', 'orange'])
        plt.xticks(y_pos, objects)
        plt.ylabel('Deaths')
        plt.xlabel('Countries')
        plt.title('Deaths per Country \n' + str(df1.index[iv].strftime('%y-%m-%d')))
    else:
        plt.barh(y_pos, performance, align='center', color=['red', 'green', 'blue', 'orange'])
        plt.yticks(y_pos, objects)
        plt.xlabel('Deaths')
        plt.ylabel('Countries')animator = ani.FuncAnimation(fig, buildmebarchart, interval=100)plt.show()

在制作完成后,存储这些动态图就非常简单了,可直接使用以下代码:

animator.save(r'C:\temp\myfirstAnimation.gif')

感兴趣的读者如想获得详细信息可参考:https://matplotlib.org/3.1.1/api/animation_api.html。

原文链接:https://towardsdatascience.com/learn-how-to-create-animated-graphs-in-python-fce780421afe

回复下方「关键词」,获取优质资源

回复关键词「 pybook03」,立即获取主页君与小伙伴一起翻译的《Think Python 2e》电子版
回复关键词「入门资料」,立即获取主页君整理的 10 本 Python 入门书的电子版
回复关键词「m」,立即获取Python精选优质文章合集
回复关键词「book 数字」,将数字替换成 0 及以上数字,有惊喜好礼哦~
题图:pexels,CC0 授权。

好文章,我在看❤️

Python实现PowerPoint(PPT/PPTX)到PDF的批量转换 本文介绍了使用Python将PowerPoint演示文稿(PPT、PPTX等格式文件)转换为PDF文件,如何在转换时设置页面大小,以及如何转换单页幻灯片为PDF文件。同时,本文还提供了一个免费在线转换工具,支持将各种文件转换为PDF文件并下载保存。 阅读详情

相关推荐

使用Python自动写PPT

需求 有一个题库: 前四个工作表属于必答题。 按如下顺序制作每一张PPT: 必答题-1-乐园销售【题目】 必答题-1-乐园销售【答案标红】 必答题-1-顾客服务【题目】 必答题-1-顾客服务【答案标红】 必答题-1-综合管理【题目】 必答题-1-综合管理【答案标红】 必答题-1-设备维保【题目】 必答题-1-设备维保【答案标红】 必答题-2-乐园销售【题目】 必答题-2-乐园销售【答案标红】 必答题-2-顾客服务【题目】 必答题-2-顾客服务【答案标红】 必答题-2-综合管理【题目】 必答题-2-综合管理

小小明-代码实体的专栏 2万+

用Python代码画出灰太狼

用python代码画出灰太狼,仅使用turtle库。

qq_54434938的博客 2067

08爬取PPT模板.py

利用Python爬虫爬取PPT模板 用xpath进行数据解析,只是一个小爬虫,作为自己学习爬虫的一个记录而已,无其他用途

通过Python的pptx库操作ppt-替换文本和图片-批量生成任意自定义图片

这是一个全部的脚本,我们知道,ppt有很多个模板,每个模板都有自己设计的精美的样式。那么,如果我们可以替换里面的文字和图片,并保留之前的精美的样式。结合市面上各种精美的ppt模板,就可以通过程序批量生成任何想要的精美图片了。有了图片可以批量根据这些图片生成视频。用于各种自媒体操作。最后的最后由本人水平所限,难免有错误以及不足之处, 屏幕前的靓仔靓女们 如有发现,恳请指出!你轻轻地点了个赞,那将在我的心里世界增添一颗明亮而耀眼的星!

编辑编辑器 4092

Linux安装Oracle sqlplus客户端工具

Linux安装Oracle sqlplus客户端工具

优快云_Nan_Jiang_Li的博客 2777

TCNOpen实现TRDP通信协议(源码编译运行测试)

概述 本文介绍了通过TCNOpen开源源码实现TRDP通信,包括源码下载,开发环境搭建,编译运行,测试。 Linux环境下编译运行TRDP (一) 下载CANOpen源码。 下载地址:https://sourceforge.net/p/tcnopen/trdp/HEAD/tree/ (二) 源码编译 下载源码解压过后,在根目录文件readme-makefile.txt有介绍源码的配置和编译方法。 在trdp/config目录下可以看到包含在linux环境下的编译配置文件LINUX_config;执行”m

fengweibo112的博客 9635

史上最全的Python操作 “PPT” 文档大全,以后写“数据分析报告”靠她了!

↑↑↑关注后"星标"简说Python人人都可以简单入门Python、爬虫、数据分析简说Python严选来源:数据分析与统计学之美 作者:黄伟呢Oneoldw...

简说Python的博客 3471

ExoPlayer硬解码实战:如何绕过系统默认软解码提升播放性能(附完整代码)

本文深入剖析了ExoPlayer默认解码器选择机制的不确定性,并提供了通过自定义MediaCodecSelector强制启用硬解码的完整实战方案。该方案能有效解决因软解码导致的播放卡顿、黑屏花屏及高功耗问题,显著提升Android应用在各种设备上的视频播放性能与稳定性。

weixin_29295541的博客 456

【matplot】matplot 坐标轴标签旋转后依然重叠

ha。

u014088048的博客 645

百度地图街景图像批量获取

由于个人研究需要在最近试了一下使用API获取百度地图街景图片,在此介绍一下基于我个人需求的百度街景批量获取方法,本文以Python编码作为主要方法,如果对零编码工具有需要的可以关注一下UA城市分析小组刚刚发布的街景图片获取工具。 街景图像用作区域细粒度空间指标测度需要解决几个问题。 1. 首先就是调用额度的限制,现在百度对于个人认证开发者每天可用的街景图像调用额度为100张,在不考虑购买额度上限(1万张600元,其实有经费的前提下可以直接考虑钞能力)的情况下动辄几千上万张的爬取数量会大大增加需要爬取的时间周

boycetoon29的博客 1万+

LT8711/LT8712 Type-C转HDMI设计方案|替代LT8711/LT8712芯片|GSV2201可完全替代兼容LT8711/LT8712

LT8711UX是一款高性能C/DP1.2型至HDMI2.0转换器,用于将USB Type-C源或DP1.2源连接到HDMI2.0接收器。该LT8711UX集成了一个DP1.2兼容的接收器,和一个HDMI2.0兼容的发射器。此外,还包括两个CC控制器,用于CC通信,以实现DP Alt模式和功率传输功能,一个用于上游Type-C端口和另一个用于下游端口。

weixin_63518914的博客 1641

python函数ppt_如何用 Python 让你的PPT数据动起来

作者:Costas Andreou机器之心编译参与:Jamin、张倩在读技术博客的过程中,我们会发现那些能够把知识、成果讲透的博主很多都会做动态图表。他们的图是怎么做的?难度大吗?这篇文章就介绍了 Python 中一种简单的动态图表制作方法。数据暴增的年代,数据科学家、分析师在被要求对数据有更深的理解与分析的同时,还需要将结果有效地传递给他人。如何让目标听众更直观地理解?当然是将数据可视化啊,而且...

weixin_36378951的博客 530

【系统架构设计师】2025年下半年真题论文回忆版及写作要点

本文摘要围绕云原生数据库、性能测试、无服务器架构和秒杀场景等关键技术进行论述。云原生数据库通过容器化、微服务和自动化运维实现弹性扩展;性能测试需要规划测试场景并关注响应时间等关键指标;无服务器架构以事件驱动为核心,简化开发流程;秒杀场景需组合运用扩容、缓存、限流等技术应对高并发。这些技术方案为构建现代高可用系统提供了重要参考。

数据知道的博客 6162

python录入数据至ppt_用 Python 让你的 PPT 数据动起来

在读技术博客的过程中,我们会发现那些能够把知识、成果讲透的博主很多都会做动态图表。他们的图是怎么做的?难度大吗?这篇文章就介绍了 Python 中一种简单的动态图表制作方法。数据暴增的年代,数据科学家、分析师在被要求对数据有更深的理解与分析的同时,还需要将结果有效地传递给他人。如何让目标听众更直观地理解?当然是将数据可视化啊,而且最好是动态可视化。本文将以线型图、条形图和饼图为例,系统地讲解如何让...

weixin_39742568的博客 164

PDAF相位对焦原理

pdaf光路图

camerall 1万+

自然语言处理(扩展学习1):Scheduled Sampling(计划采样)与Teacher forcing(教师强制)

作者:安静到无声作者简介:人工智能和硬件设计博士生、优快云与阿里云开发者博客专家,多项比赛获奖者,发表SCI论文多篇。o( ̄▽ ̄)d。

安静到无声 2144

python数字滚动效果_玩转PPT数字滚动,让数据动起来

大数据时代,各类数字充斥着我们生活的方方面面,相较传统印象中平面冷硬的形象,当下数字的展现已向可视化、多样化转变与流行。如何玩转数字,让数字“活”起来、动起来,是不少职场达人展示数据时所在意的。今天,我们就介绍其中一种展现方式——数字滚动。大屏幕上的数字滚动,相信大家或多或少都见过,比起直接呈现最后的数字,滚动的效果可以营造一丝紧张与期待的氛围。其实,数字滚动无需借助什么插件工具,在PPT中就能轻...

weixin_42588555的博客 576

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

如何把饼状图中的饼放大_如何用 Python 让你的 PPT 数据动起来?

点击上方“编程派”,选择设为“设为星标”优质文章,第一时间送达!作者:Costas Andreou机器之心编译参与:Jamin、张倩在读技术博客的过程中,我们会发现那些能够把知识、成果讲透的博主很多都会做动态图表。他们的图是怎么做的?难度大吗?这篇文章就介绍了 Python 中一种简单的动态图表制作方法。数据暴增的年代,数据科学家、分析师在被要求对数据有更深的理解与分析的同时,还需要将结...

weixin_42437067的博客 678

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

如何把饼状图中的饼放大_如何用 Python 让你的PPT数据动起来?

(给Python编程开发加星标,提升编程技能)作者:Costas Andreou 机器之心编译参与:Jamin、张倩在读技术博客的过程中,我们会发现那些能够把知识、成果讲透的博主很多都会做动态图表。他们的图是怎么做的?难度大吗?这篇文章就介绍了 Python 中一种简单的动态图表制作方法。数据暴增的年代,数据科学家、分析师在被要求对数据有更深的理解与分析的同时,还需要将结果有效地传递给...

weixin_39748445的博客 202

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

python多张图片生成ppt_天呐,还能这么玩!用 Python 生成动态 PPT

在工作的过程中,我们会发现那些能够把知识、成果讲透的人很多都会做动态图表。这篇文章就介绍了 Python 中一种简单的动态图表制作方法,这样生成的动图就可以丰富我们的PPT啦~ 数据暴增的年代,数据科学家、分析师在被要求对数据有更深的理解与分析的同时,还需要将结果有效地传递给他人。如何让目标听众更直观地理解?当然是将数据可视化啊,而且最好是动态可视化。本文将以线型图、条形图和饼图为例,系统地讲解如...

weixin_39586683的博客 989

python做动态课件素材_万万没想到,还能这么玩!用 Python 生成动态 PPT

在工作的过程中,我们会发现那些能够把知识、成果讲透的人很多都会做动态图表。这篇文章就介绍了 Python 中一种简单的动态图表制作方法,这样生成的动图就可以丰富我们的PPT啦~数据暴增的年代,数据科学家、分析师在被要求对数据有更深的理解与分析的同时,还需要将结果有效地传递给他人。如何让目标听众更直观地理解?当然是将数据可视化啊,而且最好是动态可视化。本文将以线型图、条形图和饼图为例,系统地讲解如何...

weixin_39761573的博客 188

PPT Master:把任意文档变成可编辑的 PowerPoint 演示,三步上手

PPT Master 是一套开源的 AI 演示文稿生成工作流:把 PDF、Word、网页甚至一个主题交给它,它就在用户本机输出一份原生可编辑的 PPTX 文件(即可以直接在 PowerPoint 里逐元素修改的文件)。全程不用写代码,素材也不会离开本机。 ## 它能帮你做什么 - **文档变完整 deck**:输入一份 40 页的年报 PDF,输出 15 页的演示文稿,分页、论证逻辑、版面都替

gitblog_00028的博客 793

PPT Master完整指南:把文档变成原生可编辑PowerPoint的最快路径

周五下午四点,离向老板交季度汇报只剩两小时,而你手上只有一份三十页的PDF和一堆散落的截图。这时你可以把文件丢给 [PPT Master](https://link.gitcode.com/i/2209b8a8f2dd3a2cbd23b33357fcf60b),它是一个开源工作流:在你本机的 AI 编辑器里读入文档、规划叙事、设计版式,最后导出一个在 PowerPoint 里能逐个对象点击修改的

gitblog_00011的博客 1096

PPT Master AI 生成原生 PowerPoint 完整指南

内容备好了,对着空白模板却不知从何排起?PPT Master 是一款开源的 AI 演示文稿生成工具,能把 PDF、DOCX 或一段文字直接变成原生可编辑的 PowerPoint,几分钟内拿到一份还能继续改的专业 PPT。 ## PPT Master 核心功能一览 - ✨ **产出真正的 PPT 文件**:生成的是原生 PowerPoint,每个文本框、形状、图表都能点开直接改,不是套一层皮的图

gitblog_00025的博客 514

PPT Master 完整指南:3 步把文档变成可编辑的 PowerPoint 演示文稿

PPT Master 是一款免费开源的 AI 演示文稿生成工具,能把 PDF、Word 等文档直接转成**原生可编辑**的 PowerPoint。学生、职场人和内容创作者都能用,几分钟就能拿到一份带图表、动画和语音旁白的 PPT,数据全程留在本地。 ## 你可能正遇到的场景 周五下午,你收到一份 40 页的行业报告,明早 9 点要上会。手工排版至少要 3 小时,图表还得另找数据、逐个调格式。

gitblog_00529的博客 740
上一篇: 强大的 Python 任务自动化工具!invoke 十分钟入门指南
下一篇: SpaceX火箭数据 API 开源,支持 Python
codingpy
博客等级 码龄11年 1873粉丝 104原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值