使用pyecharts开发时,地图上的颜色并没有按照预期的视觉映射规则显示。
我做了两份,一份是中国地图,一份是河南地图。中国地图的视觉映射(即颜色无法映射),但是河南地图确实正常显示。
反复检查代码和pyecharts版本后也没有发现问题(pyecharts版本为2.0.5,python版本为3.10)
代码如下
"""
疫情时期地图开发
"""
import json
from pyecharts.charts import Map
from pyecharts.options import *
# 数据操作
# f = open("D:\work\疫情.txt", "r", encoding="UTF-8")
# data = f.read()
# f.close()
with open("D:\work\疫情.txt", "r", encoding="UTF-8") as f:
data = f.read()
# 获取数据制作样本
data_dict = json.loads(data)
data_list = data_dict["areaTree"][0]["children"]
# print(data_list)
# data_list_main = []
# for i in data_list:
# data_list_name = i["name"]
# data_list_number = i["total"]["confirm"]
# data_list_main.append((data_list_name, data_list_number))
data_list_main = [(i["name"], i["total"]["confirm"]) for i in data_list]
print(data_list_main)
# 创建地图对象
map = Map()
map.add("各省份确诊人数", data_list_main, "china")
# 调整全局变量
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": "#00FFFF"}, # 蓝色
{"min": 100, "max": 999, "label": "100~999人", "color": "#FFFF00"}, # 黄色
{"min": 1000, "max": 4999, "label": "1000~4999人", "color": "#FFA07A"}, # 肉色
{"min": 5000, "max": 9999, "label": "5000~9999人", "color": "#FF7256"}, # 粉红
{"min": 10000, "max": 99999, "label": "10000~99999人", "color": "#FF0000"}, # 红色
{"min": 100000, "label": "100000+", "color": "#8B0000"} # 深红色
]
)
)
map.render("全国疫情地图.html")
#运行结果如下:
[('台湾', 15880), ('江苏', 1576), ('云南', 982), ('河南', 1518), ('上海', 2408), ('湖南', 1181), ('湖北', 68286), ('广东', 2978), ('香港', 12039), ('福建', 773), ('浙江', 1417), ('山东', 923), ('四川', 1179), ('天津', 445), ('北京', 1107), ('陕西', 668), ('广西', 289), ('辽宁', 441), ('重庆', 603), ('澳门', 63), ('甘肃', 199), ('山西', 255), ('海南', 190), ('内蒙古', 410), ('吉林', 574), ('黑龙江', 1613), ('宁夏', 77), ('青海', 18), ('江西', 937), ('贵州', 147), ('西藏', 1), ('安徽', 1008), ('河北', 1317), ('新疆', 980)]
"""
河南省疫情地图开发
"""
import json
from pyecharts.charts import Map
from pyecharts.options import *
# 数据的处理,获取json数据
with open("D:\work\疫情.txt", "r", encoding="UTF-8") as f:
data = f.read()
data_dict = json.loads(data)
data_list = data_dict["areaTree"][0]["children"][3]["children"]
data_list_main = [(i["name"] + "市", i["total"]["confirm"]) for i in data_list]
print(data_list_main)
# 地图本体的开发
map = Map()
map.add("河南省疫情数据", data_list_main, "河南")
map.set_global_opts(
title_opts=TitleOpts(title="河南疫情地图"),
visualmap_opts=VisualMapOpts(
is_show=True,
is_piecewise=True,
pieces=[
{"min": 1, "max": 49, "label": "1~49人", "color": "#00FFFF"}, # 蓝色
{"min": 50, "max": 99, "label": "50~99人", "color": "#FFFF00"}, # 黄色
{"min": 100, "max": 299, "label": "100~299人", "color": "#FFA07A"}, # 肉色
{"min": 300, "max": 599, "label": "300~599人", "color": "#FF7256"}, # 粉红
# {"min": 10000, "max": 99999, "label": "10000~99999人", "color": "#FF0000"}, # 红色
# {"min": 100000, "label": "100000+", "color": "#8B0000"} # 深红色
]
)
)
map.render("河南疫情地图.html")
#这段代码能正常运行并达到我想要的效果
我希望能找到我的第一段代码问题出在哪里或者提供一个错误可能出现的方向