3
我使用散景通過將ColumnDataSource
傳遞給figure.circle
函數來創建散點圖。數據源有一列指定每個點的某些顏色,每行有十六進制代碼,因爲我想要使用的着色方案有些複雜。散景,如何更改使用CustomJS回調標誌符號顏色的列?
有沒有一種方法可以更改用於給小部件回調中的圓圈着色的列?我在想象一個下拉菜單,讓用戶可以爲點選擇各種着色方案。
我使用散景通過將ColumnDataSource
傳遞給figure.circle
函數來創建散點圖。數據源有一列指定每個點的某些顏色,每行有十六進制代碼,因爲我想要使用的着色方案有些複雜。散景,如何更改使用CustomJS回調標誌符號顏色的列?
有沒有一種方法可以更改用於給小部件回調中的圓圈着色的列?我在想象一個下拉菜單,讓用戶可以爲點選擇各種着色方案。
下面是一個使用models.Select
插件和models.CustomJS
的溶液的一個例子,選擇在定義的兩個着色方案的出ColumnDataSource
Figure.circle
的:
import bokeh
import bokeh.plotting
p = bokeh.plotting.figure(x_range=(0,4), y_range=(0,4), plot_height=200)
csource = bokeh.models.ColumnDataSource(data=dict(
x=[1,2,3],
y=[1,2,1],
colors1=["#ff0000","#00ff00","#0000ff"],
colors2=["#ff00ff","#ffff00","#00ffff"]))
cir = p.circle(x="x",y="y",fill_color="colors1",line_color="colors1",
size=20,source=csource)
cb_cselect = bokeh.models.CustomJS(args=dict(cir=cir,csource=csource), code ="""
var selected_color = cb_obj.value;
cir.glyph.line_color.field = selected_color;
cir.glyph.fill_color.field = selected_color;
csource.trigger("change")
""")
color_select = bokeh.models.Select(title="Select colors", value="colors1",
options = ["colors1","colors2"], callback = cb_cselect)
layout = bokeh.layouts.gridplot([[p],[color_select]])
bokeh.io.output_file("output.html")
bokeh.io.show(layout)
謝謝你帶舉例說明。我意識到我應該簡單地在顏色數據源中創建一個列,然後用回調將顏色加載到它中。 –
任何機會,你也知道如何更改從JS回調顏色條? –
我還沒有測試顏色條功能。以前的Bokeh版本沒有色條,所以我創建了一個作爲第二個陰謀,並添加了基於matplotlib映射的一些色條選擇:請參閱https://github.com/pmreyes2/bokeh_utils –