from bokeh.plotting import figure, output_notebook, show, hplot, vplot
from bokeh.models import Callback, ColumnDataSource, Slider
from bokeh.io import vform
output_notebook()
from bokeh.plotting import output_file
output_file('rgba.html')
fill_alpha = 0.5
init_color_value = 127
color = "rgb({0}, {0}, {0})".format(init_color_value,)
source = ColumnDataSource(data=dict(
fill_alpha=[fill_alpha,],
color=[color,],
)
)
callback = Callback(args=dict(source=source), code="""
var data = source.get('data'); // get current source var data
var r = r_slider.get('value');
var g = g_slider.get('value');
var b = b_slider.get('value');
data.color = ["rgb(" + r + ", " + g + ", " + b + ")"];
data.fill_alpha = [a_slider.get('value')];
source.trigger('change');
""")
plot = figure(plot_width=335,
plot_height=335,
title="RGBA Color Plot",
min_border=25,
toolbar_location=None,
outline_line_color="#FFFFFF",
tools='reset'
)
plot.rect(x=[1,],
y=[1,],
width=5,
height=15,
source=source,
color="color",
fill_alpha="fill_alpha")
plot.grid.grid_line_color=None
plot.axis.visible = False
r_slider = Slider(start=0, end=255, value=init_color_value, step=1, title="R", callback=callback)
g_slider = Slider(start=0, end=255, value=init_color_value, step=1, title="G", callback=callback)
b_slider = Slider(start=0, end=255, value=init_color_value, step=1, title="B", callback=callback)
a_slider = Slider(start=0, end=1, value=fill_alpha, step=0.01, title="A", callback=callback)
callback.args['r_slider'] = r_slider
callback.args['g_slider'] = g_slider
callback.args['b_slider'] = b_slider
callback.args['a_slider'] = a_slider
show(hplot(vform(r_slider, g_slider, b_slider, a_slider), vplot(plot)))