Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BUG] Can't select bar_line_color in ColorBar #10197

Closed
marcuskd opened this issue Jun 18, 2020 · 3 comments
Closed

[BUG] Can't select bar_line_color in ColorBar #10197

marcuskd opened this issue Jun 18, 2020 · 3 comments

Comments

@marcuskd
Copy link
Contributor

In Bokeh 2.1 trying to set attribute bar_line_color in the ColorBar class fails (it worked on Bokeh up to 2.0.2). Code as follows (same as User Guide -> Adding Annotations -> Colorbars with addition of setting bar_line_color)...

import numpy as np

from bokeh.models import ColorBar, LogColorMapper, LogTicker
from bokeh.plotting import figure, output_file, show

output_file('color_bar.html')

def normal2d(X, Y, sigx=1.0, sigy=1.0, mux=0.0, muy=0.0):
    z = (X-mux)**2 / sigx**2 + (Y-muy)**2 / sigy**2
    return np.exp(-z/2) / (2 * np.pi * sigx * sigy)

X, Y = np.mgrid[-3:3:100j, -2:2:100j]
Z = normal2d(X, Y, 0.1, 0.2, 1.0, 1.0) + 0.1*normal2d(X, Y, 1.0, 1.0)
image = Z * 1e6

color_mapper = LogColorMapper(palette="Viridis256", low=1, high=1e7)

plot = figure(x_range=(0,1), y_range=(0,1), toolbar_location=None)
plot.image(image=[image], color_mapper=color_mapper,
           dh=[1.0], dw=[1.0], x=[0], y=[0])

color_bar = ColorBar(color_mapper=color_mapper, ticker=LogTicker(),
                     label_standoff=12, border_line_color=None, location=(0,0),
                     bar_line_color='black')

plot.add_layout(color_bar, 'right')

show(plot)

The browser console gives the following error:

Uncaught (in promise) Error: ColorBar.bar_line_color given invalid value: {"value":"black"}
    at validate (bokeh-2.1.0.min.js:183)
    at v._update (bokeh-2.1.0.min.js:183)
    at new p (bokeh-2.1.0.min.js:183)
    at new v (bokeh-2.1.0.min.js:183)
    at new y (bokeh-2.1.0.min.js:175)
    at new l (bokeh-2.1.0.min.js:239)
    at new a (bokeh-2.1.0.min.js:233)
    at new l (bokeh-2.1.0.min.js:199)
    at new v (bokeh-2.1.0.min.js:276)
    at Function._instantiate_object (bokeh-2.1.0.min.js:162)

System:
Python 3.7.5
Bokeh 2.1.0
Chromium 81.0.4044.138
Ubuntu Mate 16.04

The same error occurred on Firefox on Ubuntu and on Chrome on Windows 10.

@mattpap mattpap added this to the 2.1.1 milestone Jun 18, 2020
@mattpap
Copy link
Contributor

mattpap commented Jun 18, 2020

Similar issue to #10181, but not exactly the same. The problem here is that ColorBar's visual properties in bokeh are vectoried, whereas they shouldn't be. In bokehjs they are non-vectorized and with stricter properties system, it results in this error. I will include a fix in PR #10192.

@mattpap
Copy link
Contributor

mattpap commented Jun 18, 2020

Actually, it's only bar_line_* visual properties that are incorrect.

@mattpap
Copy link
Contributor

mattpap commented Jun 18, 2020

We didn't catch those regressions, because defaults' tests consider v and {value: v} as interchangeable, which they aren't anymore.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants