RicardoM.Lu1 2024-05-07 23:39 采纳率: 80.6%
浏览 10

在使用pyecharts绘制地图时出现问题

#pyecharts绘制完地图后,地图上没有所需要的颜色出现
#代码如下:

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()
# 获取数据制作样本
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))
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, "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")

运行结果如下:

[('台湾', 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)]

出现的问题是,地图为黑白的

img

img

我现在的诉求就是希望设定的颜色能正确的出现在地图上

  • 写回答

5条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-05-07 23:40
    关注

    引自免费微信小程序:皆我百晓生

    根据您提供的代码和描述,看起来地图上的颜色并没有按照预期的视觉映射(VisualMap)规则显示。这可能是由于数据值与视觉映射区间不匹配导致的。为了修复这个问题,我们可以检查一下数据中的确诊人数范围是否覆盖了所有预设的颜色区间。

    首先,让我们确认一下数据中的最大确诊人数是多少,然后将这个数值作为参考调整视觉映射的区间。这里是修改后的代码:

    import json
    from pyecharts.charts import Map
    from pyecharts.options import *
    
    # 数据操作
    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"]
    
    # 计算最大确诊数
    max_confirmed = max([i[1] for i in data_list])
    
    # 数据列表
    data_list_main = [(i[0], i[1]) for i in data_list]
    
    # 创建地图对象
    map = Map()
    map.add("各省份确诊人数", data_list_main, "china")
    
    # 调整全局变量
    title = "全国疫情地图"
    visual_map_min = 1
    visual_map_max = int(max_confirmed) + 1  # 根据最大确诊数动态设置
    label_format = "{value}人"
    
    visual_map_options = VisualMapOpts(
        is_show=True,
        is_piecewise=True,
        range_text=[label_format.format(value=v) for v in [visual_map_min, visual_map_max]],
        pieces=[
            {"min": 1, "max": 99, "label": label_format.format(value=99), "color": "#CCFFFF"},
            {"min": 100, "max": 999, "label": label_format.format(value=999), "color": "#FFFF99"},
            {"min": 1000, "max": 4999, "label": label_format.format(value=4999), "color": "#FF9966"},
            {"min": 5000, "max": 9999, "label": label_format.format(value=9999), "color": "#FF6666"},
            {"min": 10000, "max": 99999, "label": label_format.format(value=99999), "color": "#CC3333"},
            {"min": 100000, "label": label_format.format(value=max_confirmed), "color": "#990033"},
        ],
    )
    
    map.set_global_opts(
        title_opts=TitleOpts(title=title),
        visualmap_opts=visual_map_options,
    )
    map.render("全国疫情地图.html")
    

    这段代码首先计算了数据集中最大的确诊人数,并将其用于调整视觉映射的最大值。这样可以确保所有的颜色区间都能被覆盖到。同时,我们还更新了range_text选项,使其显示更直观的确诊人数范围。

    请确保您的数据文件路径正确,并且运行上述代码。这次应该可以看到对应的颜色在地图上正确地显示出来。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 5月7日

悬赏问题

  • ¥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 求解决扩散模型代码问题
  • ¥15 工创大赛太阳能电动车项目零基础要学什么