综合案例-数据可视化-地图

一、pyecharts—地图快速入门

假设我们要将6个地区的某种数量在地图上标注出来,首先导入pyecharts包内地图相关模块,然后准备地图数据(数据类型是列表,列表的元素类型为元组),然后把准备好的数据添加进地图。补充细节,设置全局选项,不同的数量段用不同颜色标注出来,使效果更加直观。最后,生成地图。

代码示例:

#导包
from pyecharts.charts import Map
from pyecharts.options import VisualMapOpts
#构建地图
map=Map()
#准备地图数据
data=[           #数据类型:元素类型为元组的列表
    ('北京市',99),
    ('上海市',199),
    ('湖南省',299),
    ('山东省',199),
    ('安徽省',499),
    ('河南省',366),
    ('湖北省',599)
]
#添加地图数据
map.add('地图',data,'china') #不输入地图类型'China'也默认是'China'
#设置全局选项
map.set_global_opts(
    visualmap_opts=VisualMapOpts(
        is_show=True,
        is_piecewise=True, #手动校准范围
        pieces=[           #范围定义是一个列表
            {'min': 1, 'max': 9, 'label': '1-9人', 'color': '#CCFFFF'},  #'color': '#CCFFFF'颜色值,详见RGB颜色对照表
            {'min': 10, 'max': 99, 'label': '10-99人', 'color': '#FFFF99'},
            {'min': 100, 'max': 299, 'label': '100-299人', 'color': '#6699FF'},
            {'min': 300, 'max':499, 'label': '300-499人', 'color': '#F38F24'},
            {'min': 500, 'max': 599, 'label': '500-599人', 'color': '#CC3333'},
            {'min': 600,  'label': '600人以上', 'color': '#990033'},
        ]
    )
)
#生成地图
map.render()

运行代码后会产生新文件render.html,用Edge浏览器打开,即可看到生成的地图。

关于Map_visualmap_piecewise的详细说明,可访问官网:

DocumentDescriptionicon-default.png?t=O83Ahttps://gallery.pyecharts.org/#/Map/map_visualmap_piecewise在设置全局选项时,用到了颜色值,颜色值是6位,什么值对应什么颜色,可通过RGB颜色对照表一一对应。

可访问如下网站进行了解RGB颜色对照表:RGB颜色对照表-RGB颜色查询对照表-颜色代码表-颜色的英文名称大全-懒人工具|www.ab173.com懒人站长工具提供RGB颜色对照表,RGB颜色查询对照表、常见的网页颜色代码表,常见颜色的英文名称颜色表查询!icon-default.png?t=O83Ahttp://www.ab173.com/gongju/ui/rgb.php

二、进阶-全国疫情地图

2.1分析文件数据

文件“ 疫情.txt ”记录了全国各个地区的疫情数据(确诊人数,治愈人数等等),文件链接:
链接:https://pan.baidu.com/s/1Q9az5lIKuWbMTIxzXRtX_A?pwd=1yts 
提取码:1yts

文件“ 疫情.txt ”是标准的json格式,我们通过网站(如下所示)可以更直观地看出数据层级。在线JSON校验格式化工具(Be JSON)在线,JSON,JSON 校验,格式化,xml转json 工具,在线工具,json视图,可视化,程序,服务器,域名注册,正则表达式,测试,在线json格式化工具,json 格式化,json格式化工具,json字符串格式化,json 在线查看器,json在线,json 在线验证,json tools online,在线文字对比工具icon-default.png?t=O83Ahttps://www.bejson.com/

使用步骤如图:

数据层级如下:

数据层级图

通过在线网站工具,点击“+",一级一级展开,体验展开过程,也许会更容易理解。

简单分析完数据层级后,我们决定要做一个反映各个省份疫情确诊人数的地图,则地图类型默认中国,地图数据类型为列表,列表内元素类型为元组,一个元组就包括:一个省份名称+确诊人数。

2.2处理数据

