8-数据可视化-地图可视化

1.基础地图

(1)基础结构

from pyecharts.charts import Map
map=Map() # 准备地图对象
data=[ # 数据是由元组组成的列表
    ("北京市",100),
    ("台湾省",99),
    ("上海市",98),
    ("广东省",97)
]
map.add("名称",data,"china") # 添加数据,(名称,数据,地图类型(如中国地图))
map.render() # 生成地图

在这里插入图片描述

在这里插入图片描述
(2)全局选项-颜色
颜色查找

在这里插入图片描述
在这里插入图片描述

from pyecharts.options import VisualMapOpts
map.set_global_opts( # 全局选项
    visualmap_opts=VisualMapOpts( # 可视化地图的相关设置(如设置颜色)
        is_show=True, # 展示
        is_piecewise=True, # 开启手动校准范围
        pieces=[ # 由字典组成的列表
            {
    
    "min":1,"max":9,"label":"1-9人","color":"#B22222"},
            {
    
    "min":10,"max":19,"label":"10-19人","color":"#A52A2A"},
            {
    
    "min":20,"max":29,"label":"20-29人","color":"#E9967A"},
            {
    
    "min":30,"max":39,"label":"30-39人","color":"#FA8072"},
            {
    
    "min":40,"max":49,"label":"40-49人","color":"#FFA07A"},
            {
    
    "min":50,"max":59,"label":"50-59人","color":"#FFA500"},
            {
    
    "min":60,"max":69,"label":"60-69人","color":"#FF8C00"},
            {
    
    "min":70,"max":79,"label":"70-79人","color":"#FF7F50"},
            {
    
    "min":80,"max":89,"label":"80-89人","color":"#F08080"},
            {
    
    "min":90,"max":99,"label":"90-99人","color":"#FF6347"},
        ]
    )
)

在这里插入图片描述
完整代码

from pyecharts.charts import Map # 地图
from pyecharts.options import VisualMapOpts # 可视化地图的相关设置(如设置颜色)

map=Map() # 准备地图对象
data=[ # 数据是由元组组成的列表
    ("北京市",99),
    ("台湾省",90),
    ("上海市",80),
    ("广东省",70)
]
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":"#B22222"},
            {
    
    "min":10,"max":19,"label":"10-19人","color":"#A52A2A"},
            {
    
    "min":20,"max":29,"label":"20-29人","color":"#E9967A"},
            {
    
    "min":30,"max":39,"label":"30-39人","color":"#FA8072"},
            {
    
    "min":40,"max":49,"label":"40-49人","color":"#FFA07A"},
            {
    
    "min":50,"max":59,"label":"50-59人","color":"#FFA500"},
            {
    
    "min":60,"max":69,"label":"60-69人","color":"#FF8C00"},
            {
    
    "min":70,"max":79,"label":"70-79人","color":"#FF7F50"},
            {
    
    "min":80,"max":89,"label":"80-89人","color":"#F08080"},
            {
    
    "min":90,"max":99,"label":"90-99人","color":"#FF6347"},
        ]
    )
)

map.render() # 生成地图

2.国内疫情地图

(1)数据获取
数据下载

(2)前期准备

import json
f = open("D:/地图数据/疫情.txt","r",encoding="UTF-8")
data=f.read()
f.close()
data_dict = json.loads(data)  # json转python

在这里插入图片描述

(3)数据处理

data_province_list = data_dict["areaTree"][0]["children"]

data_list=[] # 用于存储绘图需要用到的数据列表
for data_province in data_province_list:  # 遍历各个省份的数据
    province_name = data_province["name"]
    province_confirm = data_province["total"]["confirm"]
    data_list.append((province_name,province_confirm)) # 省份名和确诊人数组成元组存入列表,用于绘图

此时data_list ↓
在这里插入图片描述
此处需要对省份名规范处理

    if province_name=="内蒙古":
        province_name="内蒙古自治区"
    elif province_name=="广西":
        province_name="广西壮族自治区"
    elif province_name=="西藏":
        province_name="西藏自治区"
    elif province_name=="宁夏":
        province_name="宁夏回族自治区"
    elif province_name=="新疆":
        province_name="新疆维吾尔自治区"
    elif province_name=="北京" or province_name=="上海" or province_name=="天津" or province_name=="重庆":
        province_name=province_name+"市"
    elif province_name=="香港" or province_name=="澳门":
        province_name=province_name+"特别行政区"
    else:
        province_name = province_name + "省"

(4)图像绘制

from pyecharts.charts import Map
map=Map()
map.add("各省份确诊人数",data_list,"china")

from pyecharts.options import *
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"},
            {
    
    "min":100,"max":999,"label":"100~999人","color":"#FFFF99"},
            {
    
    "min":1000,"max":4999,"label":"1000~4999人","color":"#FF9966"},
            {
    
    "min":5000,"max":9999,"label":"5000~9999人","color":"#FF6666"},
            {
    
    "min":10000,"max":99999,"label":"10000~99999人","color":"#CC3333"},
            {
    
    "min":100000,"label":"100000+","color":"#990033"}
        ]
    )
)
map.render("全国疫情地图.html") # 指定生成文件名,默认render.html

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
完整代码

