catalpa-bungei 发表于 2023-7-26 23:04:55

python画美国地图热力图为何不是每个州填满颜色

本帖最后由 catalpa-bungei 于 2023-7-26 23:25 编辑

python画美国地图热力图为何不是每个州填满颜色,而是一个个颜色深浅不一、大小不一向四周扩散的点啊?
我的目标就是画一个填充图,我该如何修改呢?

    geo = (                                                          # 添加坐标点
      Geo(init_opts=opts.InitOpts(width = "1200px", height = "600px", bg_color = 'white'))
      .add_schema(maptype="美国",itemstyle_opts=opts.ItemStyleOpts(color='white', border_color="#111"))
      .set_series_opts(label_opts=opts.LabelOpts(is_show=True))
      .add_coordinate('WA',-120.04,47.56)
      .add_coordinate('OR',-120.37,43.77)
      .add_coordinate('CA',-120.44,36.44)
      .add_coordinate('AK',-122.00,28.46)
      .add_coordinate('ID',-114.08,43.80)
      .add_coordinate('NV',-116.44,39.61)
      .add_coordinate('MT',-109.42,47.13)
      .add_coordinate('WY',-107.29,42.96)
      .add_coordinate('UT',-111.19,39.35)
      .add_coordinate('AZ',-111.70,34.45)
      .add_coordinate('HI',-105.25,28.72)
      .add_coordinate('CO',-105.52,38.89)
      .add_coordinate('NM',-106.11,34.45)
      .add_coordinate('ND',-100.22,47.53)
      .add_coordinate('SD',-100.52,44.72)
      .add_coordinate('NE',-99.64,41.65)
      .add_coordinate('KS',-98.53,38.43)
      .add_coordinate('OK',-97.13,35.42)
      .add_coordinate('TX',-98.16,31.03)
      .add_coordinate('MN',-94.26,46.02)
      .add_coordinate('IA',-93.60,42.09)
      .add_coordinate('MO',-92.57,38.48)
      .add_coordinate('AR',-92.43,34.69)
      .add_coordinate('LA',-92.49,31.22)
      .add_coordinate('WI',-89.55,44.25)
      .add_coordinate('MI',-84.62,43.98)
      .add_coordinate('IL',-89.11,40.20)
      .add_coordinate('IN',-86.17,40.08)
      .add_coordinate('OH',-82.71,40.31)
      .add_coordinate('KY',-84.92,37.44)
      .add_coordinate('TN',-86.32,35.78)
      .add_coordinate('MS',-89.63,32.66)
      .add_coordinate('AL',-86.68,32.53)
      .add_coordinate('FL',-81.68,28.07)
      .add_coordinate('GA',-83.22,32.59)
      .add_coordinate('SC',-80.65,33.78)
      .add_coordinate('NC',-78.88,35.48)
      .add_coordinate('VA',-78.24,37.48)
      .add_coordinate('WV',-80.63,38.62)
      .add_coordinate('PA',-77.57,40.78)
      .add_coordinate('NY',-75.22,43.06)
      .add_coordinate('MD',-76.29,39.09)
      .add_coordinate('DE',-75.55,39.09)
      .add_coordinate('NJ',-74.47,40.03)
      .add_coordinate('VT',-72.70,44.13)
      .add_coordinate('NH',-71.64,43.59)
      .add_coordinate('MA',-72.09,42.33)
      .add_coordinate('CT',-72.63,41.67)
      .add_coordinate('RI',-71.49,41.64)
      .add_coordinate('ME',-69.06,45.16)
      .add_coordinate('PR',-75.37,26.42)
      .add_coordinate('DC',-77.04,38.90)
      .add("shooting number", link,type_='heatmap')
      .set_global_opts(
            title_opts=opts.TitleOpts(title="shooting number distribution"),
            visualmap_opts=opts.VisualMapOpts(is_show = True,type_='color',max_ = legend_bound,is_piecewise=True,pieces=pieces1,
                                          range_color=['royalblue', 'blue', 'mediumblue', 'blueviolet','darkorchid','darkviolet','indigo']
                            ),
      )
      .render('state_graph2.html')
    )

isdkz 发表于 2023-7-26 23:05:03

这是因为您使用了热力图(heatmap)类型的系列数据来绘制地图。热力图是根据数据的密度来显示颜色的,而不是按照每个州来填充颜色。每个点的颜色深浅和大小表示了该点上的数值大小,颜色越深表示数值越大,颜色越浅表示数值越小。点的大小表示了数据的密度,密度越大点越大,密度越小点越小。

如果您希望每个州都填充颜色,可以考虑使用地图类型为"美国"的地理坐标系,并使用散点图(scatter)类型的系列数据来绘制地图。每个州的颜色可以根据数据的数值来确定,可以使用不同的颜色映射方案来表示不同的数值范围。

Mike_python小 发表于 2023-7-26 23:05:14

这个问题可能是由于代码中使用了类型为"heatmap"的热力图,而不是每个州的填充颜色。heatmap热力图是按照数据的大小显示颜色深浅和大小不一的点,而不是将每个州填满颜色。如果你想要每个州填满颜色,可以尝试修改代码,使用不同的图表类型,比如"map"类型。

具体修改方法如下:

将代码中的type_='heatmap'改为type_='map',即使用地图类型来展示数据。修改后的代码如下:


geo = (
    Geo(init_opts=opts.InitOpts(width="1200px", height="600px", bg_color='white'))
      .add_schema(maptype="美国", itemstyle_opts=opts.ItemStyleOpts(color='white', border_color="#111"))
      .set_series_opts(label_opts=opts.LabelOpts(is_show=True))
      .add_coordinate('WA', -120.04, 47.56)
      .add_coordinate('OR', -120.37, 43.77)
      .add_coordinate('CA', -120.44, 36.44)
      .add_coordinate('AK', -122.00, 28.46)
      .add_coordinate('ID', -114.08, 43.80)
      # 其他州的坐标...
      .add("shooting number", link, type_='map')# 修改这里的图表类型为'map'
      .set_global_opts(
      title_opts=opts.TitleOpts(title="shooting number distribution"),
      visualmap_opts=opts.VisualMapOpts(is_show=True, type_='color', max_=legend_bound, is_piecewise=True,
                                          pieces=pieces1, range_color=['royalblue', 'blue', 'mediumblue',
                                                                        'blueviolet', 'darkorchid', 'darkviolet',
                                                                        'indigo']
                                          ),
    )
      .render('state_graph2.html')
)


修改后的代码将使用地图类型来呈现每个州填满颜色的效果。记得将其他州的坐标信息也添加到代码中。希望这能解决你的问题,祝你编程愉快!

球一个最佳答案谢谢啦!这对我非常重要!{:10_254:}{:10_254:}{:10_254:}
页: [1]
查看完整版本: python画美国地图热力图为何不是每个州填满颜色