Python数据可视化教程:利用pyecharts绘制疫情地图【附案例】

目录

前言

一、导包

二、准备地图数据

三、准备数据

四、添加数据

五、设置全局选项

六、绘图

七、全国疫情地图案例

7.1  数据展示

7.2  具体操作与示例代码

八、绘制其他省份疫情数据地图


前言

Pyecharts 是一个基于 ECharts 的 Python 数据可视化库,允许用户使用 Python 语言生成各种类型的交互式图表和数据可视化

ECharts 是百度开源的一个数据可视化 JS 库,而 Pyecharts 则是 ECharts 的 Python 封装,使得在 Python 中使用 ECharts 变得更加方便。Pyecharts 提供了一组简单而灵活的 API,使用户能够轻松地创建各种图表,包括但不限于折线图、柱状图、散点图、饼图、地图等。通过 pyecharts,用户可以使用 Python 语言处理和准备数据,然后使用简洁的代码生成交互式的图表,这些图表可以嵌入到 Web 应用程序中或保存为静态文件。

  1. 安装与配置:Pyecharts的安装相对简单,可以通过pip进行安装。安装完成后,用户可以根据需要对图表进行个性化配置。
  2. 丰富的图形类型:Pyecharts支持多种图表类型,包括但不限于柱状图、折线图、饼图等,满足不同的数据展示需求。
  3. 交互式图表:由于Pyecharts基于ECharts,所以生成的图表具有良好的交互性,用户可以通过鼠标和触摸等操作与图表进行交互。
  4. 适用多种场景:Pyecharts可以在不同的Web框架中使用,如Jupyter Notebook、Flask、Django等,使得在Web应用中展示图表变得非常方便。
  5. 易于使用:Pyecharts提供了简洁明了的API,即使是没有编程背景的用户也能通过简单的学习快速上手绘制图表

一、导包

from pyecharts.charts import Map
from pyecharts.options import VisualMapOpts

二、准备地图数据

map = Map()

三、准备数据

data = [
    ("北京市", 99),
    ("上海市", 199),
    ("湖南省", 299),
    ("台湾省", 399),
    ("广东省", 499),
]

四、添加数据

"china"代表使用中国地图。

map.add("测试地图",data, "china")

五、设置全局选项

map.set_global_opts(
    visualmap_opts=VisualMapOpts(
        is_show=True,    # 是否现实颜色
        is_piecewise=True,  # 手动设置范围
        pieces=[
            {"min":1, "max":9, "lable":"1-9", "color":"#CCFFFF"},
            {"min":10, "max":99, "lable":"10-99", "color":"#FF6666"},
            {"min":100, "max":500, "lable":"100-500", "color":"#990033"},
        ]
    )
)

六、绘图

map.render()

运行结果:

七、全国疫情地图案例

7.1  数据展示

数据文本展示:

 数据格式化展示:

7.2  具体操作与示例代码

通过读取文件,将json数据转换为python数据,先获取到省份数据列表和确诊人数,再将省份与确诊人数组装到数据列表;后创建地图对象,将数据添加进去,就可以绘制图像。

import json
from pyecharts.charts import Map
from pyecharts.options import TitleOpts,VisualMapOpts
# 读取数据文件
f = open("D:\pydaima\8day速成python\shuju\疫情.txt", "r", encoding="UTF-8")
data = f.read()
# 关闭文件
f.close()

# 取到各省数据
yq_data = json.loads(data)  # 将json转换为python字典
sf_data_list = yq_data["areaTree"][0]["children"]   # 得到省份数据列表
# 组装省名称与数据的列表
data_list = []  # 绘制使用的数据列表
# 各省份全称列表
count = 0
sf_name_list = ['台湾省', '江苏省', '云南省', '河南省', '上海市', '湖南省', '湖北省', '广东省', '香港特别行政区', '福建省', '浙江省', '山东省', '四川省', '天津市', '北京市', '陕西省', '广西壮族自治区', '辽宁省', '重庆市', '澳门特别行政区', '甘肃省', '山西省', '海南省', '内蒙古自治区', '吉林省', '黑龙江省', '宁夏回族自治区', '青海省', '江西省', '贵州省', '西藏自治区', '安徽省', '河北省', '新疆维吾尔自治区']
for sf_data in sf_data_list:
    sf_name = sf_name_list[count]   # 省份名称
    count += 1
    sf_confirm = sf_data["total"]["confirm"]    # 确诊人数
    data_list.append((sf_name, sf_confirm))
    print(sf_name)

