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

news2024/11/15 23:48:41

版本说明

当前版本号[20230729]。

版本修改说明
20230729初版

目录

文章目录

  • 版本说明
  • 目录
  • 知识总览图
  • Python基础综合案例--数据可视化 - 地图可视化
    • 基础地图使用
      • 案例效果
      • 视觉映射器
    • 疫情地图-国内疫情地图
      • 案例效果
      • 实操
      • 设置全局配置选项
    • 疫情地图-省级疫情地图
      • 案例效果
      • 实操

知识总览图

image-20230729173415953

Python基础综合案例–数据可视化 - 地图可视化

基础地图使用

我们通过编写以下代码,可以将地图以数据可视化的形式展示出来。(当所添加的数据中带有“省/市”,我们添加的数据才会得以显现)

使用:“from pyecharts.charts import Map”表示引了map的包,用来生成地图

案例效果

from pyecharts.charts import Map

map = Map()
data = [
    ("北京市", 99),
    ("上海市", 199),
    ("湖南省", 299),
    ("台湾省", 399),
    ("安徽省", 499)
]

#添加数据
map.add("测试地图", data, "china")

#绘图
map.render()

image-20230716161541769

视觉映射器

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

map = Map()
data = [
    ("北京市", 99),
    ("上海市", 199),
    ("湖南省", 299),
    ("台湾省", 399),
    ("安徽省", 499)
]

#添加数据
map.add("测试地图", data, "china")

#绘制视觉映射器
map.set_global_opts(
    visualmap_opts=VisualMapOpts(
        is_show=True,       #表示是否显示
        is_piecewise=True,#表示是否分段
        pieces=[#表示设置图例
            {"min": 1, "max": 100, "label": "1-100", "color": "#CCFFFF"},
            {"min": 101, "max": 300, "label": "101-300", "color": "#FF6666"},
            {"min": 301, "max": 500, "label": "301-500", "color": "#990033"},
        ]
    )
)

#绘制
map.render()

由代码生成的可视化地图如下图所示,会根据数量所在的范围,显示相对应的颜色:

image-20230716163633920

疫情地图-国内疫情地图

案例效果

image-20230716163831458

实操

对比上图,我们发现,国内疫情地图与其的差别在视觉映射器等方面有显著差别。所以我们接下来主要讲如何设置全局配置选项。

设置全局配置选项

#1、导入配置选项模块
map.set_global_opts(               #2、设置全局配置,定制分段的视觉映射
    title_opts=TitleOpts(title="全国疫情地图"),
    visualmap_opts=VisualMapOpts(         #3、设置视觉映射配置选项
        is_show=True,
        is_piecewise=True,
	# pieces : 自定义的每一段的范围,以及每一段的文字,以及每一段的特别的样式 
        pieces=[        #4、根据自身所需,分配好图例的数字范围,并配置上相对应的颜色
            {"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~9999人", "color": "#FF6666"},
            {"min": 10000, "max": 99999, "lable": "10000~99999人", "color": "#CC3333"},
            {"min": 100000, "lable": "100000+人", "color": "#990033"},

        ]
    )
)

完整代码如下:

import json
from pyecharts.charts import Map
from pyecharts.options import *

#读取数据文件
f = open("F:/疫情.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: #通过for循环一个个取出来
    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~9999人", "color": "#FF6666"},
            {"min": 10000, "max": 99999, "lable": "10000~99999人", "color": "#CC3333"},
            {"min": 100000, "lable": "100000+人", "color": "#990033"},

        ]
    )
)

map.render("全国疫情地图.html")

所生成的国内疫情地图如下:

image-20230716173821443

疫情地图-省级疫情地图

案例效果

image-20230716211034889

实操

第一步:获取河南省各市数据

#从字典中取出河南省份的数据
cities_data = data_dict["areaTree"][0]["children"][3]["children"]

第二步:把各市数据汇总到一个列表中

#准备数据为元组并放入list
data_list = []

