Robbie,
Heads up I can't look at this immediately, but I am deleting your original message because it appeared to contain a GMaps API key. I've edited the quoted message below to remove it.
Bryan
···
On Sep 6, 2016, at 10:09 AM, Robbie Pritchard <[email protected]> wrote:
Bokeh version 0.12.1
OSX 10.11.6I am getting an AttributeError("'BasicProperty' object has no attribute 'from_json'",) and I don't know where its coming from. Attached are the log files from terminal and pycharm.
Here is some example code that gives the same error.
from bokeh.plotting import Figure, ColumnDataSource, show, vplot
from bokeh.io import output_file
from bokeh.models import (Slider, CustomJS, GMapPlot,
GMapOptions, DataRange1d, Circle, Line)
import numpy as np
from bokeh.plotting import curdoc, figure
from bokeh.layouts import row, column, widgetboxfrom bokeh.client import push_session
output_file("path.html")
# Create path around roundabout
r = 0.000192x1 = np.linspace(-1,1,100)*r
x2 = np.linspace(1,-1,100)*r
x = np.hstack((x1,x2))f = lambda x : np.sqrt(r**2 - x**2)
y1 = f(x1)
y2 = -f(x2)
y = np.hstack((y1,y2))init_x = 40.233688
init_y = -111.646784lon = init_x + x
lat = init_y + y# Initialize data sources.
location = ColumnDataSource(data=dict(x=[lon[0]], y=[lat[0]]))
path = ColumnDataSource(data=dict(x=lon, y=lat))# Initialize figure, path, and point
"""I haven't been able to verify that the GMapPlot code below works, but
this should be the right thing to do. The zoom may be totally wrong,
but my latlng points should be a path around a roundabout.
"""
options = GMapOptions(lat=40.233681, lng=-111.646595, map_type="roadmap", zoom=15)
fig = GMapPlot(x_range=DataRange1d(), y_range=DataRange1d(), map_options=options,api_key='XXXXXXXXXXXXXXXX')# fig = Figure(plot_height=600, plot_width=600)
c = Circle(x='x', y='y', size=10)
p = Line(x='x', y='y')fig.add_glyph(location, c)
fig.add_glyph(path, p)# Slider callback
callback = CustomJS(args=dict(location=location, path=path), code="""
var loc = location.get('data');
var p = path.get('data');t = cb_obj.get('value');
/* set the point location to the path location that
corresponds to the slider position */
loc['x'][0] = p['x'][t];
loc['y'][0] = p['y'][t];location.trigger('change');
""")# The way I have written this, 'start' has to be 0 and
# 'end' has to be the length of the array of path points.
slider = Slider(start=0, end=200, step=1, callback=callback)layout = column(fig, slider)
curdoc().clear()
curdoc().add_root(layout)
session = push_session(curdoc())session.show()
session.loop_until_closed()--
You received this message because you are subscribed to the Google Groups "Bokeh Discussion - Public" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit https://groups.google.com/a/continuum.io/d/msgid/bokeh/a88fe541-7f9f-416a-accf-10f59bbffdb9%40continuum.io\.
For more options, visit https://groups.google.com/a/continuum.io/d/optout\.
<Screen Shot 2016-09-06 at 9.57.33 AM.png><Screen Shot 2016-09-06 at 9.59.17 AM.png>