javascript - python Bokeh ;使用 GMapPlot 上的 CustomJS 回调更改补丁颜色

标签 javascript python callback bokeh

我正在尝试向我的 Bokeh 图添加一个按钮,该按钮允许我更改使用回调添加到 GMapPlot 的补丁字形上使用的颜色。

目前我拥有的是:

from bokeh.io import output_file, show
from bokeh.models import GMapPlot, GMapOptions, ColumnDataSource, DataRange1d, Patch

map_options = GMapOptions(lat=-41.281909, lng=174.775993, zoom=13)
p = GMapPlot(x_range=DataRange1d(), y_range=DataRange1d(), map_options=map_options, api_key=API_KEY)
lats = [-41.281909, -41.281044, -41.294968]
longs = [174.775993, 174.761222, 174.764916]
source = ColumnDataSource(data=dict(lats=lats, longs=longs))
patch = Patch(x='longs', y='lats', fill_color='red', fill_alpha=0.2)
p.add_glyph(source, patch)
output_file('gmapplot.html')
show(p)

我希望能够使用按钮通过回调来编辑 fill_color。我尝试挪用this response但一直没能让它发挥作用。

任何帮助将不胜感激。

PS。如果您尝试运行此代码,您将需要使用您自己的谷歌地图 API key 。您可以获得一个here .

最佳答案

另一个响应更改了一堆圆圈的 fill_color 以引用列数据源中不同的颜色(以便所有圆圈都可以有自己的颜色)自己的颜色)通过更改 field 属性。由于您尝试为一次 Patch 设置单个颜色值,因此您可能需要设置 value 而不是 field

cb = CustomJS(args=dict(patch=patch), code ="""
    patch.glyph.fill_color.value = 'blue';
""")

我想您可能需要一个触发器,但我不这么认为。

patchline 字形是 API 中有点奇怪的两个字形,因为它们并不像所有其他字形那样真正支持矢量化属性。

<小时/>

更新:也许完整的示例更清楚。另外仅供引用,至少从当前版本 (0.12.4) 开始,需要触发器

from bokeh.io import output_file, show
from bokeh.layouts import column
from bokeh.models import CustomJS, Select
from bokeh.plotting import figure

plot = figure()

r = plot.patch(x=[1, 2, 3, 4], y=[1, 2, 2, 1],
               fill_color="firebrick", fill_alpha=0.6, line_color="black")


select = Select(title="Select colors", value="firebrick",
                options = ["firebrick","navy", "olive"])

callback = CustomJS(args=dict(renderer=r, select=select), code ="""
    renderer.glyph.fill_color.value = select.value;
    renderer.trigger('change')
""")
select.callback = callback

output_file("foo.html")

show(column(select, plot))

补丁开始时是红色的。更改 UI 中的 Select 小部件会导致补丁的颜色更新:

enter image description here

如果这不是您要问的,那么我必须温和地表明问题不清楚。

关于javascript - python Bokeh ;使用 GMapPlot 上的 CustomJS 回调更改补丁颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41455881/

相关文章:

python - 通过类的 __del__ 方法关闭 python 2.7.x 中的 sqlite3 连接是否可疑?

ios - 如何处理 phonegap cordova 上的 iOS 通知回调?

javascript - 有没有办法在 Javascript 中进行下一次迭代之前等待计算

java - scriptlet 内的脚本 - 不良做法如何避免

javascript - 未捕获的语法错误 : Unexpected token ILLEGAL on php json_encode

python - 如何在 Selenium Python 中编写功能/集成测试

objective-c - 在 ARC 中获取 FSPathCopyObjectAsync 的回调

javascript - GWT Google Charts 增长但不萎缩

javascript - 比较并匹配 2 个 csv 文件

python - 在 Python 中替换 XML 元素