for city_data in cities_data: #通过for循环一个个取出来
    city_name = city_data["name"] + "市"
    city_confirm = city_data["total"]["confirm"] #各市的确诊人数
    data_list.append((city_name, city_confirm))

最后一步:参考国内疫情地图生成河南省疫情地图:

完整代码:

import json
from pyecharts.charts import Map
from pyecharts.options import *

#读取数据文件
f = open("F:/疫情.txt", "r", encoding="UTF-8")
data = f.read()

#关闭文件
f.close()

#获取到河南省数据
#将字符串json转换为python字典
data_dict = json.loads(data)

#从字典中取出河南省份的数据
cities_data = data_dict["areaTree"][0]["children"][3]["children"]

#准备数据为元组并放入list
data_list = []

for city_data in cities_data: #通过for循环一个个取出来
    city_name = city_data["name"] + "市"
    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": 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~9999人", "color": "#FF6666"},
            {"min": 10000, "max": 99999, "lable": "10000~99999人", "color": "#CC3333"},
            {"min": 100000, "lable": "100000+人", "color": "#990033"},

        ]
    )
)

map.render("河南省疫情分布.html")

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

spring拦截器 与统一格式

目录 前言模拟拦截器拦截器的实现原理什么是动态代理? 什么是静态代理静态代理与动态代理的区别两种常用的动态代理方式基于接口的动态代理基于类的动态代理 JDK Proxy 与 CGlib的区别 其他 统⼀访问前缀添加统⼀异常处理统⼀数据返回格式 前言 之前博客讲述了 , 关于SpringA…

Kotlin~Memento备忘录模式

概念 备忘录模式是一种行为型设计模式,用于捕获和存储对象的内部状态,并在需要时将对象恢复到之前的状态。 备忘录模式允许在不暴露对象内部实现细节的情况下,对对象进行状态的保存和恢复。 角色介绍 Originator:原发器&#x…

7.事件类型

7.1鼠标事件 案例-轮播图点击切换 需求:当点击左右的按钮,可以切换轮播图 分析: ①右侧按钮点击,变量,如果大于等于8,则复原0 ②左侧按钮点击,变量–,如果小于0,则复原最后一张 ③鼠…

Zotero ubuntu2023安装 关联 ubuntu文献翻译

一、准备下载的软件: Zotero | Downloads 1. Zotero-6.0.26_linux-x86_64.tar.bz2 下面是插件 zotfile-5.1.2-fx.xpi zotero-pdf-translate.xpi jasminum-v0.2.6.xpi 2.2.5 Tampermonkey 4.11.crx 所准备的文件,都已经在这个链接的压缩包下面 …

【机器学习】Multiple Variable Linear Regression

Multiple Variable Linear Regression 1、问题描述1.1 包含样例的X矩阵1.2 参数向量 w, b 2、多变量的模型预测2.1 逐元素进行预测2.2 向量点积进行预测 3、多变量线性回归模型计算损失4、多变量线性回归模型梯度下降4.1 计算梯度4.2梯度下降 首先,导入所需的库 im…

【Maven】让maven更高效,优化maven构建项目速度

打开idea的setting,找到maven,设置它多线程数,重启后即可! 我这里是8,你们可以随便设置。 如下图:

Android 之 使用 Camera 拍照

本节引言 本节给大家带来的是Android中Camera的使用,简单点说就是拍照咯,无非两种: 1.调用系统自带相机拍照,然后获取拍照后的图片 2.要么自己写个拍照页面 本节我们来写两个简单的例子体验下上面的这两种情况~ 1.调用系统自带…

《向量数据库指南》:向量数据库Pinecone如何集成LangChain(二)

