Моя проблема похожа на это обсуждение - https://github.com/bokeh/bokeh/issues/5020
Я пытаюсь выделить точки на боке с помощью схемы раскраски в логарифмическом масштабе, и у меня есть цветовая полоса, которая идет вдоль с этим. Мои «значения цвета» (то есть то, что я собираюсь варьировать от 1e-9 до 1e-3).
Моя проблема сейчас заключается в том, что я могу заставить цветовую панель соответствовать этому определенному цветовому диапазону соответствующим образом, используя LogColorMapper и LogTicker, но использование одного и того же LogColorMapper для свойства fill_color на моих точках, кажется, отображается неправильно. См. Свернутый пример ниже:
import numpy as np
from bokeh.io import show
from bokeh.models import ColorBar, LogTicker,Ticker,HoverTool
from bokeh.models.sources import ColumnDataSource
from bokeh.models.mappers import LinearColorMapper, LogColorMapper
from bokeh.palettes import Viridis6, Viridis3,Spectral11
from bokeh.plotting import figure
x = np.linspace(0, 1000, num=1000)
y = [np.random.random()*1000 for x in range(0,1000)]
#generate a random lognormal list, median 1e-6 with standard deviation of 1 order of magnitude
z = 10**np.random.normal(-6, 1, size=1000)
source = ColumnDataSource(dict(x=x, y=y, z=z))
log_mapper = LogColorMapper(palette=Viridis6, low=1e-9, high=1e-3)
custom_hover = HoverTool()
custom_hover.tooltips=[('Value','@z'),]
p = figure(x_axis_type='linear', toolbar_location='above',tools=[custom_hover])
opts = dict(x='x', line_color=None, source=source)
p.circle(y='y', fill_color={'field': 'z', 'transform': log_mapper}, legend="Log mapper", **opts)
colorbar = ColorBar(color_mapper=log_mapper,ticker=LogTicker(), location=(0,0), orientation='horizontal', padding=0)
p.add_layout(colorbar, 'below')
show(p)
Когда это всплывает, я получаю что-то вроде screencap
Использование hovertool для наведения на точки (извините, я не знаю как встраивать / связывать графики боке) ... вы увидите, что цвета на графике не соответствуют значениям точек. Что мне здесь не хватает?