Python之数据可视化(地图)


 


目录

一   基础地图应用

二   全国疫情图

一  数据准备

二 数据处理 

二   湖北省疫情图

一  数据准备

二  数据处理 


一   基础地图应用

导入map地图对象

from pyecharts.charts import Map
map = Map()

写入数据

data = [("北京市",100),("上海市",152),("广东省",102),("河南省",153),("湖北省",199),("台湾省",123)
]

添加数据

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

设置全局选项

map.set_global_opts(visualmap_opts=VisualMapOpts(is_show=True,is_piecewise=True,pieces=[{"min":1,"max":9,"label":"1-9","color":"#CCFFFF"},{"min": 10, "max": 99, "label": "10-99", "color": "#FF6666"},{"min": 100,"max": 500, "label": "100-500", "color": "#990033"}])
)

颜色表格:RGB颜色对照表-RGB颜色查询对照表-颜色代码表-颜色的英文名称大全-懒人工具|www.ab173.com

绘制地图

 map.render()

运行效果

 

二   全国疫情图

一  数据准备

这里已经提前准备好了(JSON数据),如果有需要的可以私我(或者到黑马中找资料):黑马程序员-解锁你的IT职业薪未来! (itheima.com)

二 数据处理 

首先对JSON数据进行可视化 

 JSON在线视图查看器(Online JSON Viewer) (ab173.com)

我们要得到各个省份的名称,就要分析数据中省份所处在的层次,如图所示:
 

# 将JSON数据转换为Python字典
data_dict = json.loads(data)
# 从字典中取出省份
province_data_list = data_dict['areaTree'][0]['children'].

同理我们也可以获得确诊人数

province_confirm = province_data['total']['confirm']  # 省份确诊人数

获得省份名称

 

获得确诊人数 

对特殊省份的名字处理

 因为我们JSON的数据给的时候只给了身份简称,导致地图识别省份时无法匹配,因此我们要自己处理。

for province_data in province_data_list:if province_data['name'] =="北京" or province_data['name'] =="上海" or province_data['name'] =="重庆":province_name = province_data['name']+"市"elif province_data['name'] == "广西":province_name = province_data['name'] + "壮族自治区"elif province_data['name'] == "内蒙古" or province_data['name'] == "西藏":province_name = province_data['name'] + "自治区"elif province_data['name'] == "新疆":province_name = province_data['name'] + "维吾尔自治区"elif province_data['name'] == "宁夏":province_name = province_data['name'] + "回族自治区"elif province_data['name'] == "香港" or province_data['name'] == "澳门":province_name = province_data['name'] + "特别行政区"else:province_name = province_data['name']+"省"  # 省份名称province_confirm = province_data['total']['confirm']  # 省份确诊人数data_list.append((province_name,province_confirm))  # 将数据添加到列表中

 

全部代码

import json
from pyecharts.charts import Map
from pyecharts.options import *
# 读取文件数据
f = open("D:/疫情.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:if province_data['name'] =="北京" or province_data['name'] =="上海" or province_data['name'] =="重庆":province_name = province_data['name']+"市"elif province_data['name'] == "广西":province_name = province_data['name'] + "壮族自治区"elif province_data['name'] == "内蒙古" or province_data['name'] == "西藏":province_name = province_data['name'] + "自治区"elif province_data['name'] == "新疆":province_name = province_data['name'] + "维吾尔自治区"elif province_data['name'] == "宁夏":province_name = province_data['name'] + "回族自治区"elif province_data['name'] == "香港" or province_data['name'] == "澳门":province_name = province_data['name'] + "特别行政区"else:province_name = province_data['name']+"省"  # 省份名称province_confirm = province_data['total']['confirm']  # 省份确诊人数data_list.append((province_name,province_confirm))  # 将数据添加到列表中# 创建地图对象
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":99, "lable": '1~99人', "color": "#CCFFFF"},{"min":100,"max":999,"lable":"100~999人","color": "#FFFF99"},{"min":1000,"max":4999,"lable":"1000~4999人","color": "#FF9966"},{"min":5000,"max":9999,"lable":"5000~99999人","color": "#FF6666"},{"min":10000,"max":99999,"lable":"10000~99999人","color":  "#CC3333"},{"min":100000,"lable":"100000+","color":"#990033"}])
)
# 绘图
map.render("全国疫情地图.html")

运行效果

二   湖北省疫情图

一  数据准备

前面我们准备的数据中包含了各个省份的信息我们取出来使用即可。

 

二  数据处理 

 对文件进行处理

将JSON数据转换为Python字典

 

 将数据变为元组存放再列表中

构建地图配置全局选项 

 

全部代码 

