如何让 Bokeh ColorBar 显示最小值和最大值?
How do I get a Bokeh ColorBar to show the min and max value?
我正在使用 Bokeh 制作气泡图,并希望 ColorBar 显示最小值和最大值。给出的数据看起来像这样
In[23]: group_counts.head()
cyl yr counts size
0 3 72 1 0.854701
1 3 73 1 0.854701
2 3 77 1 0.854701
3 3 80 1 0.854701
4 4 70 7 5.982906
我正在使用
生成绘图
x_col = 'cyl'
y_col = 'yr'
color_transformer = transform.linear_cmap('counts', Inferno256,
group_counts.counts.min(),
group_counts.counts.max())
color_bar = ColorBar(color_mapper=color_transformer['transform'],
location=(0, 0))
source = ColumnDataSource(data=group_counts)
p = plotting.figure(x_range=np.sort(group_counts[x_col].unique()),
y_range=np.sort(group_counts[y_col].unique()),
plot_width=400, plot_height=300,
x_axis_label=x_col, y_axis_label=y_col)
p.add_layout(color_bar, 'right')
p.scatter(x=x_col, y=y_col, size='size', color=color_transformer,
source=source)
plotting.show(p)
请注意,颜色栏上的最小值和最大值没有标记。如何强制颜色条标记这些值?
您可以使用位于 bokeh.models
下的 FixedTicker
class 来完成此操作。它旨在用于,
Generate ticks at fixed, explicitly supplied locations.
要提供最小和最大数据值,请指定所需的刻度值,然后使用 ticker
关键字参数将该对象传递给 ColorBar
。
mn = group_counts.counts.min()
mx = group_counts.counts.max()
n_ticks = 5 # how many ticks do you want?
ticks = np.linspace(mn, mx, n_ticks).round(1) # round to desired precision
color_ticks = FixedTicker(ticks=ticks)
color_bar = ColorBar(color_mapper=color_transformer['transform'],
location=(0, 0),
ticker=color_ticks, # <<< pass ticker object
)
如果您想要更奇特的东西,bokeh.models.tickers
documentation 中目前描述了 14 种不同的代码(搜索 Ticker(**
以在不同选项之间快速跳转)。
我正在使用 Bokeh 制作气泡图,并希望 ColorBar 显示最小值和最大值。给出的数据看起来像这样
In[23]: group_counts.head()
cyl yr counts size
0 3 72 1 0.854701
1 3 73 1 0.854701
2 3 77 1 0.854701
3 3 80 1 0.854701
4 4 70 7 5.982906
我正在使用
生成绘图x_col = 'cyl'
y_col = 'yr'
color_transformer = transform.linear_cmap('counts', Inferno256,
group_counts.counts.min(),
group_counts.counts.max())
color_bar = ColorBar(color_mapper=color_transformer['transform'],
location=(0, 0))
source = ColumnDataSource(data=group_counts)
p = plotting.figure(x_range=np.sort(group_counts[x_col].unique()),
y_range=np.sort(group_counts[y_col].unique()),
plot_width=400, plot_height=300,
x_axis_label=x_col, y_axis_label=y_col)
p.add_layout(color_bar, 'right')
p.scatter(x=x_col, y=y_col, size='size', color=color_transformer,
source=source)
plotting.show(p)
请注意,颜色栏上的最小值和最大值没有标记。如何强制颜色条标记这些值?
您可以使用位于 bokeh.models
下的 FixedTicker
class 来完成此操作。它旨在用于,
Generate ticks at fixed, explicitly supplied locations.
要提供最小和最大数据值,请指定所需的刻度值,然后使用 ticker
关键字参数将该对象传递给 ColorBar
。
mn = group_counts.counts.min()
mx = group_counts.counts.max()
n_ticks = 5 # how many ticks do you want?
ticks = np.linspace(mn, mx, n_ticks).round(1) # round to desired precision
color_ticks = FixedTicker(ticks=ticks)
color_bar = ColorBar(color_mapper=color_transformer['transform'],
location=(0, 0),
ticker=color_ticks, # <<< pass ticker object
)
如果您想要更奇特的东西,bokeh.models.tickers
documentation 中目前描述了 14 种不同的代码(搜索 Ticker(**
以在不同选项之间快速跳转)。