import json
f = open("D:/地图数据/疫情.txt","r",encoding="UTF-8")
data=f.read()
f.close()
data_dict = json.loads(data)  # json转python
data_province_list = data_dict["areaTree"][0]["children"]

data_list=[] # 用于存储绘图需要用到的数据列表
for data_province in data_province_list:  # 遍历各个省份的数据
    province_name = data_province["name"]
    
    if province_name=="内蒙古":
        province_name="内蒙古自治区"
    elif province_name=="广西":
        province_name="广西壮族自治区"
    elif province_name=="西藏":
        province_name="西藏自治区"
    elif province_name=="宁夏":
        province_name="宁夏回族自治区"
    elif province_name=="新疆":
        province_name="新疆维吾尔自治区"
    elif province_name=="北京" or province_name=="上海" or province_name=="天津" or province_name=="重庆":
        province_name=province_name+"市"
    elif province_name=="香港" or province_name=="澳门":
        province_name=province_name+"特别行政区"
    else:
        province_name = province_name + "省"
        
    province_confirm = data_province["total"]["confirm"]
    data_list.append((province_name,province_confirm)) # 省份名和确诊人数组成元组存入列表,用于绘图

from pyecharts.charts import Map
map=Map()
map.add("各省份确诊人数",data_list,"china")

from pyecharts.options import *
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"},
            {
    
    "min":100,"max":999,"label":"100~999人","color":"#FFFF99"},
            {
    
    "min":1000,"max":4999,"label":"1000~4999人","color":"#FF9966"},
            {
    
    "min":5000,"max":9999,"label":"5000~9999人","color":"#FF6666"},
            {
    
    "min":10000,"max":99999,"label":"10000~99999人","color":"#CC3333"},
            {
    
    "min":100000,"label":"100000+","color":"#990033"}
        ]
    )
)
map.render("全国疫情地图.html") # 指定生成文件名,默认render.html

3.省内疫情地图

以河南省为例(数据与上面相同)
(1)前期准备

import json
f = open("D:/地图数据/疫情.txt","r",encoding="UTF-8")
data=f.read()
f.close()
data_dict = json.loads(data)  # json转python
henan_province_list = data_dict["areaTree"][0]["children"][3]["children"] # 更新

在这里插入图片描述
(2)数据处理

data_list=[] # 用于存储绘图需要用到的数据列表
for data_henan in henan_province_list:  # 遍历河南各市
    henan_name = data_henan["name"]
    if henan_name=="济源示范区":
        henan_name="济源市"
    else:
        henan_name=henan_name+"市"
    henan_confirm = data_henan["total"]["confirm"]
    data_list.append((henan_name,henan_confirm))

(3)图像绘制

from pyecharts.charts import Map
map=Map()
map.add("河南省疫情分布",data_list,"河南")

from pyecharts.options import *
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"},
            {
    
    "min":100,"max":999,"label":"100~999人","color":"#FFFF99"},
            {
    
    "min":1000,"max":4999,"label":"1000~4999人","color":"#FF9966"},
            {
    
    "min":5000,"max":9999,"label":"5000~9999人","color":"#FF6666"},
            {
    
    "min":10000,"max":99999,"label":"10000~99999人","color":"#CC3333"},
            {
    
    "min":100000,"label":"100000+","color":"#990033"}
        ]
    )
)
map.render("河南省疫情地图.html")

在这里插入图片描述
在这里插入图片描述
完整代码

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

f = open("D:/地图数据/疫情.txt","r",encoding="UTF-8")
data=f.read()
f.close()
data_dict = json.loads(data)  # json转python
henan_province_list = data_dict["areaTree"][0]["children"][3]["children"]

data_list=[] # 用于存储绘图需要用到的数据列表
for data_henan in henan_province_list:  # 遍历河南各市
    henan_name = data_henan["name"]
    if henan_name=="济源示范区":
        henan_name="济源市"
    else:
        henan_name=henan_name+"市"
    henan_confirm = data_henan["total"]["confirm"]
    data_list.append((henan_name,henan_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"},
            {
    
    "min":100,"max":999,"label":"100~999人","color":"#FFFF99"},
            {
    
    "min":1000,"max":4999,"label":"1000~4999人","color":"#FF9966"},
            {
    
    "min":5000,"max":9999,"label":"5000~9999人","color":"#FF6666"},
            {
    
    "min":10000,"max":99999,"label":"10000~99999人","color":"#CC3333"},
            {
    
    "min":100000,"label":"100000+","color":"#990033"}
        ]
    )
)
map.render("河南省疫情地图.html")

猜你喜欢

转载自blog.csdn.net/weixin_45825865/article/details/130008335