我们要处理一下文件“ 疫情.txt ”中的数据,数据本身就是标准的json格式,不再需要处理开头与结尾,步骤如下:

  1. 首先,我们要读取数据文件。
  2. 然后将json数据转换为python字典。
  3. 然后从字典中取出children列表内的数据(即包括省份名称+确诊人数)。
  4. 最后利用for循环组装每个省份名称+确诊人数为元组,将所有元组封装在列表内。

代码如下所示:

#准备地图数据
#读取数据文件
f=open('E:/可视化案例数据/地图数据/疫情.txt','r',encoding='UTF-8')
data=f.read()  #获取文件内全部数据
#取完数据后就用不到文件了,关闭文件即可
f.close()
#将json数据转换为python字典
data_dict=json.loads(data)
#从字典中取出省份数据
province_data_list=data_dict['areaTree'][0]['children']
#组装每个省份名称和确诊人数为元组,将所有元组封装在列表内
data_list=[]  #绘图要用到的数据列表
for province_data in province_data_list:
    province_name=province_data['name']+'省'            #省份名称,拼接字符串的原因在代码下方
    province_confirm=province_data['total']['confirm'] #确诊人数
    data_list.append((province_name,province_confirm)) #放入列表中

第三步:从字典中取出children列表内的数据(即包括省份名称+确诊人数的数据),我们需要先访问字典data_dict中的列表'areaTree',然后访问列表'areaTree'中第一个元素,其类型为字典,然后访问此字典内的列表'children',列表'children'内是各个省份的疫情数据,结合数据层级图,更容易理解。

第四步:利用for循环组装每个省份名称+确诊人数为元组,将所有元组封装在列表内,在获取省份名称的时候,我在后面拼接了字符串'省',因为现在pyecharts包要求,地区后面添加上相应后缀:省,市,行政区,最后生成的地图才会显示数据,而我们现在用的这份文件没有相应后缀,所以我拼接了字符串'省',至于市和行政区,我没有再去添加,最后生成的地图也没有市和行政区的数据,还望读者见谅。还有一个需要注意的问题:append函数的参数只有1个,我们在此处追加的是元组类型的元素,追加了一个元组,元组内是省份名称+确诊人数2个参数,不要忽略元组的括号。

回顾append函数:http://t.csdnimg.cn/kKNQE 3.3.2在列表尾部添加指定元素。回顾元组知识:http://t.csdnimg.cn/XIMOe 。

2.3构建地图

构建地图的步骤如下所示:

  1. 首先构建地图对象map
  2. 添加上一步处理好的数据
  3. 设置全局配置选项(标题,地区颜色)
  4. 生成地图

代码如下:

#构建地图
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': 99, 'label': '1-99人', 'color': '#CCFFFF'},  #'color': '#CCFFFF'颜色值,详见RGB颜色对照表
            {'min': 100, 'max': 999, 'label': '100-999人', 'color': '#FFFF99'},
            {'min': 1000, 'max': 4999, 'label': '1000-4999人', 'color': '#6699FF'},
            {'min': 5000, 'max':9999, 'label': '5000-9999人', 'color': '#F38F24'},
            {'min': 10000, 'max': 99999, 'label': '10000-99999人', 'color': '#CC3333'},
            {'min': 100000,  'label': '10万人以上', 'color': '#990033'},
        ]
    )
)
#生成地图
map.render('全国疫情地图.html')  #控制生成的文件名

运行代码后会产生新文件 “ 全国疫情地图.html ” ,用Edge浏览器打开,即可看到生成的地图。

2.4完整代码

#导包
from pyecharts.charts import Map
from pyecharts.options import VisualMapOpts,TitleOpts
import json

