Python Bokeh:中的fill_color问题.Choropleth Map使用除零值以外的灰色填充.可能是范围



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

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

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

我知道范围有很大的差异(最小值:0,最大值:310000(,我认为这是造成问题的原因。如何更改颜色映射的范围,使其不使用灰色填充所有较高的值?

参考代码如下:

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)

提前谢谢!

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

最新更新