2017-01-04 7 views
1

コールバックを使用してGMapPlotに追加したパッチグリフに使用されている色を変更するボタンをbokehプロットに追加しようとしています。python bokeh; GMapPlotでCustomJSコールバックを使ってパッチカラーを変更する

現在、私が持っているものは次のとおりです。

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。このコードを実行しようとする場合は、独自のGoogleマップAPIキーを使用する必要があります。あなたはhereを得ることができます。

答えて

0

他の応答は、(すべての円は、独自の色を持つことができるように)field属性を変更することによって、列データソースの色の異なるカラムを参照するために円の束のfill_colorを変化させます。一度Patchのために1つだけのカラー値を設定しようとしているので、あなたはおそらく、私はそれはあなたがそこにtriggerを必要とするかもしれない可能だと思うfield

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

の代わりにvalueを設定したいが、私はそうは思いません。

patchlineグリフは、他のすべてのグリフのようにベクトル化されたプロパティを実際にサポートしていないため、APIで少し奇妙な2つのグリフです。


更新:おそらく完全な例が明らかです。また、FYIのtriggerが少なくとも現在のバージョン(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

それはあなたが求めているものではありませんならば、私はそっと質問が明確でないことを示唆している必要があります。

+0

お返事ありがとうございます。私は実際には私が実際に色の変化をプログラム的にコントロールできるようにしたいので、質問する前に私の質問をちょっと単純すぎると思う。 ColumnDataSourceに色のリストを追加する必要がありますか?また、複数のパッチがある場合、それらをすべてコールバックでどのように変更するのですか? – user1425706

+0

私は分かりません。あなたがプログラムで変更する方法を、あなたが付けることができる 'CustomJS'コールバックで示しました。 Bokehのボタンに。私の唯一のコメントは、 'patch'は単一のパッチしか描画しないということでした。なぜなら、' circle'のように 'field'ではなく' value'を設定したいからです。 – bigreddot

関連する問題