#准备地图数据
#读取数据文件
f=open('E:/可视化案例数据/地图数据/疫情.txt','r',encoding='UTF-8')
data=f.read()  #获取文件内全部数据
#取完数据后就用不到文件了,关闭文件即可
f.close()
#将json数据转换为python字典
data_dict=json.loads(data)
#从字典中取出省份数据
province_data_list=data_dict['areaTree'][0]['children']
#组装每个省份名称和确诊人数为元组,将所有元组封装在列表内
data_list=[]  #绘图要用到的数据列表
for province_data in province_data_list:
    province_name=province_data['name']+'省'            #省份名称,拼接字符串的原因在代码下方
    province_confirm=province_data['total']['confirm'] #确诊人数
    data_list.append((province_name,province_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': 99, 'label': '1-99人', 'color': '#CCFFFF'},  #'color': '#CCFFFF'颜色值,详见RGB颜色对照表
            {'min': 100, 'max': 999, 'label': '100-999人', 'color': '#FFFF99'},
            {'min': 1000, 'max': 4999, 'label': '1000-4999人', 'color': '#6699FF'},
            {'min': 5000, 'max':9999, 'label': '5000-9999人', 'color': '#F38F24'},
            {'min': 10000, 'max': 99999, 'label': '10000-99999人', 'color': '#CC3333'},
            {'min': 100000,  'label': '10万人以上', 'color': '#990033'},
        ]
    )
)
#生成地图
map.render('全国疫情地图.html')  #控制生成的文件名

三、进阶-山东省疫情地图

2.1分析文件数据

我们继续使用文件“ 疫情.txt ”,从其中取出山东省的数据,地图中反映山东省各城市的疫情确诊人数,地图类型选择“山东”,地图数据类型为列表,列表内元素类型为元组,一个元组就包括:山东省城市名称+确诊人数。

数据层级图如下:

2.2处理数据

我们要处理一下文件“ 疫情.txt ”中的数据,数据本身就是标准的json格式,不再需要处理开头与结尾,步骤如下:

  1. 首先,我们要读取数据文件。
  2. 然后将json数据转换为python字典。
  3. 然后从字典中取出山东省疫情数据(即包括山东省城市名称+确诊人数)。
  4. 最后利用for循环组装山东省每个城市名称+确诊人数为元组,将所有元组封装在列表内。

代码如下所示:

#准备地图数据
#读取数据文件
f=open('E:/可视化案例数据/地图数据/疫情.txt','r',encoding='UTF-8')
data=f.read()  #获取文件内全部数据
#获取文件数据完成后关闭文件
f.close()
#json数据转换为python字典
data_dict=json.loads(data)
#从字典中取出山东省城市数据
city_data_list=data_dict['areaTree'][0]['children'][11]['children']
#组装每个省份名称和确诊人数为元组,将所有元组封装在列表内
data_list=[]  #绘图要用到的数据列表
for city_data in city_data_list:
    city_name=city_data['name']+'市'    #拼接字符串的原因在2.2中已说明,请阅读本文2.2
    city_confirm=city_data['total']['confirm']
    data_list.append((city_name,city_confirm))

2.3构建地图

构建地图的步骤如下所示:

  1. 首先构建地图对象map
  2. 添加上一步处理好的数据
  3. 设置全局配置选项(标题,地区颜色)
  4. 生成地图

代码如下:

#构建地图
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': 9, 'label': '1-9人', 'color': '#CCFFFF'},  #'color': '#CCFFFF'颜色值,详见RGB颜色对照表
            {'min': 10, 'max': 19, 'label': '10-19人', 'color': '#FFFF99'},
            {'min': 20, 'max': 39, 'label': '20-39人', 'color': '#6699FF'},
            {'min': 40, 'max':59, 'label': '40-59人', 'color': '#F38F24'},
            {'min': 60, 'max': 79, 'label': '60-79人', 'color': '#CC3333'},
            {'min': 80,  'label': '80人以上', 'color': '#990033'},
        ]
    )
)
#生成地图
map.render('山东省疫情地图.html')  #控制生成的文件名

运行代码后会产生新文件 “ 山东省疫情地图.html ” ,用Edge浏览器打开,即可看到生成的地图。

注:因为文件内青岛市和东营市疫情数据缺失,故地图上未显示。

2.4完整代码

#导包
from pyecharts.charts import Map
from pyecharts.options import VisualMapOpts,TitleOpts
import json

