首页 > 解决方案 > Python Bokeh:fill_color in 的问题。Choropleth Map 用灰色填充,但值为零。可能是范围问题?

问题描述

我对使用 Python 非常陌生,尤其是对使用 Bokeh 库很陌生。我正在尝试绘制美国的 Choropleth 地图,每个州的填充颜色对应于他们一年的蜜蜂数量。

当您将鼠标悬停在它上面时,它会显示该值,但只有值为零的状态才有颜色。

链接到输出图的图像在这里。

我知道我认为导致问题的范围(最小值:0,最大值:310,000)存在很大差异。如何更改颜色图的范围以不使用灰色填充所有较高的值?

以下代码供参考:

from bokeh.models import LogColorMapper
from bokeh.palettes import YlGnBu9 as YlGnBu
from bokeh.sampledata.us_states import data as us_states
import pandas as pd
import numpy as np

bee_pop = pd.read_csv('./BeePopulation.csv')
us_states_df = pd.DataFrame(us_states).T
us_states_df = us_states_df[~us_states_df["name"].isin(['Alaska', "Hawaii", "District of 
                                                                               Columbia"])]
us_states_df["lons"] = us_states_df.lons.values.tolist()
us_states_df["lats"] = us_states_df.lats.values.tolist()
us_states_df = us_states_df.reset_index()
bee_2016 = bee_pop[bee_pop['Year']==2016]
us_states_df = us_states_df.merge(bee_2016[["State", "Pop"]], how="left", left_on="index", 
                                                                           right_on="State")
us_states_df.head()
us_states_datasource = {}
us_states_datasource["lons"] = us_states_df.lons.values.tolist()
us_states_datasource["lats"] = us_states_df.lats.values.tolist()
us_states_datasource["name"] = us_states_df.name.values.tolist()
us_states_datasource["BeePop"] = us_states_df.Pop.values.tolist()
fig = figure(plot_width=900, plot_height=600,
         title="United Bee Population Per State Choropleth Map",
         x_axis_location=None, y_axis_location=None,
         tooltips=[
                    ("Name", "@name"), ("Bee Population", "@BeePop")
                  ])

fig.grid.grid_line_color = None

fig.patches("lons", "lats", source=us_states_datasource,
        fill_color={'field': 'BeePop', 'transform': LogColorMapper(palette=YlGnBu[::-1])},
        fill_alpha=0.7, line_color="white", line_width=0.5)

show(fig)

先感谢您!

标签: pythoncsvbokehchoroplethpalette

解决方案


具有LogColorMapper可配置highlow属性。当然,另一种选择是使用不同的颜色映射器,例如,LinearColorMapper或者CategorgicalColorMapper与一些分类分箱结合使用。


推荐阅读