Pyecharts新版map中国地图不显示数据的解决方案
本文最后更新于 2024-06-24,文章内容可能已经过时。
问题背景:
在使用Pyecharts的map中国地图当中,数据结构已经构成,但是运行时候之后数据并没有显示出来,如下图:
原因分析:
新版Pyecharts的map中国地图,省份参数需要加上"省“,例如:“安徽”,就必须要是安徽省,这样数据才能在地图中显示,再给出的json数据中,或许会存在省市数据不符合标准map格式的情况,此时必须要对数据进行再处理。
问题解决:
def province(provice_name):
provinces = ["北京市", "天津市", "河北省", "山西省", "内蒙古自治区", "辽宁省", "吉林省", "黑龙江省", "上海市",
"江苏省", "浙江省", "安徽省", "福建省", "江西省",
"山东省", "河南省", "湖北省", "湖南省", "广东省", "广西壮族自治区", "海南省", "重庆市", "四川省",
"贵州省", "云南省", "西藏自治区", "陕西省", "甘肃省",
"青海省", "宁夏回族自治区", "新疆维吾尔自治区", "台湾省", "香港特别行政区", "澳门特别行政区"]
for province in provinces:
if provice_name in province:
return province
return "未定义名称的省份"
def province(provice_name):
:这是一个函数定义,函数名为province
,它接受一个参数provice_name
。provinces = ["北京市", "天津市", ...]
:这是一个包含省份名称的列表,其中包括了中国各个省、直辖市和自治区的名称。for province in provinces:
:这是一个循环,它会遍历provinces
列表中的每个元素,将每个省份名称赋值给变量province
。if provice_name in province:
:这是一个条件语句,检查传入的provice_name
是否在当前遍历到的省份名称中。return province
:如果找到匹配的省份,函数会返回该省份的名称。return "
未定义名称的省份"
:如果没有找到匹配的省份,函数会返回字符串 “未定义名称的省份”
解决结果:
完整代码:
import json
from pyecharts.charts import Map
from pyecharts.options import TitleOpts, VisualMapOpts
#新版map模块限定,省份参数必须要有“省”,所以需要检查参数数据并作出调整
def province(provice_name):
provinces = ["北京市", "天津市", "河北省", "山西省", "内蒙古自治区", "辽宁省", "吉林省", "黑龙江省", "上海市",
"江苏省", "浙江省", "安徽省", "福建省", "江西省",
"山东省", "河南省", "湖北省", "湖南省", "广东省", "广西壮族自治区", "海南省", "重庆市", "四川省",
"贵州省", "云南省", "西藏自治区", "陕西省", "甘肃省",
"青海省", "宁夏回族自治区", "新疆维吾尔自治区", "台湾省", "香港特别行政区", "澳门特别行政区"]
for province in provinces:
if provice_name in province:
return province
return "未定义名称的省份"
# 读取文件数据
with open("E:/project/PycharmProjects/py_01/pythonProject/Python_练习题/resource/疫情.txt", "r",
encoding="UTF-8") as f_map:
cn_mapdata = f_map.read()
# 将 JSON 转换为字典类型
cn_mapdata_dict = json.loads(cn_mapdata)
# 获取省份数据 areaTree 字段
cn_province_data_list = cn_mapdata_dict["areaTree"][0]["children"]
# print(cn_province_data_list)
province_data_list = []
# 获取每个省份的确诊人数
for cn_province_data in cn_province_data_list:
# cn_province_name_data = cn_province_data["name"] # 获取省份名称
# print(cn_province_name_data)
cn_province_name_data = province(cn_province_data["name"]) #获取省份名称并调用函数进行名称处理
cn_province_confirm_data = cn_province_data["total"]["confirm"] # 确诊人数
# print(cn_province_confirm_data)
# 将获取的数据整合
province_data_list.append((cn_province_name_data, cn_province_confirm_data))
cn_map = Map()
# 添加地图所需数据
cn_map.add("各省份确认人数", province_data_list, "china")
# 配置全局属性
cn_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": "white"},
{"min": 100, "max": 999, "label": "100-999人", "color": "skyblue"},
{"min": 1000, "max": 9999, "label": "1000-9999人", "color": "orange"},
{"min": 10000, "max": 99999, "label": "10000-99999人", "color": "red"},
{"min": 100000, "label": "100000+", "color": "black"}
]
)
)
# 绘制图片
cn_map.render("全国疫情确诊人数地图.html")
参考来源:
作者:m0_70227179 于 2023-08-13 19:53:20 发布 参考链接:https://blog.csdn.net/m0_70227179/article/details/132263891