利用Python制作动态排名图

数据森麟

共 1814字,需浏览 4分钟

 ·

2020-04-09 23:25

fe25cc86050293ff63c7382e8f5a15e6.webp


     作者:刘早起早起


     来源:早起Python



大家好,今天我们要讲的是如何使用Pyecharts制作动态排名变化图?

9f6ea1861154aeb9ff298d7dee643c46.webp

制作这样的一个动态图使用到的是Pyecharts中的TimeLine(时间线轮播图),代码实现起来其实稍有难度,但我希望能通过讲解这样一张动态图的制作过程,来让各位读者可以使用Pyecharts将任何一种图动起来,我们开始吧!




ef746b5bd77e0568a6e2b6a327a224aa.webp

首先我们需要思考一下这样一种动态图的生成逻辑,不就是把每天的数据制作成一张条形图然后轮动吗,OK那我们的数据要整理成啥样呢?一个dataframe,每列是一个国家近20天的数据,还有一个存储20天时间的list?

619c4940af78c0c413a88040269836af.webp

搞定数据之后我们去Pyecharts官方示例网站找到一个类似的图

http://gallery.pyecharts.org/#/Timeline/timeline_bar_with_graphic


2fd783c470371f82b896e2e61d849b48.webp

官网示例代码和效果都给你了,我们要做的就是将这段代码改成我们需要的形式,现在我们将这段代码复制到Notebook中,并修改将图显示在notebook中

2f441d773875326a02814b57f84f0193.webp

接下来我们观察这段代码与图,首先要改的是,把他每次两组变量改为一组变量,然后删掉和修改一些不需要的文字?

be0d1de1073f29e1fde6ecb00ae393bc.webp

上图左边是修改前的代码,右边是代码修改的部分,就不用多做解释了,直接看图,现在我们的图就成了这样?

9051d6de23516f335ec5da5b3ca8d67b.webp

是不是有点意思了,接下来也是稍微有一点难度的部分就是修改坐标轴和对应的数据,这时我们先观察下这段代码如何控制坐标轴和数据

acfe156aa50b78932c711c9538cfb64c.webp


可以看到x轴调用了Faker.choose(),y轴调用了Faker.values()打印我们单独调用一下出来看看

67c95254b4b7988ee88f9e38f380c02b.webp

你看这俩方法每次返回一个list,并且这个list是变化的,并且要注意到他的X写在循环外,所以x轴一直没有变,但y轴的值写在了循环里面,通过这样的方式来让每次生成的图数据不一样。


ef746b5bd77e0568a6e2b6a327a224aa.webp

所以我们接下来的目的就很明确了,因为我们的条形图是有顺序的所以我们需要写两个函数,在生成每一张图的时候,返回一组x轴数据,一组y轴数据,并且是按照顺序排列的,所以可以这么写?

08a030cae8a104490d3a0b28f679d6ab.webp

稍微解释一下修改的地方,get_value()函数就是将df1传进去,再把每一行的数据传出来,k是用来识别调用次数的,这样可以保证每次调用下一行的数据。接着在循环里面,将我们传出来的确诊数量和国家名使用Pandas进行排序并返回两个list,此时这两个list一一对应并且确诊数量是降序排列

此时我们的需求就实现了,用这个X,Y替换掉源代码的X,Y即可

c77ae177411484cb08669af0e2f6b4ee.webp

其实到这里,就已经结束了,点击播放就可以实现轮动了,但接下来可以稍微修改部分代码来调整细节

b25b177f738784521a40539f29f33f2b.webp

上面这两处修改就是调整了每张图的切换时间,自动播放和反转XY轴,此时就大功告成,你的条形图就成功的动起来?

9f6ea1861154aeb9ff298d7dee643c46.webp


ef746b5bd77e0568a6e2b6a327a224aa.webp

以上就是从0到1制作动态条形图的过程,感兴趣的一定要敲一遍代码。注意本文用柱状图示例,但是不管条形图还是饼图还是折线图甚至地图,体现到代码不就是Bar还是Line吗,想制作不同的动态图不就是修改一行代码的事吗。我们再回顾一下刚刚的步骤:思考想要做的图——>从官网找个demo——>观察代码——>修改部分代码——>搞定!学会了吗?


注:本文使用的数据与代码,点击阅读原文即可获取(使用电脑端才可以正常下载),当然鼓励自己尝试一点一点写~


0e58c523dea3f9bf787a62ee6765286e.webp


◆ ◆ ◆  ◆ 




长按二维码关注我们



数据森麟公众号的交流群已经建立,许多小伙伴已经加入其中,感谢大家的支持。大家可以在群里交流关于数据分析&数据挖掘的相关内容,还没有加入的小伙伴可以扫描下方管理员二维码,进群前一定要关注公众号奥,关注后让管理员帮忙拉进群,期待大家的加入。


管理员二维码:



猜你喜欢

 笑死人不偿命的知乎沙雕问题排行榜

 用Python扒出B站那些“惊为天人”的阿婆主!

 全球股市跳水大战,谁最坑爹!

 上万条数据撕开微博热搜的真相!

 你相信逛B站也能学编程吗

浏览 51
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报