#准备地图数据
#读取数据文件
f=open('E:/可视化案例数据/地图数据/疫情.txt','r',encoding='UTF-8')
data=f.read()  #获取文件内全部数据
#获取文件数据完成后关闭文件
f.close()
#json数据转换为python字典
data_dict=json.loads(data)
#从字典中取出山东省城市数据
city_data_list=data_dict['areaTree'][0]['children'][11]['children']
#组装每个省份名称和确诊人数为元组,将所有元组封装在列表内
data_list=[]  #绘图要用到的数据列表
for city_data in city_data_list:
    city_name=city_data['name']+'市'    #拼接字符串的原因在2.2中已说明,请阅读本文2.2
    city_confirm=city_data['total']['confirm']
    data_list.append((city_name,city_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': 9, 'label': '1-9人', 'color': '#CCFFFF'},  #'color': '#CCFFFF'颜色值,详见RGB颜色对照表
            {'min': 10, 'max': 19, 'label': '10-19人', 'color': '#FFFF99'},
            {'min': 20, 'max': 39, 'label': '20-39人', 'color': '#6699FF'},
            {'min': 40, 'max':59, 'label': '40-59人', 'color': '#F38F24'},
            {'min': 60, 'max': 79, 'label': '60-79人', 'color': '#CC3333'},
            {'min': 80,  'label': '80人以上', 'color': '#990033'},
        ]
    )
)
#生成地图
map.render('山东省疫情地图.html')  #控制生成的文件名

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/875076.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

51单片机个人学习笔记11(AT24C02-I2C总线)

前言 本篇文章属于STC89C52单片机(以下简称单片机)的学习笔记,来源于B站教学视频。下面是这位up主的视频链接。本文为个人学习笔记,只能做参考,细节方面建议观看视频,肯定受益匪浅。 [1-1] 课程简介_哔哩…

Ubuntu查看系统用户信息

0 Preface/Foreword 1 查看方式 1.1 查看系统用户 getent passwd getent: Get entries for Name Service Switch Libraries. 该命令会列出系统上所有用户的详细信息,包括用户名、密码、用户ID(UID)、组ID(GID)、用户描…

0基础学习爬虫系列:程序打包部署

1.目标 将已经写好的python代码,打包独立部署或运营。 2. 环境准备 1)通义千问 :https://tongyi.aliyun.com/qianwen 2)0基础学习爬虫系列–网页内容爬取:https://blog.csdn.net/qq_36918149/article/details/14199…

Pytest-@pytest.fixture夹具篇(一)

