您现在的位置是:首页 >
当前栏目
通过Pyecharts绘制可视化地球竟然如此简单!
简单 通过 可视化 绘制 地球 如此 竟然 Pyecharts
2023-06-13 09:11:15 时间
今天我们使用 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:
我们选取0608这一天的数据,可以看到 total_cases 字段就是国家当前的累计总确诊人数
下面就提取国家和确诊人数
covid_data = df_new[['location', 'total_cases']].values.tolist()
Output:
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()
这样我们得到如下全球各国新冠确诊人数分布图
部署为 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
文件,也会在浏览器正常展示地球图了
至于如何将本地 Web 应用部署到公网上,我们在后面的文章中再介绍吧!
好了,这就是今天分享的全部内容
相关文章
- 通过ActionContext获取request session application 以及ActionContext的简单解析「建议收藏」
- laravel+Redis简单实现队列通过压力测试的高并发处理
- three.js创建简单的3D机房(1) 创建机柜模型-2
- 【python实操】如何通过简单拖拽直接开发软件,避免手写界面布局
- 2023-04-15:ffmpeg的filter_audio.c的功能是生成一个正弦波音频,然后通过简单的滤镜链,最后输出数据的MD5校验和。请用go语言改写。
- Linux修改主机名的简单方法
- Linux挂载光盘:简单却强大的mount命令(linux挂载光盘的命令)
- Redis实现购物车的简单操作(redis购物车实现)
- 服务器通过外网连接Linux服务器的简单步骤(外网连linux)
- 通过CVS导入Oracle:快速、简单、可靠(cvs导入oracle)
- 连接数据库Shell使用MySQL连接数据库的简单方法(shell通过mysql)
- Linux下创建文件的简单指令(linux创建文件指令)
- 『重启MySQL服务:简单几步解决』(怎么重启mysql服务)
- Oracle驱动包:灵活连接数据库的简单方式(oracle驱动包)
- 网络安装Linux,简单快捷无忧(通过网络安装linux)
- 器如何通过CMD简单连接MySQL服务器(cmd连接mysql服务)
- 通过bat简单快捷修改mysql密码(bat修改mysql密码)
- Oracle数据库通过ISQL使连接变得更加简单(isql连接oracle)
- 如何简单有效地清除Redis缓存数据(删除redis缓存数据)
- Oracle字段加和实现简单的数据运算(oracle俩字段相加)
- Asp中通过简单的例子理解下ByVal和ByRef的用法
- 通过perl实现一个简单的NIDS
- 通过js简单实现将一个文本内容转译成加密文本
- C#获取局域网MAC地址的简单实例
- php启动时报错的简单解决方法