UNPKG

vue-bokeh

Version:

A wrapper around bokehjs embedded

1,358 lines (1,270 loc) 56.8 kB
(function() { var define = undefined; return (function outer(modules, cache, entry) { if (typeof Bokeh !== "undefined") { var _ = Bokeh._; for (var name in modules) { Bokeh.require.modules[name] = modules[name]; } for (var i = 0; i < entry.length; i++) { var exports = Bokeh.require(entry[i]); if (_.isObject(exports.models)) { Bokeh.Models.register_locations(exports.models); } _.extend(Bokeh, _.omit(exports, "models")); } } else { throw new Error("Cannot find Bokeh. You have to load it prior to loading plugins."); } }) ({"api":[function(require,module,exports){ var _; _ = require("underscore"); module.exports = { LinAlg: require("./api/linalg"), Charts: require("./api/charts"), Plotting: require("./api/plotting"), Document: require("./document").Document, sprintf: require("sprintf") }; _.extend(module.exports, require("./api/models")); },{"./api/charts":"api/charts","./api/linalg":"api/linalg","./api/models":"api/models","./api/plotting":"api/plotting","./document":"document","sprintf":"sprintf","underscore":"underscore"}],"api/charts":[function(require,module,exports){ var $, Document, _, bar, cumsum, embed, hexcolor2rgb, is_dark, models, num2hexcolor, palettes, pie, sprintf, sum; _ = require("underscore"); $ = require("jquery"); sprintf = require("sprintf"); Document = require("../document").Document; embed = require("../embed"); models = require("./models"); palettes = require("../palettes/palettes"); sum = function(array) { return array.reduce(((function(_this) { return function(a, b) { return a + b; }; })(this)), 0); }; cumsum = function(array) { var result; result = []; array.reduce((function(a, b, i) { return result[i] = a + b; }), 0); return result; }; num2hexcolor = function(num) { return sprintf("#%06x", num); }; hexcolor2rgb = function(color) { var b, g, r; r = parseInt(color.substr(1, 2), 16); g = parseInt(color.substr(3, 2), 16); b = parseInt(color.substr(5, 2), 16); return [r, g, b]; }; is_dark = function(arg) { var b, g, l, r; r = arg[0], g = arg[1], b = arg[2]; l = 1 - (0.299 * r + 0.587 * g + 0.114 * b) / 255; return l >= 0.6; }; pie = function(data, opts) { var angle_span, colors, cumulative_values, cx, cy, end_angle, end_angles, g1, g2, h1, half_angles, half_radius, hover, i, inner_radius, k, labels, normalized_values, outer_radius, palette, plot, r1, r2, ref, ref1, ref2, ref3, ref4, ref5, ref6, ref7, source, start_angle, start_angles, text_angles, text_colors, text_cx, text_cy, to_cartesian, to_radians, tooltip, total_value, values, xdr, ydr; if (opts == null) { opts = {}; } labels = []; values = []; for (i = k = 0, ref = Math.min(data.labels.length, data.values.length); 0 <= ref ? k < ref : k > ref; i = 0 <= ref ? ++k : --k) { if (data.values[i] > 0) { labels.push(data.labels[i]); values.push(data.values[i]); } } start_angle = (ref1 = opts.start_angle) != null ? ref1 : 0; end_angle = (ref2 = opts.end_angle) != null ? ref2 : start_angle + 2 * Math.PI; angle_span = Math.abs(end_angle - start_angle); to_radians = function(x) { return angle_span * x; }; total_value = sum(values); normalized_values = values.map(function(v) { return v / total_value; }); cumulative_values = cumsum(normalized_values); end_angles = cumulative_values.map(function(v) { return start_angle + to_radians(v); }); start_angles = [start_angle].concat(end_angles.slice(0, -1)); half_angles = _.zip(start_angles, end_angles).map((function(_this) { return function(arg) { var end, start; start = arg[0], end = arg[1]; return (start + end) / 2; }; })(this)); if (opts.center == null) { cx = 0; cy = 0; } else if (_.isArray(opts.center)) { cx = opts.center[0]; cy = opts.center[1]; } else { cx = opts.center.x; cy = opts.center.y; } inner_radius = (ref3 = opts.inner_radius) != null ? ref3 : 0; outer_radius = (ref4 = opts.outer_radius) != null ? ref4 : 1; if (_.isArray(opts.palette)) { palette = opts.palette; } else { palette = palettes[(ref5 = opts.palette) != null ? ref5 : "Spectral11"].map(num2hexcolor); } colors = (function() { var m, ref6, results; results = []; for (i = m = 0, ref6 = normalized_values.length; 0 <= ref6 ? m < ref6 : m > ref6; i = 0 <= ref6 ? ++m : --m) { results.push(palette[i % palette.length]); } return results; })(); text_colors = colors.map(function(c) { if (is_dark(hexcolor2rgb(c))) { return "white"; } else { return "black"; } }); to_cartesian = function(r, alpha) { return [r * Math.cos(alpha), r * Math.sin(alpha)]; }; half_radius = (inner_radius + outer_radius) / 2; ref6 = _.unzip(half_angles.map((function(_this) { return function(half_angle) { return to_cartesian(half_radius, half_angle); }; })(this))), text_cx = ref6[0], text_cy = ref6[1]; text_cx = text_cx.map(function(x) { return x + cx; }); text_cy = text_cy.map(function(y) { return y + cy; }); text_angles = half_angles.map(function(a) { if (a >= Math.PI / 2 && a <= 3 * Math.PI / 2) { return a + Math.PI; } else { return a; } }); source = new Bokeh.ColumnDataSource({ data: { labels: labels, values: values, percentages: normalized_values.map((function(_this) { return function(v) { return sprintf("%.2f%%", v * 100); }; })(this)), start_angles: start_angles, end_angles: end_angles, text_angles: text_angles, colors: colors, text_colors: text_colors, text_cx: text_cx, text_cy: text_cy } }); g1 = new models.AnnularWedge({ x: cx, y: cy, inner_radius: inner_radius, outer_radius: outer_radius, start_angle: { field: "start_angles" }, end_angle: { field: "end_angles" }, line_color: null, line_width: 1, fill_color: { field: "colors" } }); h1 = new models.AnnularWedge({ x: cx, y: cy, inner_radius: inner_radius, outer_radius: outer_radius, start_angle: { field: "start_angles" }, end_angle: { field: "end_angles" }, line_color: null, line_width: 1, fill_color: { field: "colors" }, fill_alpha: 0.8 }); r1 = new models.GlyphRenderer({ data_source: source, glyph: g1, hover_glyph: h1 }); g2 = new models.Text({ x: { field: "text_cx" }, y: { field: "text_cy" }, text: { field: (ref7 = opts.slice_labels) != null ? ref7 : "labels" }, angle: { field: "text_angles" }, text_align: "center", text_baseline: "middle", text_color: { field: "text_colors" }, text_font_size: "9pt" }); r2 = new models.GlyphRenderer({ data_source: source, glyph: g2 }); xdr = new models.DataRange1d({ renderers: [r1], range_padding: 0.2 }); ydr = new models.DataRange1d({ renderers: [r1], range_padding: 0.2 }); plot = new models.Plot({ x_range: xdr, y_range: ydr }); if (opts.width != null) { plot.plot_width = opts.width; } if (opts.height != null) { plot.plot_height = opts.height; } plot.add_renderers(r1, r2); tooltip = "<div>@labels</div><div><b>@values</b> (@percentages)</div>"; hover = new models.HoverTool({ renderers: [r1], tooltips: tooltip }); plot.add_tools(hover); return plot; }; bar = function(data, opts) { var anchor, attachment, bottom, column_names, columns, dy, g1, hover, i, j, k, label, labels, left, len, len1, len2, len3, len4, m, n, name, o, orientation, p, palette, plot, q, r, r1, ref, ref1, ref2, ref3, ref4, ref5, ref6, ref7, ref8, renderers, right, row, rows, s, source, stacked, tooltip, top, v, xaxis, xdr, xformatter, yaxis, ydr; if (opts == null) { opts = {}; } column_names = data[0]; rows = data.slice(1); columns = (function() { var k, len, results; results = []; for (k = 0, len = column_names.length; k < len; k++) { name = column_names[k]; results.push([]); } return results; })(); for (k = 0, len = rows.length; k < len; k++) { row = rows[k]; for (i = m = 0, len1 = row.length; m < len1; i = ++m) { v = row[i]; columns[i].push(v); } } labels = _.map(columns[0], function(v) { return v.toString(); }); columns = columns.slice(1); yaxis = new models.CategoricalAxis(); ydr = new models.FactorRange({ factors: labels }); if (opts.axis_number_format != null) { xformatter = new models.NumeralTickFormatter({ format: opts.axis_number_format }); } else { xformatter = new models.BasicTickFormatter(); } xaxis = new models.LinearAxis({ formatter: xformatter }); xdr = new models.DataRange1d({ start: 0 }); if (_.isArray(opts.palette)) { palette = opts.palette; } else { palette = palettes[(ref = opts.palette) != null ? ref : "Spectral11"].map(num2hexcolor); } stacked = (ref1 = opts.stacked) != null ? ref1 : false; orientation = (ref2 = opts.orientation) != null ? ref2 : "horizontal"; renderers = []; if (stacked) { left = []; right = []; for (i = n = 0, ref3 = columns.length; 0 <= ref3 ? n < ref3 : n > ref3; i = 0 <= ref3 ? ++n : --n) { bottom = []; top = []; for (j = o = 0, len2 = labels.length; o < len2; j = ++o) { label = labels[j]; if (i === 0) { left.push(0); right.push(columns[i][j]); } else { left[j] += columns[i - 1][j]; right[j] += columns[i][j]; } bottom.push(label + ":0"); top.push(label + ":1"); } source = new Bokeh.ColumnDataSource({ data: { left: _.clone(left), right: _.clone(right), top: top, bottom: bottom, labels: labels, values: columns[i], columns: (function() { var len3, p, ref4, results; ref4 = columns[i]; results = []; for (p = 0, len3 = ref4.length; p < len3; p++) { v = ref4[p]; results.push(column_names[i + 1]); } return results; })() } }); g1 = new models.Quad({ left: { field: "left" }, bottom: { field: "bottom" }, right: { field: "right" }, top: { field: "top" }, line_color: null, fill_color: palette[i % palette.length] }); r1 = new models.GlyphRenderer({ data_source: source, glyph: g1 }); renderers.push(r1); } } else { dy = 1 / columns.length; for (i = p = 0, ref4 = columns.length; 0 <= ref4 ? p < ref4 : p > ref4; i = 0 <= ref4 ? ++p : --p) { left = []; right = []; bottom = []; top = []; for (j = q = 0, len3 = labels.length; q < len3; j = ++q) { label = labels[j]; left.push(0); right.push(columns[i][j]); bottom.push(label + ":" + (i * dy)); top.push(label + ":" + ((i + 1) * dy)); } source = new Bokeh.ColumnDataSource({ data: { left: left, right: right, top: top, bottom: bottom, labels: labels, values: columns[i], columns: (function() { var len4, ref5, results, s; ref5 = columns[i]; results = []; for (s = 0, len4 = ref5.length; s < len4; s++) { v = ref5[s]; results.push(column_names[i + 1]); } return results; })() } }); g1 = new models.Quad({ left: { field: "left" }, bottom: { field: "bottom" }, right: { field: "right" }, top: { field: "top" }, line_color: null, fill_color: palette[i % palette.length] }); r1 = new models.GlyphRenderer({ data_source: source, glyph: g1 }); renderers.push(r1); } } if (orientation === "vertical") { ref5 = [ydr, xdr], xdr = ref5[0], ydr = ref5[1]; ref6 = [yaxis, xaxis], xaxis = ref6[0], yaxis = ref6[1]; for (s = 0, len4 = renderers.length; s < len4; s++) { r = renderers[s]; data = r.data_source.data; ref7 = [data.bottom, data.left], data.left = ref7[0], data.bottom = ref7[1]; ref8 = [data.top, data.right], data.right = ref8[0], data.top = ref8[1]; } } plot = new models.Plot({ x_range: xdr, y_range: ydr }); if (opts.width != null) { plot.plot_width = opts.width; } if (opts.height != null) { plot.plot_height = opts.height; } plot.add_renderers.apply(plot, renderers); plot.add_layout(yaxis, "left"); plot.add_layout(xaxis, "below"); tooltip = "<div>@labels</div><div>@columns:&nbsp<b>@values</b></div>"; if (orientation === "horizontal") { anchor = "right_center"; attachment = "horizontal"; } else { anchor = "top_center"; attachment = "vertical"; } hover = new models.HoverTool({ renderers: renderers, tooltips: tooltip, point_policy: "snap_to_data", anchor: anchor, attachment: attachment, show_arrow: opts.show_arrow }); plot.add_tools(hover); return plot; }; module.exports = { pie: pie, bar: bar }; },{"../document":"document","../embed":"embed","../palettes/palettes":"palettes/palettes","./models":"api/models","jquery":"jquery","sprintf":"sprintf","underscore":"underscore"}],"api/linalg":[function(require,module,exports){ "use strict"; function transpose(array) { var rows = array.length; var cols = array[0].length; var transposed = []; for (var j = 0; j < cols; j++) { transposed[j] = []; for (var i = 0; i < rows; i++) { transposed[j][i] = array[i][j]; } } return transposed; } exports.transpose = transpose; function linspace(start, stop, num) { if (num === void 0) { num = 100; } var step = (stop - start) / (num - 1); var array = new Array(num); for (var i = 0; i < num; i++) { array[i] = start + step * i; } return array; } exports.linspace = linspace; function arange(start, stop, step) { if (step === void 0) { step = 1; } var num = Math.ceil((stop - start) / step); var array = new Array(num); for (var i = 0; i < num; i++) { array[i] = start + step * i; } return array; } exports.arange = arange; },{}],"api/models":[function(require,module,exports){ module.exports = { Arrow: require("../models/annotations/arrow").Model, OpenHead: require("../models/annotations/arrow_head").OpenHead, NormalHead: require("../models/annotations/arrow_head").NormalHead, VeeHead: require("../models/annotations/arrow_head").VeeHead, BoxAnnotation: require("../models/annotations/box_annotation").Model, ColorBar: require("../models/annotations/color_bar").Model, Label: require("../models/annotations/label").Model, LabelSet: require("../models/annotations/label_set").Model, Legend: require("../models/annotations/legend").Model, PolyAnnotation: require("../models/annotations/poly_annotation").Model, Span: require("../models/annotations/span").Model, Title: require("../models/annotations/title").Model, Tooltip: require("../models/annotations/tooltip").Model, Axis: require("../models/axes/axis").Model, ContinuousAxis: require("../models/axes/continuous_axis").Model, LinearAxis: require("../models/axes/linear_axis").Model, LogAxis: require("../models/axes/log_axis").Model, CategoricalAxis: require("../models/axes/categorical_axis").Model, DatetimeAxis: require("../models/axes/datetime_axis").Model, OpenURL: require("../models/callbacks/open_url").Model, CustomJS: require("../models/callbacks/customjs").Model, TickFormatter: require("../models/formatters/tick_formatter").Model, BasicTickFormatter: require("../models/formatters/basic_tick_formatter").Model, LogTickFormatter: require("../models/formatters/basic_tick_formatter").Model, CategoricalTickFormatter: require("../models/formatters/categorical_tick_formatter").Model, DatetimeTickFormatter: require("../models/formatters/datetime_tick_formatter").Model, FuncTickFormatter: require("../models/formatters/func_tick_formatter").Model, NumeralTickFormatter: require("../models/formatters/numeral_tick_formatter").Model, PrintfTickFormatter: require("../models/formatters/printf_tick_formatter").Model, Glyph: require("../models/glyphs/glyph").Model, AnnularWedge: require("../models/glyphs/annular_wedge").Model, Annulus: require("../models/glyphs/annulus").Model, Arc: require("../models/glyphs/arc").Model, Bezier: require("../models/glyphs/bezier").Model, Circle: require("../models/glyphs/circle").Model, Ellipse: require("../models/glyphs/ellipse").Model, ImageRGBA: require("../models/glyphs/image_rgba").Model, Image: require("../models/glyphs/image").Model, ImageURL: require("../models/glyphs/image_url").Model, Line: require("../models/glyphs/line").Model, MultiLine: require("../models/glyphs/multi_line").Model, Oval: require("../models/glyphs/oval").Model, Patch: require("../models/glyphs/patch").Model, Patches: require("../models/glyphs/patches").Model, Quad: require("../models/glyphs/quad").Model, Quadratic: require("../models/glyphs/quadratic").Model, Ray: require("../models/glyphs/ray").Model, Rect: require("../models/glyphs/rect").Model, Segment: require("../models/glyphs/segment").Model, Text: require("../models/glyphs/text").Model, Wedge: require("../models/glyphs/wedge").Model, Gear: require("../models/glyphs/gear").Model, Grid: require("../models/grids/grid").Model, ImageSource: require("../models/tiles/image_source").Model, LayoutDOM: require("../models/layouts/layout_dom").Model, Row: require("../models/layouts/row").Model, Column: require("../models/layouts/column").Model, Spacer: require("../models/layouts/spacer").Model, WidgetBox: require("../models/layouts/widget_box").Model, GMapPlot: require("../models/plots/gmap_plot").Model, LinearColorMapper: require("../models/mappers/linear_color_mapper").Model, markers: [require('../models/markers/index')], Model: require("../model").Model, Plot: require("../models/plots/plot").Model, Range: require("../models/ranges/range").Model, Range1d: require("../models/ranges/range1d").Model, DataRange: require("../models/ranges/data_range").Model, DataRange1d: require("../models/ranges/data_range1d").Model, FactorRange: require("../models/ranges/factor_range").Model, Renderer: require("../models/renderers/renderer").Model, TileRenderer: require("../models/tiles/tile_renderer").Model, DynamicImageRenderer: require("../models/tiles/dynamic_image_renderer").Model, GlyphRenderer: require("../models/renderers/glyph_renderer").Model, GuideRenderer: require("../models/renderers/guide_renderer").Model, DataSource: require("../models/sources/data_source").Model, ColumnDataSource: require("../models/sources/column_data_source").Model, AjaxDataSource: require("../models/sources/ajax_data_source").Model, Ticker: require("../models/tickers/ticker").Model, ContinuousTicker: require("../models/tickers/continuous_ticker").Model, FixedTicker: require("../models/tickers/fixed_ticker").Model, AdaptiveTicker: require("../models/tickers/adaptive_ticker").Model, CompositeTicker: require("../models/tickers/composite_ticker").Model, SingleIntervalTicker: require("../models/tickers/single_interval_ticker").Model, DaysTicker: require("../models/tickers/days_ticker").Model, MonthsTicker: require("../models/tickers/months_ticker").Model, YearsTicker: require("../models/tickers/years_ticker").Model, BasicTicker: require("../models/tickers/basic_ticker").Model, LogTicker: require("../models/tickers/log_ticker").Model, CategoricalTicker: require("../models/tickers/categorical_ticker").Model, DatetimeTicker: require("../models/tickers/datetime_ticker").Model, TileSource: require("../models/tiles/tile_source").Model, MercatorTileSource: require("../models/tiles/mercator_tile_source").Model, TMSTileSource: require("../models/tiles/tms_tile_source").Model, WMTSTileSource: require("../models/tiles/wmts_tile_source").Model, QUADKEYTileSource: require("../models/tiles/quadkey_tile_source").Model, BBoxTileSource: require("../models/tiles/bbox_tile_source").Model, ToolbarBase: require("../models/tools/toolbar_base").Model, Toolbar: require("../models/tools/toolbar").Model, ToolbarBox: require("../models/tools/toolbar_box").Model, ToolEvents: require("../common/tool_events").Model, Tool: require("../models/tools/tool").Model, PanTool: require("../models/tools/gestures/pan_tool").Model, WheelZoomTool: require("../models/tools/gestures/wheel_zoom_tool").Model, SaveTool: require("../models/tools/actions/save_tool").Model, UndoTool: require("../models/tools/actions/undo_tool").Model, RedoTool: require("../models/tools/actions/redo_tool").Model, ResetTool: require("../models/tools/actions/reset_tool").Model, ResizeTool: require("../models/tools/gestures/resize_tool").Model, CrosshairTool: require("../models/tools/inspectors/crosshair_tool").Model, BoxZoomTool: require("../models/tools/gestures/box_zoom_tool").Model, BoxSelectTool: require("../models/tools/gestures/box_select_tool").Model, LassoSelectTool: require("../models/tools/gestures/lasso_select_tool").Model, PolySelectTool: require("../models/tools/gestures/poly_select_tool").Model, TapTool: require("../models/tools/gestures/tap_tool").Model, HoverTool: require("../models/tools/inspectors/hover_tool").Model, HelpTool: require("../models/tools/actions/help_tool").Model }; },{"../common/tool_events":"common/tool_events","../model":"model","../models/annotations/arrow":"models/annotations/arrow","../models/annotations/arrow_head":"models/annotations/arrow_head","../models/annotations/box_annotation":"models/annotations/box_annotation","../models/annotations/color_bar":"models/annotations/color_bar","../models/annotations/label":"models/annotations/label","../models/annotations/label_set":"models/annotations/label_set","../models/annotations/legend":"models/annotations/legend","../models/annotations/poly_annotation":"models/annotations/poly_annotation","../models/annotations/span":"models/annotations/span","../models/annotations/title":"models/annotations/title","../models/annotations/tooltip":"models/annotations/tooltip","../models/axes/axis":"models/axes/axis","../models/axes/categorical_axis":"models/axes/categorical_axis","../models/axes/continuous_axis":"models/axes/continuous_axis","../models/axes/datetime_axis":"models/axes/datetime_axis","../models/axes/linear_axis":"models/axes/linear_axis","../models/axes/log_axis":"models/axes/log_axis","../models/callbacks/customjs":"models/callbacks/customjs","../models/callbacks/open_url":"models/callbacks/open_url","../models/formatters/basic_tick_formatter":"models/formatters/basic_tick_formatter","../models/formatters/categorical_tick_formatter":"models/formatters/categorical_tick_formatter","../models/formatters/datetime_tick_formatter":"models/formatters/datetime_tick_formatter","../models/formatters/func_tick_formatter":"models/formatters/func_tick_formatter","../models/formatters/numeral_tick_formatter":"models/formatters/numeral_tick_formatter","../models/formatters/printf_tick_formatter":"models/formatters/printf_tick_formatter","../models/formatters/tick_formatter":"models/formatters/tick_formatter","../models/glyphs/annular_wedge":"models/glyphs/annular_wedge","../models/glyphs/annulus":"models/glyphs/annulus","../models/glyphs/arc":"models/glyphs/arc","../models/glyphs/bezier":"models/glyphs/bezier","../models/glyphs/circle":"models/glyphs/circle","../models/glyphs/ellipse":"models/glyphs/ellipse","../models/glyphs/gear":"models/glyphs/gear","../models/glyphs/glyph":"models/glyphs/glyph","../models/glyphs/image":"models/glyphs/image","../models/glyphs/image_rgba":"models/glyphs/image_rgba","../models/glyphs/image_url":"models/glyphs/image_url","../models/glyphs/line":"models/glyphs/line","../models/glyphs/multi_line":"models/glyphs/multi_line","../models/glyphs/oval":"models/glyphs/oval","../models/glyphs/patch":"models/glyphs/patch","../models/glyphs/patches":"models/glyphs/patches","../models/glyphs/quad":"models/glyphs/quad","../models/glyphs/quadratic":"models/glyphs/quadratic","../models/glyphs/ray":"models/glyphs/ray","../models/glyphs/rect":"models/glyphs/rect","../models/glyphs/segment":"models/glyphs/segment","../models/glyphs/text":"models/glyphs/text","../models/glyphs/wedge":"models/glyphs/wedge","../models/grids/grid":"models/grids/grid","../models/layouts/column":"models/layouts/column","../models/layouts/layout_dom":"models/layouts/layout_dom","../models/layouts/row":"models/layouts/row","../models/layouts/spacer":"models/layouts/spacer","../models/layouts/widget_box":"models/layouts/widget_box","../models/mappers/linear_color_mapper":"models/mappers/linear_color_mapper","../models/markers/index":"models/markers/index","../models/plots/gmap_plot":"models/plots/gmap_plot","../models/plots/plot":"models/plots/plot","../models/ranges/data_range":"models/ranges/data_range","../models/ranges/data_range1d":"models/ranges/data_range1d","../models/ranges/factor_range":"models/ranges/factor_range","../models/ranges/range":"models/ranges/range","../models/ranges/range1d":"models/ranges/range1d","../models/renderers/glyph_renderer":"models/renderers/glyph_renderer","../models/renderers/guide_renderer":"models/renderers/guide_renderer","../models/renderers/renderer":"models/renderers/renderer","../models/sources/ajax_data_source":"models/sources/ajax_data_source","../models/sources/column_data_source":"models/sources/column_data_source","../models/sources/data_source":"models/sources/data_source","../models/tickers/adaptive_ticker":"models/tickers/adaptive_ticker","../models/tickers/basic_ticker":"models/tickers/basic_ticker","../models/tickers/categorical_ticker":"models/tickers/categorical_ticker","../models/tickers/composite_ticker":"models/tickers/composite_ticker","../models/tickers/continuous_ticker":"models/tickers/continuous_ticker","../models/tickers/datetime_ticker":"models/tickers/datetime_ticker","../models/tickers/days_ticker":"models/tickers/days_ticker","../models/tickers/fixed_ticker":"models/tickers/fixed_ticker","../models/tickers/log_ticker":"models/tickers/log_ticker","../models/tickers/months_ticker":"models/tickers/months_ticker","../models/tickers/single_interval_ticker":"models/tickers/single_interval_ticker","../models/tickers/ticker":"models/tickers/ticker","../models/tickers/years_ticker":"models/tickers/years_ticker","../models/tiles/bbox_tile_source":"models/tiles/bbox_tile_source","../models/tiles/dynamic_image_renderer":"models/tiles/dynamic_image_renderer","../models/tiles/image_source":"models/tiles/image_source","../models/tiles/mercator_tile_source":"models/tiles/mercator_tile_source","../models/tiles/quadkey_tile_source":"models/tiles/quadkey_tile_source","../models/tiles/tile_renderer":"models/tiles/tile_renderer","../models/tiles/tile_source":"models/tiles/tile_source","../models/tiles/tms_tile_source":"models/tiles/tms_tile_source","../models/tiles/wmts_tile_source":"models/tiles/wmts_tile_source","../models/tools/actions/help_tool":"models/tools/actions/help_tool","../models/tools/actions/redo_tool":"models/tools/actions/redo_tool","../models/tools/actions/reset_tool":"models/tools/actions/reset_tool","../models/tools/actions/save_tool":"models/tools/actions/save_tool","../models/tools/actions/undo_tool":"models/tools/actions/undo_tool","../models/tools/gestures/box_select_tool":"models/tools/gestures/box_select_tool","../models/tools/gestures/box_zoom_tool":"models/tools/gestures/box_zoom_tool","../models/tools/gestures/lasso_select_tool":"models/tools/gestures/lasso_select_tool","../models/tools/gestures/pan_tool":"models/tools/gestures/pan_tool","../models/tools/gestures/poly_select_tool":"models/tools/gestures/poly_select_tool","../models/tools/gestures/resize_tool":"models/tools/gestures/resize_tool","../models/tools/gestures/tap_tool":"models/tools/gestures/tap_tool","../models/tools/gestures/wheel_zoom_tool":"models/tools/gestures/wheel_zoom_tool","../models/tools/inspectors/crosshair_tool":"models/tools/inspectors/crosshair_tool","../models/tools/inspectors/hover_tool":"models/tools/inspectors/hover_tool","../models/tools/tool":"models/tools/tool","../models/tools/toolbar":"models/tools/toolbar","../models/tools/toolbar_base":"models/tools/toolbar_base","../models/tools/toolbar_box":"models/tools/toolbar_box"}],"api/plotting":[function(require,module,exports){ var $, BOKEH_ROOT, Document, Figure, _, _default_tools, _default_tooltips, _known_tools, _with_default, color, embed, figure, gridplot, models, show, sprintf, extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, hasProp = {}.hasOwnProperty, slice = [].slice; _ = require("underscore"); $ = require("jquery"); sprintf = require("sprintf"); Document = require("../document").Document; embed = require("../embed"); BOKEH_ROOT = require("../embed").BOKEH_ROOT; models = require("./models"); _default_tooltips = [["index", "$index"], ["data (x, y)", "($x, $y)"], ["canvas (x, y)", "($sx, $sy)"]]; _default_tools = "pan,wheel_zoom,box_zoom,save,reset,help"; _known_tools = { pan: function(plot) { return new models.PanTool({ plot: plot, dimensions: ["width", "height"] }); }, xpan: function(plot) { return new models.PanTool({ plot: plot, dimensions: ["width"] }); }, ypan: function(plot) { return new models.PanTool({ plot: plot, dimensions: ["height"] }); }, wheel_zoom: function(plot) { return new models.WheelZoomTool({ plot: plot, dimensions: ["width", "height"] }); }, xwheel_zoom: function(plot) { return new models.WheelZoomTool({ plot: plot, dimensions: ["width"] }); }, ywheel_zoom: function(plot) { return new models.WheelZoomTool({ plot: plot, dimensions: ["height"] }); }, resize: function(plot) { return new models.ResizeTool({ plot: plot }); }, click: function(plot) { return new models.TapTool({ plot: plot, behavior: "inspect" }); }, tap: function(plot) { return new models.TapTool({ plot: plot }); }, crosshair: function(plot) { return new models.CrosshairTool({ plot: plot }); }, box_select: function(plot) { return new models.BoxSelectTool({ plot: plot }); }, xbox_select: function(plot) { return new models.BoxSelectTool({ plot: plot, dimensions: ['width'] }); }, ybox_select: function(plot) { return new models.BoxSelectTool({ plot: plot, dimensions: ['height'] }); }, poly_select: function(plot) { return new models.PolySelectTool({ plot: plot }); }, lasso_select: function(plot) { return new models.LassoSelectTool({ plot: plot }); }, box_zoom: function(plot) { return new models.BoxZoomTool({ plot: plot, dimensions: ['width', 'height'] }); }, xbox_zoom: function(plot) { return new models.BoxZoomTool({ plot: plot, dimensions: ['width'] }); }, ybox_zoom: function(plot) { return new models.BoxZoomTool({ plot: plot, dimensions: ['height'] }); }, hover: function(plot) { return new models.HoverTool({ plot: plot, tooltips: _default_tooltips }); }, save: function(plot) { return new models.SaveTool({ plot: plot }); }, previewsave: function(plot) { return new models.SaveTool({ plot: plot }); }, undo: function(plot) { return new models.UndoTool({ plot: plot }); }, redo: function(plot) { return new models.RedoTool({ plot: plot }); }, reset: function(plot) { return new models.ResetTool({ plot: plot }); }, help: function(plot) { return new models.HelpTool({ plot: plot }); } }; _with_default = function(value, default_value) { if (value === void 0) { return default_value; } else { return value; } }; Figure = (function(superClass) { extend(Figure, superClass); function Figure(attributes, options) { var attrs, ref, ref1, ref2, ref3, ref4, ref5, tools, x_axis_label, x_axis_location, x_axis_type, x_minor_ticks, y_axis_label, y_axis_location, y_axis_type, y_minor_ticks; if (attributes == null) { attributes = {}; } if (options == null) { options = {}; } attrs = _.clone(attributes); tools = _with_default(attrs.tools, _default_tools); delete attrs.tools; attrs.x_range = this._get_range(attrs.x_range); attrs.y_range = this._get_range(attrs.y_range); x_axis_type = _.isUndefined(attrs.x_axis_type) ? "auto" : attrs.x_axis_type; y_axis_type = _.isUndefined(attrs.y_axis_type) ? "auto" : attrs.y_axis_type; delete attrs.x_axis_type; delete attrs.y_axis_type; x_minor_ticks = (ref = attrs.x_minor_ticks) != null ? ref : "auto"; y_minor_ticks = (ref1 = attrs.y_minor_ticks) != null ? ref1 : "auto"; delete attrs.x_minor_ticks; delete attrs.y_minor_ticks; x_axis_location = (ref2 = attrs.x_axis_location) != null ? ref2 : "below"; y_axis_location = (ref3 = attrs.y_axis_location) != null ? ref3 : "left"; delete attrs.x_axis_location; delete attrs.y_axis_location; x_axis_label = (ref4 = attrs.x_axis_label) != null ? ref4 : ""; y_axis_label = (ref5 = attrs.y_axis_label) != null ? ref5 : ""; delete attrs.x_axis_label; delete attrs.y_axis_label; if (!_.isUndefined(attrs.width)) { if (_.isUndefined(attrs.plot_width)) { attrs.plot_width = attrs.width; } else { throw new Error("both 'width' and 'plot_width' can't be given at the same time"); } delete attrs.width; } if (!_.isUndefined(attrs.height)) { if (_.isUndefined(attrs.plot_height)) { attrs.plot_height = attrs.height; } else { throw new Error("both 'height' and 'plot_height' can't be given at the same time"); } delete attrs.height; } Figure.__super__.constructor.call(this, attrs, options); this._process_guides(0, x_axis_type, x_axis_location, x_minor_ticks, x_axis_label); this._process_guides(1, y_axis_type, y_axis_location, y_minor_ticks, y_axis_label); this.add_tools.apply(this, this._process_tools(tools)); this._legend = new models.Legend({ plot: this }); this.add_renderers(this._legend); } Object.defineProperty(Figure.prototype, "xgrid", { get: function() { return this.renderers.filter(function(r) { return r instanceof models.Grid && r.dimension === 0; })[0]; } }); Object.defineProperty(Figure.prototype, "ygrid", { get: function() { return this.renderers.filter(function(r) { return r instanceof models.Grid && r.dimension === 1; })[0]; } }); Object.defineProperty(Figure.prototype, "xaxis", { get: function() { return this.below.concat(this.above).filter(function(r) { return r instanceof models.Axis; })[0]; } }); Object.defineProperty(Figure.prototype, "yaxis", { get: function() { return this.left.concat(this.right).filter(function(r) { return r instanceof models.Axis; })[0]; } }); Figure.prototype.annular_wedge = function() { var args; args = 1 <= arguments.length ? slice.call(arguments, 0) : []; return this._glyph(models.AnnularWedge, "x,y,inner_radius,outer_radius,start_angle,end_angle", args); }; Figure.prototype.annulus = function() { var args; args = 1 <= arguments.length ? slice.call(arguments, 0) : []; return this._glyph(models.Annulus, "x,y,inner_radius,outer_radius", args); }; Figure.prototype.arc = function() { var args; args = 1 <= arguments.length ? slice.call(arguments, 0) : []; return this._glyph(models.Arc, "x,y,radius,start_angle,end_angle", args); }; Figure.prototype.bezier = function() { var args; args = 1 <= arguments.length ? slice.call(arguments, 0) : []; return this._glyph(models.Bezier, "x0,y0,x1,y1,cx0,cy0,cx1,cy1", args); }; Figure.prototype.ellipse = function() { var args; args = 1 <= arguments.length ? slice.call(arguments, 0) : []; return this._glyph(models.Ellipse, "x,y,width,height", args); }; Figure.prototype.gear = function() { var args; args = 1 <= arguments.length ? slice.call(arguments, 0) : []; return this._glyph(models.Gear, "x,y,module,teeth", args); }; Figure.prototype.image = function() { var args; args = 1 <= arguments.length ? slice.call(arguments, 0) : []; return this._glyph(models.Image, "color_mapper,image,rows,cols,x,y,dw,dh", args); }; Figure.prototype.image_rgba = function() { var args; args = 1 <= arguments.length ? slice.call(arguments, 0) : []; return this._glyph(models.ImageRGBA, "image,rows,cols,x,y,dw,dh", args); }; Figure.prototype.image_url = function() { var args; args = 1 <= arguments.length ? slice.call(arguments, 0) : []; return this._glyph(models.ImageURL, "url,x,y,w,h", args); }; Figure.prototype.line = function() { var args; args = 1 <= arguments.length ? slice.call(arguments, 0) : []; return this._glyph(models.Line, "x,y", args); }; Figure.prototype.multi_line = function() { var args; args = 1 <= arguments.length ? slice.call(arguments, 0) : []; return this._glyph(models.MultiLine, "xs,ys", args); }; Figure.prototype.oval = function() { var args; args = 1 <= arguments.length ? slice.call(arguments, 0) : []; return this._glyph(models.Oval, "x,y,width,height", args); }; Figure.prototype.patch = function() { var args; args = 1 <= arguments.length ? slice.call(arguments, 0) : []; return this._glyph(models.Patch, "x,y", args); }; Figure.prototype.patches = function() { var args; args = 1 <= arguments.length ? slice.call(arguments, 0) : []; return this._glyph(models.Patches, "xs,ys", args); }; Figure.prototype.quad = function() { var args; args = 1 <= arguments.length ? slice.call(arguments, 0) : []; return this._glyph(models.Quad, "left,right,bottom,top", args); }; Figure.prototype.quadratic = function() { var args; args = 1 <= arguments.length ? slice.call(arguments, 0) : []; return this._glyph(models.Quadratic, "x0,y0,x1,y1,cx,cy", args); }; Figure.prototype.ray = function() { var args; args = 1 <= arguments.length ? slice.call(arguments, 0) : []; return this._glyph(models.Ray, "x,y,length", args); }; Figure.prototype.rect = function() { var args; args = 1 <= arguments.length ? slice.call(arguments, 0) : []; return this._glyph(models.Rect, "x,y,width,height", args); }; Figure.prototype.segment = function() { var args; args = 1 <= arguments.length ? slice.call(arguments, 0) : []; return this._glyph(models.Segment, "x0,y0,x1,y1", args); }; Figure.prototype.text = function() { var args; args = 1 <= arguments.length ? slice.call(arguments, 0) : []; return this._glyph(models.Text, "x,y,text", args); }; Figure.prototype.wedge = function() { var args; args = 1 <= arguments.length ? slice.call(arguments, 0) : []; return this._glyph(models.Wedge, "x,y,radius,start_angle,end_angle", args); }; Figure.prototype.asterisk = function() { var args; args = 1 <= arguments.length ? slice.call(arguments, 0) : []; return this._marker(models.Asterisk, args); }; Figure.prototype.circle = function() { var args; args = 1 <= arguments.length ? slice.call(arguments, 0) : []; return this._marker(models.Circle, args); }; Figure.prototype.circle_cross = function() { var args; args = 1 <= arguments.length ? slice.call(arguments, 0) : []; return this._marker(models.CircleCross, args); }; Figure.prototype.circle_x = function() { var args; args = 1 <= arguments.length ? slice.call(arguments, 0) : []; return this._marker(models.CircleX, args); }; Figure.prototype.cross = function() { var args; args = 1 <= arguments.length ? slice.call(arguments, 0) : []; return this._marker(models.Cross, args); }; Figure.prototype.diamond = function() { var args; args = 1 <= arguments.length ? slice.call(arguments, 0) : []; return this._marker(models.Diamond, args); }; Figure.prototype.diamond_cross = function() { var args; args = 1 <= arguments.length ? slice.call(arguments, 0) : []; return this._marker(models.DiamondCross, args); }; Figure.prototype.inverted_triangle = function() { var args; args = 1 <= arguments.length ? slice.call(arguments, 0) : []; return this._marker(models.InvertedTriangle, args); }; Figure.prototype.square = function() { var args; args = 1 <= arguments.length ? slice.call(arguments, 0) : []; return this._marker(models.Square, args); }; Figure.prototype.square_cross = function() { var args; args = 1 <= arguments.length ? slice.call(arguments, 0) : []; return this._marker(models.SquareCross, args); }; Figure.prototype.square_x = function() { var args; args = 1 <= arguments.length ? slice.call(arguments, 0) : []; return this._marker(models.SquareX, args); }; Figure.prototype.triangle = function() { var args; args = 1 <= arguments.length ? slice.call(arguments, 0) : []; return this._marker(models.Triangle, args); }; Figure.prototype.x = function() { var args; args = 1 <= arguments.length ? slice.call(arguments, 0) : []; return this._marker(models.X, args); }; Figure.prototype._vectorable = ["fill_color", "fill_alpha", "line_color", "line_alpha", "line_width", "text_color", "text_alpha", "text_font_size"]; Figure.prototype._default_color = "#1f77b4"; Figure.prototype._default_alpha = 1.0; Figure.prototype._pop_colors_and_alpha = function(cls, attrs, prefix, default_color, default_alpha) { var _update_with, alpha, color, result; if (prefix == null) { prefix = ""; } if (default_color == null) { default_color = this._default_color; } if (default_alpha == null) { default_alpha = this._default_alpha; } result = {}; color = _with_default(attrs[prefix + "color"], default_color); alpha = _with_default(attrs[prefix + "alpha"], default_alpha); delete attrs[prefix + "color"]; delete attrs[prefix + "alpha"]; _update_with = function(name, default_value) { if (cls.prototype.props[name] != null) { result[name] = _with_default(attrs[prefix + name], default_value); return delete attrs[prefix + name]; } }; _update_with("fill_color", color); _update_with("line_color", color); _update_with("text_color", "black"); _update_with("fill_alpha", alpha); _update_with("line_alpha", alpha); _update_with("text_alpha", alpha); return result; }; Figure.prototype._find_uniq_name = function(data, name) { var i, new_name; i = 1; while (true) { new_name = name + "__" + i; if (data[new_name] != null) { i += 1; } else { return new_name; } } }; Figure.prototype._fixup_values = function(cls, data, attrs) { var name, results, value; results = []; for (name in attrs) { value = attrs[name]; results.push((function(_this) { return function(name, value) { var field, prop; prop = cls.prototype.props[name]; if (prop != null) { if (prop.type.prototype.dataspec) { if (value != null) { if (_.isArray(value)) { if (data[name] != null) { if (data[name] !== value) { field = _this._find_uniq_name(data, name); data[field] = value; } else { field = name; } } else { field = name; data[field] = value; } return attrs[name] = { field: field }; } else if (_.isNumber(value) || _.isString(value)) { return attrs[name] = { value: value }; } } } } }; })(this)(name, value)); } return results; }; Figure.prototype._glyph = function(cls, params, args) { var _make_glyph, attrs, data, fn, glyph, glyph_ca, glyph_renderer, has_hglyph, has_sglyph, hglyph, hglyph_ca, i, j, k, legend, len, nsglyph, nsglyph_ca, opts, param, ref, ref1, sglyph, sglyph_ca, source; params = params.split(","); if (args.length === 1) { attrs = args[0]; attrs = _.clone(attrs); } else { ref = args, args = 2 <= ref.length ? slice.call(ref, 0, j = ref.length - 1) : (j = 0, []), opts = ref[j++]; attrs = _.clone(opts); fn = function(param, i) { return attrs[param] = args[i]; }; for (i = k = 0, len = params.length; k < len; i = ++k) { param = params[i]; fn(param, i); } } legend = attrs.legend; delete attrs.legend; has_sglyph = _.any(_.keys(attrs), function(key) { return key.startsWith("selection_"); }); has_hglyph = _.any(_.keys(attrs), function(key) { return key.startsWith("hover_"); }); glyph_ca = this._pop_colors_and_alpha(cls, attrs); nsglyph_ca = this._pop_colors_and_alpha(cls, attrs, "nonselection_", void 0, 0.1); sglyph_ca = has_sglyph ? this._pop_colors_and_alpha(cls, attrs, "selection_") : {}; hglyph_ca = has_hglyph ? this._pop_colors_and_alpha(cls, attrs, "hover_") : {}; source = (ref1 = attrs.source) != null ? ref1 : new models.ColumnDataSource(); data = _.clone(source.data); delete attrs.source; this._fixup_values(cls, data, glyph_ca); this._fixup_values(cls, data, nsglyph_ca); this._fixup_values(cls, data, sglyph_ca); this._fixup_values(cls, data, hglyph_ca); this._fixup_values(cls, data, attrs); source.data = data; _make_glyph = (function(_this) { return function(cls, attrs, extra_attrs) { return new cls(_.extend({}, attrs, extra_attrs)); }; })(this); glyph = _make_glyph(cls, attrs, glyph_ca); nsglyph = _make_glyph(cls, attrs, nsglyph_ca); sglyph = has_sglyph ? _make_glyph(cls, attrs, sglyph_ca) : null; hglyph = has_hglyph ? _make_glyph(cls, attrs, hglyph_ca) : null; glyph_renderer = new models.GlyphRenderer({ data_source: source, glyph: glyph, nonselection_glyph: nsglyph, selection_glyph: sglyph, hover_glyph: hglyph }); if (legend != null) { this._update_legend(legend, glyph_renderer); } this.add_renderers(glyph_renderer); return glyph_renderer; }; Figure.prototype._marker = function(cls, args) { return this._glyph(cls, "x,y", args); }; Figure.prototype._get_range = function(range) { if (range == null) { return new models.DataRange1d(); } if (range instanceof models.Range) { return range; } if (_.isArray(range)) { if (_.all(function(x) { var j, len, results; results = []; for (j = 0, len = range.length; j < len; j++) { x = range[j]; results.push(_.isString(x)); } return results; })) { return new models.FactorRange({ factors: range }); } if (range.length === 2) { return new models.Range1d({ start: range[0], end: range[1] }); } } }; Figure.prototype._process_guides = function(dim, axis_type, axis_location, minor_ticks, axis_label) { var axis, axiscls, grid, range; range = dim === 0 ? this.x_range : this.y_range; axiscls = this._get_axis_class(axis_type, range); if (axiscls != null) { if (axiscls === models.LogAxis) { if (dim === 0) { this.x_mapper_type = 'log'; } else { this.y_mapper_type = 'log'; } } axis = new axiscls(); if (axis.ticker instanceof models.ContinuousTicker) { axis.ticker.num_minor_ticks = this._get_num_minor_ticks(axiscls, minor_ticks); } if (axis_label.length !== 0) { axis.axis_label = axis_label; } grid = new models.Grid({ dimension: dim, ticker: axis.ticker }); this.add_layout(axis, axis_location); return this.add_layout(grid); } }; Figure.prototype._get_axis_class = function(axis_type, range) { if (axis_type == null) { return null; } if (axis_type === "linear") { return models.LinearAxis; } if (axis_type === "log") { return models.LogAxis; } if (axis_type === "datetime") { return models.DatetimeAxis; } if (axis_type === "auto") { if (range instanceof models.FactorRange) { return model