Python制做动态图

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

                                        

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

                                                                                                        

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

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

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

 

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

 

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

 

 

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

 

 

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

 

 

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

 

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

                                                                                              

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

 

 

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

 

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

 

 

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

 

 

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

 

                                                                                             

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

 

  • 7
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要制作动态网页,你可以使用 Python 的 Web 框架,如 Flask、Django 等。 下面以 Flask 为例,介绍一下制作动态网页的大致步骤: 1. 安装 Flask:在命令行中输入 `pip install flask` 即可安装。 2. 创建一个 Flask 应用:在 Python 文件中导入 Flask,然后创建一个 Flask 对象。代码如下: ``` from flask import Flask app = Flask(__name__) ``` 3. 定义路由:使用 `@app.route()` 装饰器定义路由,将 URL 和对应的函数绑定起来。例如: ``` @app.route('/') def index(): return 'Hello, world!' ``` 这个路由表示当用户访问网站根目录时,将会调用 `index()` 函数返回一个字符串。 4. 编写 HTML 模板:在 Flask 中使用模板引擎来生成 HTML 页面。可以使用 Jinja2 模板引擎,编写 HTML 模板文件。例如: ``` <!doctype html> <html> <head> <title>{{ title }}</title> </head> <body> <h1>{{ headline }}</h1> <p>{{ content }}</p> </body> </html> ``` 在模板中使用 `{{ }}` 来表示需要动态生成的内容。 5. 在路由中渲染模板:在路由函数中使用 `render_template()` 函数来渲染模板,并传递变量。例如: ``` @app.route('/article') def article(): title = 'Python Web Development' headline = 'Welcome to my blog' content = 'Here is my first article' return render_template('article.html', title=title, headline=headline, content=content) ``` 这个路由表示当用户访问 `/article` 时,将会调用 `article()` 函数,渲染 `article.html` 模板,并传递 `title`、`headline`、`content` 变量给模板。 这样就可以利用 Flask 和 HTML 模板引擎制作动态网页了。当然,这只是一个简单的示例,实际上还有很多细节需要处理。如果你对 Flask 感兴趣,可以参考 Flask 官方文档进行学习。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值