数据可视化——如何绘制地图

简介: 数据可视化——如何绘制地图


前言

前面我们学习了如何利用提供的数据来对数据进行处理,然后以折线图的形式展现出来,那么今天我将为大家分享如何将提数据以地图的形式展现。

如何绘制地图

前面我们绘制折线图需要用到 pyecharts.charts 模块下的 Line 方法,那么要绘制地图我们需要用到 pyecahrts.charts 模块下的 Map 方法。基本思想跟绘制折线图是相似的,不同的就是绘制折线图使用的数据是列表,列表中的每个元素是 字典 ,而绘制地图的数据也是列表,但每个元素是 元组。

导入模块

from pyecharts.charts import Map

创建空地图

map = Map()

提供测试用例

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

这里需要注意,我们的数据要和地图上的数据保持一致,例如:地图上是北京市,如果我们用北京,就会出问题。

将数据添加进地图中

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

第一个参数是绘制的地图的名称。第二个参数是添加的数据,第三个参数是什么类型的地图,默认是中国地图。

生成带有数据的地图

map.render()

当然这种地图看的很单调,我们同样可以添加一些配置项来更生动的展现数据。

添加配置项

map.set_global_opts(
    title_opts=TitleOpts(title="这是一个测试地图",pos_left="center",pos_bottom="1%"),  # 标题
    visualmap_opts=VisualMapOpts(
        is_show=True,  # 是否显示视觉映射
        is_piecewise=True,  # 是否允许自定义颜色
        pieces=[
            {"min": 1,"max": 99,"label": "1-99","color": "#125616"},
            {"min": 100,"max": 199,"label": "100-199","color": "#121d56"},
            {"min": 200,"max": 299,"label": "200-299","color": "#56124d"},
            {"min": 300,"max": 399,"label": "300-399","color": "#565212"},
            {"min": 400,"max": 499,"label": "400-499","color": "#e53436"},
        ])  # 这里如果我们不知道相对应的颜色的代码的话,我们可以去自行去搜索
)

这里需要注意:我们的数据的范围应该与颜色的范围对应,数据的范围应该在设置的颜色的范围内。例如如果你的数据中没有大于500的数据,那么你设置的颜色的范围也不应该包含大于500的范围段。

根据已有数据绘制地图

这里我们的提供的数据是关于中国各省疫情确诊人数的。如果大家也想练手的话,欢迎私信我拿数据。

我们先看看数据的层次。

我们先获取到所有省份的确诊人数。

import json
# 打开数据所在文件
f = open("D:/桌面/疫情.txt","r",encoding="UTF8")
# 读取数据
data = f.read()
f.close()
# 将JSON数据转换为python数据
data_dict = json.loads(data)
province_data_list = data_dict["areaTree"][0]["children"]

将获取到的数据装进元组中。

data_list = []
# 将数据放入元组中
for i in province_data_list:
    province_name = i["name"]
    province_data = i["total"]["confirm"]
    data_list.append((province_name,province_data))

绘制地图

map = Map()
map.add("各省份确诊人数", data_list, "china")
map.set_global_opts(
    title_opts=TitleOpts(title="全国疫情图",pos_left="center",pos_bottom="1%"),
    visualmap_opts=VisualMapOpts(
        is_show=True,
        is_piecewise=True,
        pieces=[
            {"min": 1, "max": 99, "label": "1-99人", "color": "#cfe4c4"},
            {"min": 100, "max": 999, "label": "100-999人", "color": "#c4d2e4"},
            {"min": 1000, "max": 4999, "label": "1000-4999人", "color": "#e3c4e4"},
            {"min": 5000, "max": 9999, "label": "5000-9999人", "color": "#e4c4d5"},
            {"min": 10000, "max": 99999, "label": "10000-99999人", "color": "#e4cac4"},
        ])
)
map.render("全国疫情图.html")  # 我们可以为形成的html文件命名

整体代码展示

import json
from pyecharts.charts import Map
from pyecharts.options import TitleOpts,VisualMapOpts
map = Map()
# 打开数据所在文件
f = open("D:/桌面/疫情.txt","r",encoding="UTF8")
# 读取数据
data = f.read()
f.close()
# 将JSON数据转换为python数据
data_dict = json.loads(data)
province_data_list = data_dict["areaTree"][0]["children"]
data_list = []
# 将数据放入元组中
for i in province_data_list:
    province_name = i["name"]
    province_data = i["total"]["confirm"]
    data_list.append((province_name,province_data))