import json
from pyecharts.charts import Map
from pyecharts.options import *
# 打开文件
f = open("D:/疫情.txt","r",encoding="UTF-8")
# 读取文件中的数据
data = f.read()
# 关闭文件
f.close()
# 将JSON数据转换为Python字典
data_dict = json.loads(data)
# 取到湖北省的数据
city_data = data_dict['areaTree'][0]['children'][6]['children']# 准备数据为元组存放到list中
data_list = []
for citydata in city_data:if citydata["name"] == "神农架":city_name = citydata["name"] + "林区"elif citydata["name"] == "恩施州":city_name = citydata["name"][:-1]+ "土家族苗族自治州"else:city_name = citydata["name"] + "市"city_confirms = citydata['total']['confirm']data_list.append((city_name,city_confirms))# 构建地图
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, "lable": '1~99人', "color": "#CCFFFF"},{"min":100,"max":999,"lable":"100~999人","color": "#FFFF99"},{"min":1000,"max":4999,"lable":"1000~4999人","color": "#FF9966"},{"min":5000,"max":9999,"lable":"5000~99999人","color": "#FF6666"},{"min":10000,"max":99999,"lable":"10000~99999人","color":  "#CC3333"},{"min":100000,"lable":"100000+","color":"#990033"}])
)
# 绘制地图
map.render("湖北省疫情地图.html")

 运行效果

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Bug: git stash恢复误drop的提交

Bug: git stash恢复误drop的提交 前几天在写ut时突然需要通过本地代码临时出一个包,但是本地ut又不想直接作为一个commit提交,所以为了省事就将ut的代码暂时stash起来。出完包后想apply stash,但是手误操作点成了drop stash,丢失了…

ubuntu 20.04 使用 webrtc-streamer自动退出,报错GLIBC 问题解决方法

文章目录 前言Ubuntu 20.4中使用webrtc-streamer报错总结 前言 前端vue2 项目需要播放海康的视频流,本地启动起来了,现在需要的服务器上部署,服务器是Ubuntu 20.04,下面是部署时遇到的问题及解决方法,总耗时2天。 不知…

Cesium加载地图-高德影像

废话不多说&#xff0c;直接上代码 整体代码 <template><div id"cesiumContainer" style"height: 100vh;"></div><div id"toolbar" style"position: fixed;top:20px;left:220px;"><el-breadcrumb><…

Oracle分栏(非分页)查询

不知道Oracle怎么进行数据分栏(分栏: 因数据列过长, 部分数据作为新列显示). 在这里先记录一下粗浅的查询方法. 数据源例子: select 日用百货 as cat, 手电筒 as name, 20 as amount, 2024-01-27 as dt from dualunion allselect 餐饮美食 as cat, 鸡公煲 as name, 15.9 as amo…

Android音量调节修改

前言 今日公司&#xff0c;安卓设备的音量显示不正常&#xff0c;让我来修复这个bug&#xff0c;现在已修复&#xff0c;做个博客&#xff0c;记录一下&#xff0c;以后碰到类似一下子就好解决。 Android音量调节相关 路径 frameworks\base\services\core\java\com\android…

学校“数据结构”课程Project—扩展功能(自主设计)

目录 一、设想功能描述 想法缘起 目标功能 二、问题抽象 三、算法设计和优化 1. 易想的朴素搜索 / dp 搜索想法 动态规划&#xff08;dp&#xff09;想法 2. 思考与优化 四、算法实现 五、结果示例 附&#xff1a;使用的地图API 一、设想功能描述 想法缘起 OSM 导出…

【JavaEE进阶】 #{}和${}

文章目录 &#x1f343;前言&#x1f333;#{}和${}使⽤&#x1f6a9;Interger类型的参数&#xff08;基础数据类型&#xff09;&#x1f388;使用#{}&#x1f388;使用${} &#x1f6a9;String类型的参数使用&#x1f388;#{}使用&#x1f388;${} &#x1f38d;#{}和${}区别&a…

数据库之 基础概念、安装mysql、sql语句基础

数据库之 基础概念、安装mysql、sql语句基础 【一】存储数据的演变过程&#xff1a; 文件存储&#xff1a; 初始阶段随意存放数据到文件&#xff0c;格式任意。目录规范引入&#xff1a; 软件开发使用目录规范&#xff0c;限制数据位置&#xff0c;建立专门文件夹。本地数据存…

java版代码生成器

之前实现的JRT代码生成器是M版的&#xff0c;那么用户必须用M库才能有代码生成器的功能。为了提供给就是不用M库的用户使用&#xff0c;JRT再提供脚本版的java代码生成器&#xff0c;方便直接连关系库生成JRT的代码。 实现&#xff1a; import JRT.Core.MultiPlatform.JRTCon…

接口测试怎么测?接口测试的流程和步骤(超详细)

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;薪资嘎嘎涨 一、什么是接口测试 我们要想知道接口测试怎么做&#xff0c;首先要明白接口测试是什么?一般…

<蓝桥杯软件赛>零基础备赛20周--第18周--动态规划初步

报名明年4月蓝桥杯软件赛的同学们&#xff0c;如果你是大一零基础&#xff0c;目前懵懂中&#xff0c;不知该怎么办&#xff0c;可以看看本博客系列&#xff1a;备赛20周合集 20周的完整安排请点击&#xff1a;20周计划 每周发1个博客&#xff0c;共20周。 在QQ群上交流答疑&am…

HCS-华为云Stack-FusionSphere

HCS-华为云Stack-FusionSphere FusionSphere是华为面向多行业客户推出的云操作系统解决方案。 FusionSphere基于开放的OpenStack架构&#xff0c;并针对企业云计算数据中心场景进行设计和优化&#xff0c;提供了强大的虚拟化功能和资源池管理能力、丰富的云基础服务组件和工具…