Python 散景:fill_color 中的问题除零值外,等值线图以灰色填充可能是范围问题?

问题描述

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

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

Link to an image of the output plot is here.

我知道我认为导致问题的范围(最小值: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)

先谢谢你!

解决方法

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