如何制作动态数据表,python怎么画动态图
选自《朝向数据科学》
作者:Costas Andreou
机器之心编译
参与:Jamin、张倩
在阅读技术博客的过程中,我们会发现很多能把自己的知识和成果阐述透彻的博主,都能做出动态图表。他们的图片是怎么做出来的?很难吗?本文介绍了一种用Python制作动态图表的简单方法。
在数据爆炸的时代,要求数据科学家和分析师对数据有更深入的理解和分析,同时也需要将结果有效地传递给他人。如何让目标受众更直观的理解?当然是可视化数据,最好是动态可视化。
本文将以线型图、条形图和饼图为例,系统地讲解如何让你的数据图表动起来。
这些动态图表是用什么做的?
接触过数据可视化的同学应该熟悉Python中的Matplotlib库。它是一个基于Python的开源数据绘图包,只需要几行代码就可以帮助开发者生成直方图、功率谱、条形图、散点图等等。这个库中有一个非常实用的扩展包——FuncAnimation,可以让我们的静态图表动起来。
FuncAnimation是Matplotlib库中动画类的一部分,后面会展示几个例子。如果是第一次接触,可以简单地把这个函数理解为While循环,不断地在“画布”上重绘目标数据图。
如何使用 FuncAnimation?
这个过程从下面两行代码开始:
Importmatplotlib。animatonasanianimator=ani。FuncAnimation (FIG,chartfunc,interval=100)从中我们可以看到FuncAnimation的几个输入:
Figure是一个图形对象,用于“绘制图表”;
Chartfunc是以数字为输入的函数,表示时间序列中的时间;
Interval比较好理解,就是帧之间的间隔延迟,单位是毫秒。默认值为200。
这是三个关键输入,当然还有更多可选输入。有兴趣的读者可以查看原文档,这里就不赘述了。
下一步是将数据图参数化并转换成函数,然后将函数时间序列中的点作为输入。设置完成后,就可以正式开始了。
在开始之前,您仍然需要确保对基本的数据可视化有所了解。也就是说,我们需要先将数据可视化,然后再进行动态处理。
根据下面的代码打一个基本的电话。此外,疫情的传播数据将用作病例数据(包括每日死亡人数)。
importmatplotlib . animationasaniimportmatplotlib . pyplotaspltimporttnumpyasnpimportpandas aspdurl= https://raw . githubusercontent . com/CSSEGISandData/新冠肺炎/master/csse _ covid _ 19 _ data/csse _ covid _ 19 _ time _ series/time _ series _ covid 19 _ deaths _ global . CSV df=PD . read _ CSV(URL,delimiter=,,header= infer )df _ interest=df . locisin([联合王国,美国,意大利,德国])df[省/州]。ISNA()]df _ interest . rename(index=lambdax:df _ interest . at[x, Country/Region],in place=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)绘制三种常见动态图表
动态线型图
如下图,首先要做的是定义图表的项,这些基本项在设置后保持不变。包括:创建图形对象、x和y标记、设置线条颜色和图形边距等。
importnumpyasnpimportmatplotlib . pyplotaspltcolor=[ red , green , blue , orange ]fig=PLT . figure()PLT . x ticks(rotation=45,ha=right ,rotation _ mode= anchor )# rotatex-axis valueesplt . subplots _ adjust(bottom=0.2,Top=0.9)# ensuringthedays(onthex-axis)fitinthescreenplt . ylabel( noofdeath )PLT . xlabel( dates))接下来FuncAnimation使其移动:
defbuildmebarchart(I=int):PLT . legend(df1 . columns)p=PLT . plot(df1[:I])。索引,df1[:i]。values)# noteitonlyreturnsthedataset,uptothepointforiinrange(0,4):p[i]。set _ color(color[I])# setthecolourofeachcurveimportmatplotlib . animationasanianimator=ani。FuncAnimation(fig,buildmebarchart,interval=100)PLT . show()动态饼状图
可以观察到它的代码结构看起来和线图没有太大区别,但还是有细微的差别。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。