一、定义 在Python的pytest测试框架中,pytest.fixture是一个(不是唯一)装饰器,用于定义一个测试夹具。 二、简单实例 使用参数autouserTrue pytest.fixture(autouseTrue) def my_fixture():print("Setup: 准备测试环境&q…

前端框架有哪些?

前言 用户体验是每个开发网站的企业中的重中之重。无论后台有多方面的操作和功能,用户的视图和体验都必须是无缝的最友好的。这需要使用前端框架来简化交互式、以用户为中心的网站的开发。 前端框架是一种用于简化Web开发的工具,它提供了一套预定义的代…

[环境配置]ubuntu20.04安装后wifi有图标但是搜不到热点解决方法

最近刚入手一台主机,暗影精灵8plus电竞主机,安装ubuntu后wifi怎么都搜不到热点,前后重装系统6次才算解决问题。这个心酸历程只有搞技术人才明白。下面介绍我解决过程。 首先主机到手后是个windows10系统,我用无线网连接了一下&am…

基于SpringBoot+Vue+MySQL的垃圾分类回收管理系统

系统展示 用户前台界面 管理员后台界面 系统背景 二十一世纪互联网的出现,改变了几千年以来人们的生活,不仅仅是生活物资的丰富,还有精神层次的丰富。在互联网诞生之前,地域位置往往是人们思想上不可跨域的鸿沟,信息的…

Redis面试题整理

Redis 1、Redis主从集群 1.1、搭建主从集群 单节点Redis的并发能力是有上限的,要进一步提高Redis的并发能力,就需要搭建主从集群,实现读写分离 1.2、主从同步原理 当主从第一次同步连接或断开重连时,从节点都会发送psync请求&…

sass实现文字两侧横线

sass实现文字两侧横线 自我记录 mixin 的基本作用: 代码复用:把常用的样式封装在一起,不需要重复写相同的代码。参数化:可以通过参数动态生成样式,提高灵活性。逻辑处理:结合 Sass 的控制语句&#xff0…

【最新华为OD机试E卷-支持在线评测】计算疫情扩散时间(200分)多语言题解-(Python/C/JavaScript/Java/Cpp)

🍭 大家好这里是春秋招笔试突围 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-E/D卷的三语言AC题解 💻 ACM金牌🏅️团队| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 🍿 最新华为OD机试D卷目录,全、新、准,题目覆盖率达 95% 以上,…

【JavaScript】LeetCode:31-35

文章目录 31 反转链表32 回文链表33 环形链表34 环形链表Ⅱ35 合并两个有序链表 31 反转链表 初始化:cur head,pre null。pre和cur一起向前移。由于反转链表时,cur.next指向pre,导致cur在下次循环中就找不到了原来的cur.next&am…

微擎忘记后台登录用户名和密码怎么办?解决方法

微擎忘记后台登录名和登录密码是很常见的,服务器百科网fwqbk.com告诉你找回后台登录用户名和密码的方法: 一:找回微擎后台用户名 (如果只是忘记了后台登录密码,请忽略此步骤,跳转到第二步) 通…

2.ChatGPT的发展历程:从GPT-1到GPT-4(2/10)

引言 在人工智能领域,自然语言处理(NLP)是连接人类与机器的重要桥梁。随着技术的不断进步,我们见证了从简单的文本分析到复杂的语言理解的转变。ChatGPT,作为自然语言处理领域的一个里程碑,其发展历程不仅…

C++ | Leetcode C++题解之第395题至少有K个重复字符的最长子串

题目&#xff1a; 题解&#xff1a; class Solution { public:int longestSubstring(string s, int k) {int ret 0;int n s.length();for (int t 1; t < 26; t) {int l 0, r 0;vector<int> cnt(26, 0);int tot 0;int less 0;while (r < n) {cnt[s[r] - a];…

[Golang] goroutine

[Golang] goroutine 文章目录 [Golang] goroutine并发进程和线程协程 goroutine概述如何使用goroutine 并发 进程和线程 谈到并发&#xff0c;大多都离不开进程和线程&#xff0c;什么是进程、什么是线程&#xff1f; 进程可以这样理解&#xff1a;进程就是运行着的程序&…

yolov5 +gui界面+单目测距 实现对图片视频摄像头的测距

可实现对图片&#xff0c;视频&#xff0c;摄像头的检测 项目概述 本项目旨在实现一个集成了YOLOv5目标检测算法、图形用户界面&#xff08;GUI&#xff09;以及单目测距功能的系统。该系统能够对图片、视频或实时摄像头输入进行目标检测&#xff0c;并估算目标的距离。通过…

基于vue框架的城市网约车管理系统v34td(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能&#xff1a;用户,司机,订单评价,完成订单,司机接单,打车订单 开题报告内容 基于Vue框架的城市网约车管理系统开题报告 一、研究背景与意义 1.1 研究背景 随着城市化进程的加速和互联网技术的飞速发展&#xff0c;网约车服务作为一种新兴的出行方…

Java项目: 基于SpringBoot+mybatis+maven校园资料分享平台(含源码+数据库+答辩PPT+毕业论文)

一、项目简介 本项目是一套基于SpringBootmybatismaven校园资料分享平台 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0c;eclipse或者idea 确保可以运行&#xff01; 该系统功能完善、界面美观、操作简…

Chainlit集成Langchain并使用通义千问实现和数据库交互的网页对话应用(text2sql)

LangChain 简介 LangChain 是一个开源框架&#xff0c;设计用于开发和部署与语言模型&#xff08;如大型语言模型LLM&#xff09;交互的应用程序。它提供了一种简便的方法来构建基于自然语言处理&#xff08;NLP&#xff09;的系统&#xff0c;这些系统可以执行各种任务&#…

Java XML

1、XML文件介绍 配置文件&#xff1a;用来保存设置的一些东西。 拿IDEA来举例&#xff0c;比如设置的背景图片&#xff0c;字体信息&#xff0c;字号信息和主题信息等等。 &#xff08;1&#xff09;以前是用txt保存的&#xff0c;没有任何优点&#xff0c;而且不利于阅读&a…