【问题标题】:Folium choropleth key_on - I'm missing something obviousFolium choropleth key_on - 我错过了一些明显的东西
【发布时间】:2019-09-18 00:37:26
【问题描述】:

我正在尝试按邮政编码计算已安装的光伏容量。 我有熊猫系列(tas_kW_series)中的安装数据,索引是 int 的邮政编码。 我已经下载了澳大利亚的 ESRI 形状文件,将它们转换为 GeoJson(使用在线工具)。视觉上格式是正确的。我不得不将 Geojson 拆分为多个状态以减小大小,单个 json 与 geojson 层一起使用,但不是 choropleth

我可以让形状显示在 Geojson 图层上,但 choropleth 失败了,在我认为的 'key_on' 参数上,我只是无法弄清楚它有什么问题 - 它映射到正确的部分geojson,输入数据是一个序列,所以不需要提供列名。

我必须添加一个新的“属性”字段(“pc_int”),并将邮政编码转换为“int”以匹配系列的索引。这是在 json 文件中

数据的邮政编码比geojson多,我已经删除了多余的

我已经检查了所有我知道 geojson 的结构如何匹配我在调用者中使用的 'feature.properties.pc_int' 的方式。

我已经浏览了源代码,我很确定它是正确的

Postcode Data (following tas_kW_series.to_dict())
{7000: 2027.2620000000002,
 7001: 94.36,
 7002: 13.5,
 7004: 910.943,
 7005: 1644.2499999999998,
 7006: 25.1,
 7007: 612.258,
 7008: 1525.3100000000004,
 7009: 1478.017,
 7010: 1876.863,
 7011: 1770.325,
 7012: 205.06,
 7015: 1557.3830000000003,
 7016: 233.579,...

GeoJson(进行一些编辑以删除多边形细节) TAS_data = json.load(TAS.json)

TAS_data['features'][0] = 

{'type': 'Feature',
 'geometry': {'type': 'Polygon',
  'coordinates': [[[147.3199543290001, -42.85551239399996],
    [147.32003433700004, -42.85554737699994],
    [147.32014234000007, -42.85558237899994],
    [147.3202043540001, -42.855599380999934],...
...
    [147.31961900400006, -42.856079991999934],
    [147.31967809700006, -42.85600952499993],
    [147.3199543290001, -42.85551239399996]]]},
 'properties': {'POA_CODE16': '7000',
  'POA_NAME16': '7000',
  'AREASQKM16': 10.8544,
  'pc_int': 7000}}

合唱团呼叫 -

folium.Choropleth(geo_data = 'TAS.json', 
                  data = tas_kW_series,
                  name = 'Tasmania STC Installations - Total Capacity (kW)',
                  key_on = 'feature.properties.pc_int',
                  bins = 10,
                  fill_opacity = 0.7,
                  line_opacity = 0.2,
                  legend_name = 'Installed Capacity (kW)').add_to(m)

追溯

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-46-7bcc2e3b37d6> in <module>
      7                   fill_opacity = 0.7,
      8                   line_opacity = 0.2,
----> 9                   legend_name = 'Installed Capacity (kW)').add_to(m)

~\AppData\Local\conda\conda\envs\mlbook\lib\site-packages\folium\features.py in __init__(self, geo_data, data, columns, key_on, bins, fill_color, nan_fill_color, fill_opacity, nan_fill_opacity, line_color, line_weight, line_opacity, name, legend_name, overlay, control, show, topojson, smooth_factor, highlight, **kwargs)
    932         self._name = 'Choropleth'
    933 
--> 934         if data is not None and not color_brewer(fill_color):
    935             raise ValueError('Please pass a valid color brewer code to '
    936                              'fill_local. See docstring for valid codes.')

~\AppData\Local\conda\conda\envs\mlbook\lib\site-packages\branca\utilities.py in color_brewer(color_code, n)
    147 
    148     if base_code not in core_schemes:
--> 149         raise ValueError(base_code + ' is not a valid ColorBrewer code')
    150 
    151     try:

ValueError: blue is not a valid ColorBrewer code

预期输出是叶图上的等值线层,根据 tas_kW_series 中值的分箱进行着色。实际输出是上面的回溯。

【问题讨论】:

    标签: python folium choropleth


    【解决方案1】:

    错误来自folium.Choroplethfill_color属性,因为blue是默认设置的:

    fill_color: string, default 'blue'
    |      Area fill color. Can pass a hex code, color name, or if you are
    |      binding data, one of the following color brewer palettes:
    |      'BuGn', 'BuPu', 'GnBu', 'OrRd', 'PuBu', 'PuBuGn', 'PuRd', 'RdPu',
    |      'YlGn', 'YlGnBu', 'YlOrBr', and 'YlOrRd'.
    

    将其更改为正常颜色,例如 BluesReds(带有 s,因为您有多个垃圾箱)或上面颜色 brewer 调色板中列出的内容,例如 'BuGn''BuPu' ...

    【讨论】:

      【解决方案2】:

      Choropleth map using folium and pandas

      dataframe 和 geojson 应该只包含 key_on 数据。它还有助于通过 geopandas 数据框运行转换后的 geoJSON,添加数据以进行可视化,并拆分为地理数据和信息数据,仅包括在 geojson 中用作键的值。

      tl;dr,在我从属性字典中删除多余的字段后,效果很好。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-17
        • 1970-01-01
        • 2010-09-06
        • 2015-07-15
        • 1970-01-01
        • 2014-06-07
        相关资源
        最近更新 更多