# 创建地图对象
map = Map()
# 添加数据
map.add("各省份确诊人数", data_list, "china")

# 设置全局选项
map.set_global_opts(
    title_opts=TitleOpts(title="全国疫情地图"),
    visualmap_opts=VisualMapOpts(
        is_show=True,   # 是否显示
        is_piecewise=True,
        pieces=[
            {"min":1, "max":499, "lable": "1-499人", "color":"#d1db85"},
            {"min":500, "max":999, "lable": "500-999人", "color":"#f9d80b"},
            {"min":1000, "max":4999, "lable": "1000-4999人", "color":"#f9a90b"},
            {"min":5000, "max":9999, "lable": "5000-9999人", "color":"#f9720b"},
            {"min":10000, "max":49999, "lable": "10000-49999人", "color":"#f90b6d"},
            {"min":50000, "lable": "50000+", "color":"#f90b0b"},
        ]
    )
)
# 绘图
map.render("全国疫情地图.html")

运行结果如下:

八、绘制其他省份疫情数据地图

绘制省份地图,只需将省份的各市的数据,并将map.add()里的参数改为你想使用的省份即可,如绘制广东的疫情数据地图。

以下为示例代码:

"""
演示绘制广东疫情地图
"""
import json
from pyecharts.charts import Map
from pyecharts.options import TitleOpts, VisualMapOpts
# 读取数据文件
f = open("D:\pydaima\8day速成python\shuju\疫情.txt", "r", encoding="UTF-8")
data = f.read()
# 关闭文件
f.close()

# 读取广东所有数据
# json转换为python字典
data_dict = json.loads(data)
cities_hn_data = data_dict['areaTree'][0]['children'][7]['children']


# 准备数据为元组并嵌入list
data_list = []
for citi_data in cities_hn_data:
    citi_name = citi_data['name'] + "市"
    citi_confirm = citi_data['total']['confirm']
    data_list.append((citi_name,citi_confirm))



# 创建地图对象
map = Map()
map.add("广东省疫情分布",data_list, "广东")

# 设置全局选项
map.set_global_opts(
    title_opts=TitleOpts(title="广东省疫情"),
    visualmap_opts=VisualMapOpts(
        is_show=True,   # 是否显示
        is_piecewise=True,  # 是否分段
        pieces=[
            {"min": 1, "max": 49, "lable": "1-49人", "color": "#d1db85"},
            {"min": 50, "max": 99, "lable": "50-99人", "color": "#f9d80b"},
            {"min": 100, "max": 149, "lable": "100-149人", "color": "#f9a90b"},
            {"min": 150, "max": 199, "lable": "150-199人", "color": "#f9720b"},
            {"min": 200, "max": 249, "lable": "200-249人", "color": "#f90b6d"},
            {"min": 250, "lable": "250+", "color": "#f90b0b"},
        ]
    )
)

# 绘图
map.render("广东疫情分布情况.html")

运行结果:

此外,Pyecharts 具有丰富的图表类型,包括柱状图、箱形图、散点图、漏斗图、仪表盘、地理坐标系图表等,满足不同的数据展示需求。同时,它还支持生成3D图表,增加了可视化的立体感和互动性。

总的来说,Pyecharts 是一个强大的数据可视化工具,适用于需要进行数据分析和展示的Python开发者和数据分析师。

作者:星星法术嗲人

物联沃分享整理
物联沃-IOTWORD物联网 » Python数据可视化教程:利用pyecharts绘制疫情地图【附案例】

发表回复