目录 创建嵌入 向量数据库 索引 创建向量存储并查询 生成式问答 创建嵌入 使用LangChain的OpenAI嵌入功能构建嵌入非常简单。我们首先需要运行下一个单元格,以添加我们的OpenAI API密钥: Python from getpass import getpassOPENAI_API_KEY = getpass("OpenAI…

CleanMyMac X4.14.1中文版如何清理 Mac系统?CleanMyMac 真的能断网激活吗?

CleanMyMac X4.14.1中文版如何清理 Mac系统?Mac系统在使用过程中都会产生大量系统垃圾,如不需要的系统语言安装包,视频网站缓存文件,mac软件卸载残留的注册表等。 随着时间推移,mac系统垃圾就会越来越多,电…

Spring事务创建与使用

目录 前言Spring中事务的实现声明式事务Transactional 作⽤范围Transactional 参数说明对于事务不回滚的解决方案 前言 在数据库中我们提到了 事务, 事务的定义为, 将一系列操作封装成一个整体去调用 , 要么一起成功, 要么一起失败 Spring中事务的实现 在Spring中事务的操作…

LLaMA:开放和高效的基础语言模型

Part1前言 我们介绍了LLaMA,这是一个参数范围从7B到65B的基础语言模型集合。我们在数以万亿计的标记上训练我们的模型,并表明有可能完全使用公开可用的数据集来训练最先进的模型,而不必求助于专有的和不可获取的数据集。特别是,L…

快解析内网穿透和nginx端口映射的比较

众所周知,Nginx是一个高性能的Web服务器和反向代理服务器,快解析是一种内网穿透工具,使内部设备可以通过互联网进行访问。虽然它们都涉及到网络连接和端口使用,但在功能和用途上有一些区别。下面就来具体分析一下。 1.Nginx端口映…

Java中的锁分类

Java中有很多的锁,但是并不全指锁,有些指锁的特性,设计,状态。 1.乐观锁 乐观锁认为在更新数据时,乐观的认为并发时并不会出现问题,即不加锁。 2.悲观锁 悲观锁认为多线程对同一个数据进行操作时&#…

数据结构——复杂度

总有一天你要一个人,再暗夜中,向那座桥走过去 文章目录 一、算法的复杂度 考察形式范例 二、算法的时间复杂度 大O的渐进表示法 常见的复杂度对比 例题:消失的数字 题目的三种思路 1.排序遍历 2.减法 3.单身狗思想 三、空间复杂度…

UE5、CesiumForUnreal加载无高度地形

文章目录 1.实现目标2.实现过程3.参考资料1.实现目标 在UE5中,CesiumForUnreal插件默认的地形都是带高度的,这里加载没有高度的地形,即大地高程为0,GIF动图如下: 2.实现过程 参考官方的教程,下载无高度的DEM,再切片加载到UE中。 (1)下载无高度地形DEM0。 在官方帖子…

用合成数据训练托盘检测模型【机器学习】

想象一下,你是一名机器人或机器学习 (ML) 工程师,负责开发一个模型来检测托盘,以便叉车可以操纵它们。 ‌你熟悉传统的深度学习流程,已经整理了手动标注的数据集,并且已经训练了成功的模型。 推荐:用 NSDT设…

day58 单调栈

单调栈 使用场景:通常是一维数组,要寻找任一个元素的右边或者左边第一个比自己大或者小的元素的位置 本质:空间换时间 三个判断条件: 当前遍历的元素T[i]小于栈顶元素T[st.top()]的情况 当前遍历的元素T[i]等于栈顶元素T[st.to…

tinkerCAD案例:24.Tinkercad 中的自定义字体

tinkerCAD案例:24.Tinkercad 中的自定义字体 原文 Tinkercad Projects Tinkercad has a fun shape in the Shape Generators section that allows you to upload your own font in SVG format and use it in your designs. I’ve used it for a variety of desi…

JavaSE第二次考试复盘

sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时候会自动恢复。调用sleep不会释放对象锁wait是Object类的方法,对此对象调用wait方法…

AI 能在哪些方面提高普通的程序员的效率

一、提高编码效率 1、起名字:变量名、函数名、类名、表名、数据库名(相信每个程序员都因为起名字掉了不少头发) 2、写简单的工具函数代码、结构转换代码:比如求2个数组的元素交集;把类转换成B类,原来需要一个字段一个字段的手动赋…