Pyecharts绘制可视化地球实现示例

作者:周萝卜 时间:2021-03-18 17:18:48 

今天我们使用 Pyecharts 制作一个地球可视化项目,一起来看看吧

Let’s go!

数据处理

这里我们使用全球新冠感染人数的数据集作为我们的测试数据,先来看看数据的整体情况

import pandas as pd
df = pd.read_csv("owid-covid-data.csv")
df_0608 = df[df['date'] == '2022-06-08']
df_new = df_0608[pd.isna(df_0608['continent']) == False]
df_new

Output:

Pyecharts绘制可视化地球实现示例

我们选取0608这一天的数据,可以看到 total_cases 字段就是国家当前的累计总确诊人数

下面就提取国家和确诊人数

covid_data = df_new[['location', 'total_cases']].values.tolist()

Output:

Pyecharts绘制可视化地球实现示例

Pyecharts 绘图

通过 Pyecharts 绘制地球图,在官网上有很详细的例子,我们直接套用即可

首先导入相关库

import pyecharts.options as opts
from pyecharts.charts import MapGlobe

定义地球图函数并绘制

data = [x for _, x in covid_data]
low, high = min(data), max(data)
c = (
   MapGlobe()
   .add_schema()
   .add(
       maptype="world",
       series_name="World Covid Data",
       data_pair=covid_data,
       is_map_symbol_show=False,
       label_opts=opts.LabelOpts(is_show=False),
   )
   .set_global_opts(
       visualmap_opts=opts.VisualMapOpts(
           min_=low,
           max_=high,
           range_text=["max", "min"],
           is_calculable=True,
           range_color=["lightskyblue", "yellow", "orangered"],
       )
   )
)
c.render_notebook()

这样我们得到如下全球各国新管确诊人数分布图

Pyecharts绘制可视化地球实现示例

部署为 Web 服务

当前我们所有的代码都是运行在 Jupyter 当中的,如果要分享给其他人,并不是十分的方便,我们可以将整体代码部署成一个 Web 服务,这样其他人就可以方便的通过浏览器来查看该地球图了

我们先创建项目目录,命名为 flask_map,再将本地安装的 Pyecharts 目录下的 templates 文件夹拷贝到该目录下,同时再创建 data 文件夹和 main.py 文件,Pyecharts 模板位置如下:

pyecharts.render.templates

我们将数据集 owid-covid-data.csv 放到 data 文件夹下,再编写 main.py 文件

# coding = utf-8
"""
======================
@author:luobo
@time:2022/7/2:14:32
@email:
@File: main.py
======================
"""
from flask import Flask, render_template
from jinja2 import Markup, Environment, FileSystemLoader
from pyecharts.globals import CurrentConfig
# 关于 CurrentConfig,可参考 [基本使用-全局变量]
CurrentConfig.GLOBAL_ENV = Environment(loader=FileSystemLoader("./templates"))
from pyecharts import options as opts
from pyecharts.charts import MapGlobe
import pandas as pd
df = pd.read_csv("data/owid-covid-data.csv")
df_0608 = df[df['date'] == '2022-06-08']
df_new = df_0608[pd.isna(df_0608['continent']) == False]
covid_data = df_new[['location', 'total_cases']].values.tolist()
app = Flask(__name__, static_folder="templates")
def Map_base():
   data = [x for _, x in covid_data]
   low, high = min(data), max(data)
   c = (
       MapGlobe()
           .add_schema()
           .add(
           maptype="world",
           series_name="World Covid Data",
           data_pair=covid_data,
           is_map_symbol_show=False,
           label_opts=opts.LabelOpts(is_show=False),
       )
           .set_global_opts(
           visualmap_opts=opts.VisualMapOpts(
               min_=low,
               max_=high,
               range_text=["max", "min"],
               is_calculable=True,
               range_color=["lightskyblue", "yellow", "orangered"],
           )
       )
   )
   return c
@app.route("/")
def index():
   c = Map_base()
   c.render('templates/Map.html')
   return render_template("Map.html")
if __name__ == "__main__":
   app.run()

这样,当我们启动 Flask 服务器之后,只需要访问根目录(/),就会在 templates 目录下生成 Map.html 文件,也会在浏览器正常展示地球图了

Pyecharts绘制可视化地球实现示例

tup2

至于如何将本地 Web 应用部署到公网上,我们在后面的文章中再介绍吧!

来源:https://juejin.cn/post/7124632143895986183

标签:Pyecharts,绘制,可视化,地球
0
投稿

猜你喜欢

  • xhtml有哪些块级元素

    2009-12-06 11:58:00
  • 利用Python写个摸鱼监控进程

    2022-11-04 10:40:45
  • Python 如何求矩阵的逆

    2021-07-22 23:28:43
  • 网页图片按钮的生成与美化

    2008-12-12 13:03:00
  • python统计中文字符数量的两种方法

    2022-11-16 00:24:08
  • 解决windows下python3使用multiprocessing.Pool出现的问题

    2021-11-03 23:34:37
  • 终端能到import模块 解决jupyter notebook无法导入的问题

    2022-11-19 19:26:29
  • 分析语音数据增强及python实现

    2021-02-02 07:25:43
  • Django 通过JS实现ajax过程详解

    2023-08-17 08:00:46
  • Python流程控制语句的深入讲解

    2023-12-01 00:06:31
  • Python实现破解12306图片验证码的方法分析

    2021-01-28 18:25:34
  • pytorch 更改预训练模型网络结构的方法

    2022-04-02 04:41:19
  • tensorflow 用矩阵运算替换for循环 用tf.tile而不写for的方法

    2021-08-11 11:43:55
  • 浅谈python元素如何去重,去重后如何保持原来元素的顺序不变

    2023-03-07 19:39:32
  • django创建超级用户时指定添加其它字段方式

    2022-08-13 17:24:18
  • 参数传递解决window.open的session变量丢失

    2007-10-22 17:40:00
  • python遗传算法之单/多目标规划问题

    2021-09-09 20:27:24
  • pip install urllib2不能安装的解决方法

    2022-05-27 12:25:13
  • Python函数进阶之迭代器的原理与使用详解

    2023-03-28 09:02:01
  • Python使用captcha制作验证码的实现示例

    2023-04-16 00:49:35
  • asp之家 网络编程 m.aspxhome.com