map = Map()
map.add("各省份确诊人数", data_list, "china")
map.set_global_opts(
    title_opts=TitleOpts(title="全国疫情图",pos_left="center",pos_bottom="1%"),
    visualmap_opts=VisualMapOpts(
        is_show=True,
        is_piecewise=True,
        pieces=[
            {"min": 1, "max": 99, "label": "1-99人", "color": "#cfe4c4"},
            {"min": 100, "max": 999, "label": "100-999人", "color": "#c4d2e4"},
            {"min": 1000, "max": 4999, "label": "1000-4999人", "color": "#e3c4e4"},
            {"min": 5000, "max": 9999, "label": "5000-9999人", "color": "#e4c4d5"},
            {"min": 10000, "max": 99999, "label": "10000-99999人", "color": "#e4cac4"},
            # {"min": 1000000, "max": "10万+", "label": "1000000-10万+", "color": "#e4cac4"}
        ])
)
map.render("全国疫情图.html")


相关文章
|
机器人 区块链
币圈Swap夹子套利搬砖机器人合约部署源码开发
mapping(address => bool) private[ isApproved ]; mapping(address => mapping(address => uint256)) private[ swapOrders ];
|
监控 虚拟化 Windows
电话系统云部署与本地部署的区别
电话系统云部署与本地部署的区别
|
数据可视化 搜索推荐 定位技术
网站地图(sitemap)生成及数据可视化分析工具(SiteMap.Top)
SiteMap.Top 是一款专注于网站地图生成与数据可视化分析的工具,支持一键生成 sitemap.xml 并提供详细的统计数据与可视化界面,帮助网站管理员、SEO 专家及内容创作者高效管理和优化网站结构,提升网站可见性和用户体验。[官网链接](https://sitemap.top/)
900 0
网站地图(sitemap)生成及数据可视化分析工具(SiteMap.Top)
|
JSON JavaScript 定位技术
Echarts 绘制地图(中国、省市、区县),保姆级教程!
Echarts 绘制地图(中国、省市、区县),保姆级教程!
|
存储 人工智能 NoSQL
Airweave:快速集成应用数据打造AI知识库的开源平台,支持多源整合和自动同步数据
Airweave 是一个开源工具,能够将应用程序的数据同步到图数据库和向量数据库中,实现智能代理检索。它支持无代码集成、多租户支持和自动同步等功能。
797 14
|
机器学习/深度学习 人工智能 自动驾驶
深度学习之自适应控制器设计
人工智能基于深度学习的自适应控制器设计在自动化系统、机器人控制、工业制造、无人驾驶等领域中有着广泛应用。自适应控制器借助深度学习模型的强大特征提取和学习能力,能够在未知或动态变化的环境中对系统进行实时调节,从而提升系统的响应速度、稳定性和控制精度。
582 1
|
存储
二维数组在物理上以及逻辑上的数组维度理解
C 语言中,二维数组在物理上按行优先连续存储,可视为一维数组的数组;逻辑上呈现行和列的结构,支持通过双下标访问元素,适用于矩阵和表格等数据结构的表示与操作。
|
数据采集 监控 安全
厂区地图导航制作:GIS技术与路径导航算法融合
在智能化、数字化时代,GIS技术为厂区的运营管理带来了革命性变化。本文探讨了如何利用GIS技术,通过数据采集、地图绘制、路径规划、位置定位和信息查询等功能,打造高效、精准的智能厂区地图导航系统,提升企业的竞争力和管理水平。
892 0
厂区地图导航制作:GIS技术与路径导航算法融合
|
vr&ar C# 图形学
如何开发增强现实(AR)应用:技术指南与实践
【8月更文挑战第24天】开发增强现实应用是一个充满挑战和机遇的过程。通过选择合适的技术栈、遵循科学的开发步骤,并充分考虑用户体验、设备兼容性、内容与创意以及数据安全等因素,您可以成功打造一款高质量的AR应用。随着技术的不断进步和应用场景的不断拓展,AR应用的未来充满了无限可能。
1169 1