Background:
building a Bokeh server application that (among other things) displays 1-D traces on log-scale figures (i.e., y-axis logarithmic); source data is typed numpy arrays.
We recently updated to Bokeh 0.12.4 and in testing I ran into the following error in Chrome that prevents the figure from displaying (approximate trace follows, unfortunately minified):
Uncaught TypeError: t.map is not a function
window.Bokeh.Bokeh.models/mappers/log_mapper.r.LogMapper.e.v_map_to_target
window.Bokeh.Bokeh.models/canvas/cartesian_frame.r.CartesianFrame.e.map_to_screen
window.Bokeh.Bokeh.models/plots/plot_canvas.r.PlotCanvasView.e.map_to_screen
window.Bokeh.Bokeh.models/glyphs/glyph.r.GlyphView.e.map_to_screen
window.Bokeh.Bokeh.models/glyphs/glyph.r.GlyphView.e.map_data
window.Bokeh.Bokeh.models/renderers/glyph_renderer.r.GlyphRendererView.e.render
window.Bokeh.Bokeh.models/plots/plot_canvas.r.PlotCanvasView.e._render_levels
window.Bokeh.Bokeh.models/plots/plot_canvas.r.PlotCanvasView.e.render
window.Bokeh.Bokeh.core/util/throttle.r.throttle.i
``
After some digging, it appears that the problem is that my Chrome is fairly outdated at version 44, and therefore lacks support for the ES6 TypedArray map() function, and LogMapper.v_map_to_target is being passed a Float64Array that then attempts to call map(). By comparison, my Firefox (still old at v39, but supporting map()) displays the plot without issue. Glancing at the MDN reference’s compatibility section, I suspect that Safari and IE would run into the same problem, but a more up-to-date Chrome and Firefox should be unaffected. (Possibly related: Bokeh issue #5056.)
Below, a minimal server example that exhibits the error when accessed with Chrome v44:
import numpy
from bokeh.plotting import figure, curdoc
x = numpy.arange(0,10,0.1,dtype=‘float64’)
y = numpy.arange(2,12,0.1,dtype=‘float64’)
fig = figure(y_axis_type=‘log’)
fig.line(x,y)
curdoc().add_root(fig)
``
Not high priority, but a compatibility hole that may be worth plugging.
Peter Stoeckl