2016-12-15 3 views
0

Circle()グリフオブジェクトをズームベースの動的サイズのGMapPlotキャンバスにプロットすることは可能ですか?私は中心点と半径をメートルで表した円領域を表示したいと思います。 Googleマップの拡大に基づいて、このサークルを小さくて大きなサイズで表示したいと考えています。Python bokeh Googleマップの動的グリフのサイズは、ズームに基づいて

これは何らかの方法で達成できますか?


UPDATE: 私は次のコードでサイズの円を修正するプロットすることができます:ここで

from bokeh.document import Document 
from bokeh.embed import file_html 
from bokeh.resources import INLINE 
from bokeh.models import (GMapPlot, GMapOptions, ColumnDataSource, 
    Circle, DataRange1d, PanTool, WheelZoomTool, BoxSelectTool) 

map_options = GMapOptions(lat=30.29, lng=-97.73, map_type="roadmap", zoom=11) 

plot = GMapPlot(x_range=DataRange1d(), y_range=DataRange1d(), map_options=map_options, 
    title="Austin", api_key=GOOGLE_API_KEY) 

source = ColumnDataSource(data=dict(lat=[30.29, 30.20, 30.29], 
    lon=[-97.70, -97.74, -97.78],)) 

circle = Circle(x="lon", y="lat", size=15, fill_color="blue", fill_alpha=0.8, 
    line_color=None) 

plot.add_glyph(source, circle) 

plot.add_tools(PanTool(), WheelZoomTool(), BoxSelectTool()) 

# Save HTML file  
doc = Document() 
doc.add_root(plot) 

filename = './google_maps_test.html' 

with open(filename, "w") as f: 
    f.write(file_html(doc, INLINE, 'Google Maps plot')) 

size=15は、ピクセルまたはいくつかの固定サイズを意味し、私は図をスクロールしていたときに変更されません。 ... ColumnDataSourceオブジェクトの中にradiusという値を持つことができます。値はメートル単位の半径です(例:50,75,100)。そして私はsize=radiusを使用します...

ありがとう!

+0

何を試しましたか? – bigreddot

+0

サンプルコードで質問を更新しました... – ragesz

答えて

1

グリフはsizeradiusの両方のプロパティを受け入れます。デフォルトではsizeは「画面単位」(基本的にはピクセル)です。このため、ズームレベルに関係なく同じサイズを維持します。ズームレベルで円を拡大するには、radiusが "データスペース単位"に解釈されるので、radiusの値を指定する方がよいでしょう。私。この場合、メートル単位になります(GMapPlot軸の単位はメートル単位です)。

circle = Circle(x="lon", 
       y="lat", 

       # corresponds to 15 meters, so scales accordingly with zoom 
       radius=15,   

       fill_color="blue", 
       fill_alpha=0.8, 
       line_color=None) 
+0

ありがとう、完璧に動作します!!!!! – ragesz

+0

実際のコードでは、「CircleX」を使用したかったのですが、「radius'属性はありません:(AttributeError:CircleXへの予期せぬ属性 'radius」もちろんCircleも仕事をします... – ragesz

+0

、 'Circle'だけが' radius'を持っています(バブルチャートをサポートするために)。他のすべてのマーカーはスキャッターマーカーで、 'size'しかサポートしません。 – bigreddot

関連する問題