问题描述
我对使用 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)
先谢谢你!