RicardoM.Lu1 2024-05-13 00:16 采纳率: 80.6%
浏览 3
已结题

在使用pyecharts时出现问题

使用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")

#这段代码能正常运行并达到我想要的效果

img

img

我希望能找到我的第一段代码问题出在哪里或者提供一个错误可能出现的方向

  • 写回答

13条回答 默认 最新

  • cjh4312 2024-05-13 13:25
    关注

    注意各个省的全称,比如,北京市,湖南省,自治区也是全称才行要不没有显示

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(12条)

报告相同问题?

问题事件

  • 系统已结题 5月21日
  • 已采纳回答 5月13日
  • 修改了问题 5月13日
  • 创建了问题 5月13日

悬赏问题

  • ¥15 用matlab或python实现多个表格合并单元格
  • ¥15 gojs 点击按钮node的position位置进行改变,再次点击回到原来的位置
  • ¥15 计算决策面并仿真附上结果
  • ¥20 halcon 图像拼接
  • ¥15 webstorm上开发的vue3+vite5+typeScript打包时报错
  • ¥15 vue使用gojs,需求在link中的虚线上添加方向箭头
  • ¥15 CSS通配符清除内外边距为什么可以覆盖默认样式?
  • ¥15 SPSS分类模型实训题步骤
  • ¥100 求ASMedia ASM1184e & ASM1187e 芯片datasheet/规格书
  • ¥15 求解决扩散模型代码问题