├── test ├── image │ ├── mocks │ │ ├── empty.json │ │ ├── hist_category.json │ │ ├── hist_003_to_093.json │ │ ├── hist_003_to_1.json │ │ ├── hist_0_to_093.json │ │ ├── hist_0_to_1_midpoints.json │ │ ├── hist_grouped.json │ │ ├── gl3d_delaunay.json │ │ ├── hist_stacked.json │ │ ├── basic_bar.json │ │ ├── pie_simple.json │ │ ├── gl3d_triangle.json │ │ ├── hist_all_integer.json │ │ ├── date_axes.json │ │ ├── axes_free_default.json │ │ ├── axes_reversed.json │ │ ├── hist_almost_integer.json │ │ ├── hist_all_integer_n50.json │ │ ├── pie_label0_dlabel.json │ │ ├── box_plot_jitter.json │ │ ├── tick_prefix_suffix_exponent.json │ │ ├── basic_heatmap.json │ │ ├── percent_error_bar.json │ │ ├── error_bar_horizontal.json │ │ ├── gl2d_date_axes.json │ │ ├── category_dtick_3.json │ │ ├── basic_error_bar.json │ │ ├── geo_first.json │ │ ├── gl3d_marker-color.json │ │ ├── error_bar_asymmetric_constant.json │ │ ├── bar_marker_array.json │ │ ├── gl3d_scatter-date.json │ │ ├── bubble_markersize0.json │ │ ├── heatmap_autocolor_negative.json │ │ ├── heatmap_autocolor_positive.json │ │ ├── axes_range_mode.json │ │ ├── bar_stackto1.json │ │ ├── gl2d_error_bar_horizontal.json │ │ ├── basic_line.json │ │ ├── basic_area.json │ │ ├── gl3d_log-axis.json │ │ ├── hist_summed.json │ │ ├── gl2d_basic_error_bar.json │ │ ├── gl2d_error_bar_asymmetric_constant.json │ │ ├── colorbar_tick_prefix_suffix.json │ │ ├── box_with-empty-1st-trace.json │ │ ├── show_legend.json │ │ ├── global_font.json │ │ ├── colorbar_tickformat.json │ │ ├── error_bar_asymmetric_array.json │ │ ├── bar_group_percent.json │ │ ├── tickformat.json │ │ ├── bar_stackto100_negative.json │ │ ├── gl2d_axes_range_mode.json │ │ ├── contour_nolines.json │ │ ├── gl3d_log-axis-big.json │ │ ├── pie_style.json │ │ ├── tick_prefix_suffix.json │ │ ├── bar_line.json │ │ ├── pseudo_html.json │ │ ├── gl3d_multi-scene.json │ │ ├── size_margins.json │ │ ├── labelled_heatmap.json │ │ ├── grouped_bar.json │ │ ├── stacked_bar.json │ │ ├── simple_inset.json │ │ ├── simple_subplot.json │ │ ├── custom_size_subplot.json │ │ ├── gl2d_show_legend.json │ │ ├── gl2d_global_font.json │ │ ├── line_scatter.json │ │ ├── gl2d_error_bar_asymmetric_array.json │ │ ├── hist2d_summed.json │ │ ├── pie_labels_colors_text.json │ │ ├── gl3d_autorange-zero.json │ │ ├── legend_labels.json │ │ ├── colorbar_enumerated_ticks.json │ │ ├── scatter_fill_no_opacity.json │ │ ├── multiple_axes_double.json │ │ ├── multiple_axes_multiple.json │ │ ├── gl2d_size_margins.json │ │ ├── legend_inside.json │ │ ├── error_bar_bar.json │ │ ├── geo_europe-bubbles.json │ │ ├── axes_range_type.json │ │ ├── geo_multi-geos.json │ │ ├── axes_range_manual.json │ │ ├── gl2d_simple_inset.json │ │ ├── heatmap-reverse-autocolorscale.json │ │ ├── line_grid_width.json │ │ ├── tick_attributes.json │ │ ├── hist_valid_ses_y.json │ │ ├── stacked_coupled_subplots.json │ │ ├── gl3d_autocolorscale.json │ │ ├── text_chart_single-string.json │ │ ├── legend_outside.json │ │ ├── axes_enumerated_ticks.json │ │ └── legend_visibility.json │ ├── baselines │ │ ├── 0.png │ │ ├── 1.png │ │ ├── 4.png │ │ ├── 5.png │ │ ├── 6.png │ │ ├── 7.png │ │ ├── 8.png │ │ ├── 10.png │ │ ├── 11.png │ │ ├── 12.png │ │ ├── 13.png │ │ ├── 14.png │ │ ├── 15.png │ │ ├── 16.png │ │ ├── 17.png │ │ ├── 18.png │ │ ├── 19.png │ │ ├── 20.png │ │ ├── 21.png │ │ ├── 22.png │ │ ├── 23.png │ │ ├── 24.png │ │ ├── 25.png │ │ ├── 26.png │ │ ├── 27.png │ │ ├── 28.png │ │ ├── 29.png │ │ ├── 30.png │ │ ├── 31.png │ │ ├── 32.png │ │ ├── empty.png │ │ ├── fonts.png │ │ ├── shapes.png │ │ ├── bar_line.png │ │ ├── basic_bar.png │ │ ├── chinese.png │ │ ├── date_axes.png │ │ ├── geo_first.png │ │ ├── gl2d_10.png │ │ ├── gl2d_12.png │ │ ├── gl2d_14.png │ │ ├── gl2d_17.png │ │ ├── gl2d_22.png │ │ ├── gl2d_24.png │ │ ├── gl2d_28.png │ │ ├── gl2d_30.png │ │ ├── gl2d_32.png │ │ ├── japanese.png │ │ ├── pie_fonts.png │ │ ├── pie_style.png │ │ ├── simple-3d.png │ │ ├── style_bar.png │ │ ├── Hot_heatmap.png │ │ ├── Jet_heatmap.png │ │ ├── annotations.png │ │ ├── axes-ticks.png │ │ ├── axes_labels.png │ │ ├── axes_lines.png │ │ ├── basic_area.png │ │ ├── basic_line.png │ │ ├── benchmarks.png │ │ ├── box_grouped.png │ │ ├── bubblechart.png │ │ ├── geo_second.png │ │ ├── gl2d_fonts.png │ │ ├── gl3d_bunny.png │ │ ├── global_font.png │ │ ├── grouped_bar.png │ │ ├── hist_summed.png │ │ ├── legendgroup.png │ │ ├── line_style.png │ │ ├── pie_simple.png │ │ ├── polar_line.png │ │ ├── pseudo_html.png │ │ ├── show_legend.png │ │ ├── stacked_bar.png │ │ ├── tickformat.png │ │ ├── Earth_heatmap.png │ │ ├── Greens_heatmap.png │ │ ├── Greys_heatmap.png │ │ ├── Picnic_heatmap.png │ │ ├── RdBu_heatmap.png │ │ ├── YIGnBu_heatmap.png │ │ ├── YIOrRd_heatmap.png │ │ ├── axes_booleans.png │ │ ├── axes_reversed.png │ │ ├── bar_stackto1.png │ │ ├── basic_heatmap.png │ │ ├── connectgaps_2d.png │ │ ├── date_histogram.png │ │ ├── error_bar_bar.png │ │ ├── font-wishlist.png │ │ ├── geo_bg-color.png │ │ ├── geo_big-frame.png │ │ ├── geo_legendonly.png │ │ ├── geo_multi-geos.png │ │ ├── geo_usa-states.png │ │ ├── gl2d_date_axes.png │ │ ├── gl3d_cufflinks.png │ │ ├── gl3d_delaunay.png │ │ ├── gl3d_ibm-plot.png │ │ ├── gl3d_log-axis.png │ │ ├── gl3d_nan-holes.png │ │ ├── gl3d_ribbons.png │ │ ├── gl3d_snowden.png │ │ ├── gl3d_triangle.png │ │ ├── gl3d_z-range.png │ │ ├── hist2d_summed.png │ │ ├── hist_003_to_1.png │ │ ├── hist_0_to_093.png │ │ ├── hist_category.png │ │ ├── hist_grouped.png │ │ ├── hist_stacked.png │ │ ├── hist_valid_ses.png │ │ ├── legend_inside.png │ │ ├── legend_labels.png │ │ ├── legend_outside.png │ │ ├── legend_style.png │ │ ├── line_scatter.png │ │ ├── polar_scatter.png │ │ ├── simple_contour.png │ │ ├── simple_inset.png │ │ ├── simple_subplot.png │ │ ├── size_margins.png │ │ ├── styling_names.png │ │ ├── Bluered_heatmap.png │ │ ├── Electric_heatmap.png │ │ ├── Portland_heatmap.png │ │ ├── Viridis_heatmap.png │ │ ├── axes_range_mode.png │ │ ├── axes_range_type.png │ │ ├── bar_marker_array.png │ │ ├── basic_error_bar.png │ │ ├── box_grouped_horz.png │ │ ├── box_plot_jitter.png │ │ ├── category_dtick_3.png │ │ ├── contour_nolines.png │ │ ├── contour_scatter.png │ │ ├── error_bar_style.png │ │ ├── geo_kavrayskiy7.png │ │ ├── geo_orthographic.png │ │ ├── gl2d_axes_labels.png │ │ ├── gl2d_axes_lines.png │ │ ├── gl2d_global_font.png │ │ ├── gl2d_line_style.png │ │ ├── gl2d_show_legend.png │ │ ├── gl3d_bunny-hull.png │ │ ├── gl3d_convex-hull.png │ │ ├── gl3d_multi-scene.png │ │ ├── hist_003_to_093.png │ │ ├── hist_all_integer.png │ │ ├── hist_valid_ses_y.png │ │ ├── labelled_heatmap.png │ │ ├── line_grid_color.png │ │ ├── line_grid_width.png │ │ ├── pie_style_arrays.png │ │ ├── polar_area_chart.png │ │ ├── stacked_subplots.png │ │ ├── text_chart_basic.png │ │ ├── tick_attributes.png │ │ ├── Blackbody_heatmap.png │ │ ├── axes-autotype-empty.png │ │ ├── axes_free_default.png │ │ ├── axes_range_manual.png │ │ ├── bar_group_percent.png │ │ ├── bubble_markersize0.png │ │ ├── colorbar_tickformat.png │ │ ├── contour_match_edges.png │ │ ├── contour_transposed.png │ │ ├── contour_valid_ses.png │ │ ├── custom_colorscale.png │ │ ├── custom_size_subplot.png │ │ ├── geo_africa-insets.png │ │ ├── geo_bubbles-sizeref.png │ │ ├── geo_canadian-cites.png │ │ ├── geo_choropleth-text.png │ │ ├── geo_choropleth-usa.png │ │ ├── geo_conic-conformal.png │ │ ├── geo_country-names.png │ │ ├── geo_europe-bubbles.png │ │ ├── geo_stereographic.png │ │ ├── gl2d_axes_booleans.png │ │ ├── gl2d_legend_inside.png │ │ ├── gl2d_legend_labels.png │ │ ├── gl2d_legend_outside.png │ │ ├── gl2d_legend_style.png │ │ ├── gl2d_simple_inset.png │ │ ├── gl2d_size_margins.png │ │ ├── gl3d_autocolorscale.png │ │ ├── gl3d_autorange-zero.png │ │ ├── gl3d_chrisp-nan-1.png │ │ ├── gl3d_contour-lines.png │ │ ├── gl3d_log-axis-big.png │ │ ├── gl3d_marker-arrays.png │ │ ├── gl3d_marker-color.png │ │ ├── gl3d_mirror-ticks.png │ │ ├── gl3d_scatter-date.png │ │ ├── gl3d_text-weirdness.png │ │ ├── gl3d_wire-surface.png │ │ ├── hist_almost_integer.png │ │ ├── legend_visibility.png │ │ ├── multiple_subplots.png │ │ ├── percent_error_bar.png │ │ ├── pie_label0_dlabel.png │ │ ├── pie_sort_direction.png │ │ ├── simple_annotation.png │ │ ├── text_chart_arrays.png │ │ ├── text_chart_styling.png │ │ ├── tick_prefix_suffix.png │ │ ├── titles-avoid-labels.png │ │ ├── annotations-autorange.png │ │ ├── axes_enumerated_ticks.png │ │ ├── basic-figure-to-image.png │ │ ├── error_bar_horizontal.png │ │ ├── geo_custom-colorscale.png │ │ ├── geo_text_chart_arrays.png │ │ ├── gl2d_axes_range_mode.png │ │ ├── gl2d_axes_range_type.png │ │ ├── gl2d_basic_error_bar.png │ │ ├── gl2d_error_bar_style.png │ │ ├── gl2d_stacked_subplots.png │ │ ├── gl3d_opacity-surface.png │ │ ├── gl3d_surface-lighting.png │ │ ├── gl3d_xy-defined-ticks.png │ │ ├── hist_0_to_1_midpoints.png │ │ ├── hist_all_integer_n50.png │ │ ├── legendgroup_bar-stack.png │ │ ├── multiple_axes_double.png │ │ ├── shared_axes_subplots.png │ │ ├── bar-colorscale-colorbar.png │ │ ├── bar_stackto100_negative.png │ │ ├── box_with-empty-1st-trace.png │ │ ├── boxplots_undefined_vals.png │ │ ├── bubble_nonnumeric-sizes.png │ │ ├── geo_bubbles-colorscales.png │ │ ├── geo_scattergeo-locations.png │ │ ├── gl2d_axes_range_manual.png │ │ ├── gl2d_bubble_markersize0.png │ │ ├── gl2d_multiple_subplots.png │ │ ├── gl3d_projection-traces.png │ │ ├── multiple_axes_multiple.png │ │ ├── pie_labels_colors_text.png │ │ ├── scatter_fill_no_opacity.png │ │ ├── stacked_coupled_subplots.png │ │ ├── text_chart_single-string.png │ │ ├── autorange-tozero-rangemode.png │ │ ├── boxplots_outlierColorDflt.png │ │ ├── colorbar_enumerated_ticks.png │ │ ├── contour_xyz-gaps-on-sides.png │ │ ├── error_bar_asymmetric_array.png │ │ ├── gl2d_error_bar_horizontal.png │ │ ├── gl3d_scatter3d-colorscale.png │ │ ├── heatmap_autocolor_negative.png │ │ ├── heatmap_autocolor_positive.png │ │ ├── heatmap_xyz-gaps-on-sides.png │ │ ├── text_chart_invalid-arrays.png │ │ ├── 2dhistogram_contour_subplots.png │ │ ├── bar-marker-line-colorscales.png │ │ ├── colorbar_tick_prefix_suffix.png │ │ ├── contour_transposed-irregular.png │ │ ├── error_bar_asymmetric_constant.png │ │ ├── geo_country-names-text-chart.png │ │ ├── geo_multiple-usa-choropleths.png │ │ ├── gl2d_bubble_nonnumeric-sizes.png │ │ ├── gl2d_stacked_coupled_subplots.png │ │ ├── gl3d_opacity-scaling-spikes.png │ │ ├── pie_scale_textpos_hideslices.png │ │ ├── scatter-colorscale-colorbar.png │ │ ├── tick_prefix_suffix_exponent.png │ │ ├── gl2d_error_bar_asymmetric_array.png │ │ ├── heatmap-reverse-autocolorscale.png │ │ ├── scatter-marker-line-colorscales.png │ │ ├── gl2d_error_bar_asymmetric_constant.png │ │ ├── gl2d_scatter-colorscale-colorbar.png │ │ ├── heatmap_xyz-dates-and-categories.png │ │ └── gl2d_scatter-marker-line-colorscales.png │ └── index.html └── jasmine │ └── karma.ciconf.js ├── .gitignore ├── .npmignore ├── src ├── fonts │ ├── ploticon │ │ ├── ploticon.eot │ │ ├── ploticon.ttf │ │ └── ploticon.woff │ └── mathjax_config.js ├── constants │ ├── gl2d_dashes.json │ ├── gl_markers.json │ └── gl3d_dashes.json ├── css │ ├── _mixins.scss │ ├── style.scss │ ├── _vars.scss │ ├── _cursor.scss │ ├── _base.scss │ └── _notifier.scss ├── assets │ └── geo_assets.js ├── lib │ ├── array_to_calc_item.js │ ├── str2rgbarray.js │ ├── is_plain_object.js │ └── topojson_utils.js ├── plots │ ├── geo │ │ ├── layout │ │ │ ├── index.js │ │ │ └── attributes.js │ │ └── zoom_reset.js │ ├── polar │ │ └── area_attributes.js │ ├── gl3d │ │ ├── project.js │ │ └── layout │ │ │ └── attributes.js │ └── cartesian │ │ └── attributes.js ├── plot_api │ └── set_plot_config.js ├── traces │ ├── mesh3d │ │ └── index.js │ ├── choropleth │ │ └── index.js │ ├── scattergl │ │ └── index.js │ └── scattergeo │ │ └── index.js └── components │ └── color │ └── attributes.js ├── dist ├── extras │ └── mathjax │ │ ├── images │ │ ├── CloseX-31.png │ │ └── MenuArrow-15.png │ │ └── jax │ │ ├── element │ │ └── mml │ │ │ └── optable │ │ │ ├── GreekAndCoptic.js │ │ │ ├── CombDiacritMarks.js │ │ │ ├── Dingbats.js │ │ │ ├── LetterlikeSymbols.js │ │ │ ├── CombDiactForSymbols.js │ │ │ ├── Latin1Supplement.js │ │ │ ├── MiscSymbolsAndArrows.js │ │ │ ├── SpacingModLetters.js │ │ │ ├── MiscMathSymbolsA.js │ │ │ ├── MiscTechnical.js │ │ │ └── SupplementalArrowsA.js │ │ ├── output │ │ └── SVG │ │ │ └── fonts │ │ │ └── TeX │ │ │ ├── Main │ │ │ ├── Regular │ │ │ │ └── MathOperators.js │ │ │ └── Italic │ │ │ │ └── MathOperators.js │ │ │ ├── Fraktur │ │ │ ├── Regular │ │ │ │ └── Main.js │ │ │ └── Bold │ │ │ │ └── Main.js │ │ │ ├── SansSerif │ │ │ ├── Regular │ │ │ │ └── Main.js │ │ │ ├── Bold │ │ │ │ └── Main.js │ │ │ └── Italic │ │ │ │ └── Main.js │ │ │ ├── Typewriter │ │ │ └── Regular │ │ │ │ └── Main.js │ │ │ └── AMS │ │ │ └── Regular │ │ │ └── GeneralPunctuation.js │ │ └── input │ │ ├── MathML │ │ ├── entities │ │ │ ├── j.js │ │ │ ├── w.js │ │ │ ├── q.js │ │ │ ├── k.js │ │ │ ├── y.js │ │ │ └── z.js │ │ └── config.js │ │ └── AsciiMath │ │ └── config.js └── README.md ├── .ackrc ├── tasks ├── watch_plotly.js ├── util │ ├── get_image_request_options.js │ ├── shortcut_paths.js │ ├── compress_attributes.js │ └── format_bundle_msg.js ├── preprocess.js ├── baseline.sh ├── test_image.sh └── cibundle.js ├── devtools └── image_viewer │ └── index.html ├── circle.yml ├── CHANGELOG.md └── LICENSE /test/image/mocks/empty.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [], 3 | "layout": {} 4 | } 5 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | 3 | build/* 4 | !build/README.md 5 | 6 | npm-debug.log 7 | -------------------------------------------------------------------------------- /test/image/baselines/0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/0.png -------------------------------------------------------------------------------- /test/image/baselines/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/1.png -------------------------------------------------------------------------------- /test/image/baselines/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/4.png -------------------------------------------------------------------------------- /test/image/baselines/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/5.png -------------------------------------------------------------------------------- /test/image/baselines/6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/6.png -------------------------------------------------------------------------------- /test/image/baselines/7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/7.png -------------------------------------------------------------------------------- /test/image/baselines/8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/8.png -------------------------------------------------------------------------------- /test/image/baselines/10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/10.png -------------------------------------------------------------------------------- /test/image/baselines/11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/11.png -------------------------------------------------------------------------------- /test/image/baselines/12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/12.png -------------------------------------------------------------------------------- /test/image/baselines/13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/13.png -------------------------------------------------------------------------------- /test/image/baselines/14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/14.png -------------------------------------------------------------------------------- /test/image/baselines/15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/15.png -------------------------------------------------------------------------------- /test/image/baselines/16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/16.png -------------------------------------------------------------------------------- /test/image/baselines/17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/17.png -------------------------------------------------------------------------------- /test/image/baselines/18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/18.png -------------------------------------------------------------------------------- /test/image/baselines/19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/19.png -------------------------------------------------------------------------------- /test/image/baselines/20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/20.png -------------------------------------------------------------------------------- /test/image/baselines/21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/21.png -------------------------------------------------------------------------------- /test/image/baselines/22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/22.png -------------------------------------------------------------------------------- /test/image/baselines/23.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/23.png -------------------------------------------------------------------------------- /test/image/baselines/24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/24.png -------------------------------------------------------------------------------- /test/image/baselines/25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/25.png -------------------------------------------------------------------------------- /test/image/baselines/26.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/26.png -------------------------------------------------------------------------------- /test/image/baselines/27.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/27.png -------------------------------------------------------------------------------- /test/image/baselines/28.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/28.png -------------------------------------------------------------------------------- /test/image/baselines/29.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/29.png -------------------------------------------------------------------------------- /test/image/baselines/30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/30.png -------------------------------------------------------------------------------- /test/image/baselines/31.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/31.png -------------------------------------------------------------------------------- /test/image/baselines/32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/32.png -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | build/* 2 | !build/README.md 3 | 4 | devtools 5 | test 6 | dist/extras/mathjax 7 | 8 | circle.yml 9 | -------------------------------------------------------------------------------- /src/fonts/ploticon/ploticon.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/src/fonts/ploticon/ploticon.eot -------------------------------------------------------------------------------- /src/fonts/ploticon/ploticon.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/src/fonts/ploticon/ploticon.ttf -------------------------------------------------------------------------------- /test/image/baselines/empty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/empty.png -------------------------------------------------------------------------------- /test/image/baselines/fonts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/fonts.png -------------------------------------------------------------------------------- /test/image/baselines/shapes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/shapes.png -------------------------------------------------------------------------------- /src/fonts/ploticon/ploticon.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/src/fonts/ploticon/ploticon.woff -------------------------------------------------------------------------------- /test/image/baselines/bar_line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/bar_line.png -------------------------------------------------------------------------------- /test/image/baselines/basic_bar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/basic_bar.png -------------------------------------------------------------------------------- /test/image/baselines/chinese.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/chinese.png -------------------------------------------------------------------------------- /test/image/baselines/date_axes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/date_axes.png -------------------------------------------------------------------------------- /test/image/baselines/geo_first.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/geo_first.png -------------------------------------------------------------------------------- /test/image/baselines/gl2d_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/gl2d_10.png -------------------------------------------------------------------------------- /test/image/baselines/gl2d_12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/gl2d_12.png -------------------------------------------------------------------------------- /test/image/baselines/gl2d_14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/gl2d_14.png -------------------------------------------------------------------------------- /test/image/baselines/gl2d_17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/gl2d_17.png -------------------------------------------------------------------------------- /test/image/baselines/gl2d_22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/gl2d_22.png -------------------------------------------------------------------------------- /test/image/baselines/gl2d_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/gl2d_24.png -------------------------------------------------------------------------------- /test/image/baselines/gl2d_28.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/gl2d_28.png -------------------------------------------------------------------------------- /test/image/baselines/gl2d_30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/gl2d_30.png -------------------------------------------------------------------------------- /test/image/baselines/gl2d_32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/gl2d_32.png -------------------------------------------------------------------------------- /test/image/baselines/japanese.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/japanese.png -------------------------------------------------------------------------------- /test/image/baselines/pie_fonts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/pie_fonts.png -------------------------------------------------------------------------------- /test/image/baselines/pie_style.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/pie_style.png -------------------------------------------------------------------------------- /test/image/baselines/simple-3d.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/simple-3d.png -------------------------------------------------------------------------------- /test/image/baselines/style_bar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/style_bar.png -------------------------------------------------------------------------------- /test/image/baselines/Hot_heatmap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/Hot_heatmap.png -------------------------------------------------------------------------------- /test/image/baselines/Jet_heatmap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/Jet_heatmap.png -------------------------------------------------------------------------------- /test/image/baselines/annotations.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/annotations.png -------------------------------------------------------------------------------- /test/image/baselines/axes-ticks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/axes-ticks.png -------------------------------------------------------------------------------- /test/image/baselines/axes_labels.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/axes_labels.png -------------------------------------------------------------------------------- /test/image/baselines/axes_lines.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/axes_lines.png -------------------------------------------------------------------------------- /test/image/baselines/basic_area.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/basic_area.png -------------------------------------------------------------------------------- /test/image/baselines/basic_line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/basic_line.png -------------------------------------------------------------------------------- /test/image/baselines/benchmarks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/benchmarks.png -------------------------------------------------------------------------------- /test/image/baselines/box_grouped.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/box_grouped.png -------------------------------------------------------------------------------- /test/image/baselines/bubblechart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/bubblechart.png -------------------------------------------------------------------------------- /test/image/baselines/geo_second.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/geo_second.png -------------------------------------------------------------------------------- /test/image/baselines/gl2d_fonts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/gl2d_fonts.png -------------------------------------------------------------------------------- /test/image/baselines/gl3d_bunny.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/gl3d_bunny.png -------------------------------------------------------------------------------- /test/image/baselines/global_font.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/global_font.png -------------------------------------------------------------------------------- /test/image/baselines/grouped_bar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/grouped_bar.png -------------------------------------------------------------------------------- /test/image/baselines/hist_summed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/hist_summed.png -------------------------------------------------------------------------------- /test/image/baselines/legendgroup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/legendgroup.png -------------------------------------------------------------------------------- /test/image/baselines/line_style.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/line_style.png -------------------------------------------------------------------------------- /test/image/baselines/pie_simple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/pie_simple.png -------------------------------------------------------------------------------- /test/image/baselines/polar_line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/polar_line.png -------------------------------------------------------------------------------- /test/image/baselines/pseudo_html.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/pseudo_html.png -------------------------------------------------------------------------------- /test/image/baselines/show_legend.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/show_legend.png -------------------------------------------------------------------------------- /test/image/baselines/stacked_bar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/stacked_bar.png -------------------------------------------------------------------------------- /test/image/baselines/tickformat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/tickformat.png -------------------------------------------------------------------------------- /test/image/baselines/Earth_heatmap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/Earth_heatmap.png -------------------------------------------------------------------------------- /test/image/baselines/Greens_heatmap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/Greens_heatmap.png -------------------------------------------------------------------------------- /test/image/baselines/Greys_heatmap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/Greys_heatmap.png -------------------------------------------------------------------------------- /test/image/baselines/Picnic_heatmap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/Picnic_heatmap.png -------------------------------------------------------------------------------- /test/image/baselines/RdBu_heatmap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/RdBu_heatmap.png -------------------------------------------------------------------------------- /test/image/baselines/YIGnBu_heatmap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/YIGnBu_heatmap.png -------------------------------------------------------------------------------- /test/image/baselines/YIOrRd_heatmap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/YIOrRd_heatmap.png -------------------------------------------------------------------------------- /test/image/baselines/axes_booleans.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/axes_booleans.png -------------------------------------------------------------------------------- /test/image/baselines/axes_reversed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/axes_reversed.png -------------------------------------------------------------------------------- /test/image/baselines/bar_stackto1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/bar_stackto1.png -------------------------------------------------------------------------------- /test/image/baselines/basic_heatmap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/basic_heatmap.png -------------------------------------------------------------------------------- /test/image/baselines/connectgaps_2d.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/connectgaps_2d.png -------------------------------------------------------------------------------- /test/image/baselines/date_histogram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/date_histogram.png -------------------------------------------------------------------------------- /test/image/baselines/error_bar_bar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/error_bar_bar.png -------------------------------------------------------------------------------- /test/image/baselines/font-wishlist.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/font-wishlist.png -------------------------------------------------------------------------------- /test/image/baselines/geo_bg-color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/geo_bg-color.png -------------------------------------------------------------------------------- /test/image/baselines/geo_big-frame.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/geo_big-frame.png -------------------------------------------------------------------------------- /test/image/baselines/geo_legendonly.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/geo_legendonly.png -------------------------------------------------------------------------------- /test/image/baselines/geo_multi-geos.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/geo_multi-geos.png -------------------------------------------------------------------------------- /test/image/baselines/geo_usa-states.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/geo_usa-states.png -------------------------------------------------------------------------------- /test/image/baselines/gl2d_date_axes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/gl2d_date_axes.png -------------------------------------------------------------------------------- /test/image/baselines/gl3d_cufflinks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/gl3d_cufflinks.png -------------------------------------------------------------------------------- /test/image/baselines/gl3d_delaunay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/gl3d_delaunay.png -------------------------------------------------------------------------------- /test/image/baselines/gl3d_ibm-plot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/gl3d_ibm-plot.png -------------------------------------------------------------------------------- /test/image/baselines/gl3d_log-axis.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/gl3d_log-axis.png -------------------------------------------------------------------------------- /test/image/baselines/gl3d_nan-holes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/gl3d_nan-holes.png -------------------------------------------------------------------------------- /test/image/baselines/gl3d_ribbons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/gl3d_ribbons.png -------------------------------------------------------------------------------- /test/image/baselines/gl3d_snowden.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/gl3d_snowden.png -------------------------------------------------------------------------------- /test/image/baselines/gl3d_triangle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/gl3d_triangle.png -------------------------------------------------------------------------------- /test/image/baselines/gl3d_z-range.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/gl3d_z-range.png -------------------------------------------------------------------------------- /test/image/baselines/hist2d_summed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/hist2d_summed.png -------------------------------------------------------------------------------- /test/image/baselines/hist_003_to_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/hist_003_to_1.png -------------------------------------------------------------------------------- /test/image/baselines/hist_0_to_093.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/hist_0_to_093.png -------------------------------------------------------------------------------- /test/image/baselines/hist_category.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/hist_category.png -------------------------------------------------------------------------------- /test/image/baselines/hist_grouped.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/hist_grouped.png -------------------------------------------------------------------------------- /test/image/baselines/hist_stacked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/hist_stacked.png -------------------------------------------------------------------------------- /test/image/baselines/hist_valid_ses.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/hist_valid_ses.png -------------------------------------------------------------------------------- /test/image/baselines/legend_inside.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/legend_inside.png -------------------------------------------------------------------------------- /test/image/baselines/legend_labels.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/legend_labels.png -------------------------------------------------------------------------------- /test/image/baselines/legend_outside.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/legend_outside.png -------------------------------------------------------------------------------- /test/image/baselines/legend_style.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/legend_style.png -------------------------------------------------------------------------------- /test/image/baselines/line_scatter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/line_scatter.png -------------------------------------------------------------------------------- /test/image/baselines/polar_scatter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/polar_scatter.png -------------------------------------------------------------------------------- /test/image/baselines/simple_contour.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/simple_contour.png -------------------------------------------------------------------------------- /test/image/baselines/simple_inset.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/simple_inset.png -------------------------------------------------------------------------------- /test/image/baselines/simple_subplot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/simple_subplot.png -------------------------------------------------------------------------------- /test/image/baselines/size_margins.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/size_margins.png -------------------------------------------------------------------------------- /test/image/baselines/styling_names.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/styling_names.png -------------------------------------------------------------------------------- /dist/extras/mathjax/images/CloseX-31.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/dist/extras/mathjax/images/CloseX-31.png -------------------------------------------------------------------------------- /test/image/baselines/Bluered_heatmap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/Bluered_heatmap.png -------------------------------------------------------------------------------- /test/image/baselines/Electric_heatmap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/Electric_heatmap.png -------------------------------------------------------------------------------- /test/image/baselines/Portland_heatmap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/Portland_heatmap.png -------------------------------------------------------------------------------- /test/image/baselines/Viridis_heatmap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/Viridis_heatmap.png -------------------------------------------------------------------------------- /test/image/baselines/axes_range_mode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/axes_range_mode.png -------------------------------------------------------------------------------- /test/image/baselines/axes_range_type.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/axes_range_type.png -------------------------------------------------------------------------------- /test/image/baselines/bar_marker_array.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/bar_marker_array.png -------------------------------------------------------------------------------- /test/image/baselines/basic_error_bar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/basic_error_bar.png -------------------------------------------------------------------------------- /test/image/baselines/box_grouped_horz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/box_grouped_horz.png -------------------------------------------------------------------------------- /test/image/baselines/box_plot_jitter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/box_plot_jitter.png -------------------------------------------------------------------------------- /test/image/baselines/category_dtick_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/category_dtick_3.png -------------------------------------------------------------------------------- /test/image/baselines/contour_nolines.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/contour_nolines.png -------------------------------------------------------------------------------- /test/image/baselines/contour_scatter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/contour_scatter.png -------------------------------------------------------------------------------- /test/image/baselines/error_bar_style.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/error_bar_style.png -------------------------------------------------------------------------------- /test/image/baselines/geo_kavrayskiy7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/geo_kavrayskiy7.png -------------------------------------------------------------------------------- /test/image/baselines/geo_orthographic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/geo_orthographic.png -------------------------------------------------------------------------------- /test/image/baselines/gl2d_axes_labels.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/gl2d_axes_labels.png -------------------------------------------------------------------------------- /test/image/baselines/gl2d_axes_lines.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/gl2d_axes_lines.png -------------------------------------------------------------------------------- /test/image/baselines/gl2d_global_font.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/gl2d_global_font.png -------------------------------------------------------------------------------- /test/image/baselines/gl2d_line_style.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/gl2d_line_style.png -------------------------------------------------------------------------------- /test/image/baselines/gl2d_show_legend.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/gl2d_show_legend.png -------------------------------------------------------------------------------- /test/image/baselines/gl3d_bunny-hull.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/gl3d_bunny-hull.png -------------------------------------------------------------------------------- /test/image/baselines/gl3d_convex-hull.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/gl3d_convex-hull.png -------------------------------------------------------------------------------- /test/image/baselines/gl3d_multi-scene.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/gl3d_multi-scene.png -------------------------------------------------------------------------------- /test/image/baselines/hist_003_to_093.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/hist_003_to_093.png -------------------------------------------------------------------------------- /test/image/baselines/hist_all_integer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/hist_all_integer.png -------------------------------------------------------------------------------- /test/image/baselines/hist_valid_ses_y.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/hist_valid_ses_y.png -------------------------------------------------------------------------------- /test/image/baselines/labelled_heatmap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/labelled_heatmap.png -------------------------------------------------------------------------------- /test/image/baselines/line_grid_color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/line_grid_color.png -------------------------------------------------------------------------------- /test/image/baselines/line_grid_width.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/line_grid_width.png -------------------------------------------------------------------------------- /test/image/baselines/pie_style_arrays.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/pie_style_arrays.png -------------------------------------------------------------------------------- /test/image/baselines/polar_area_chart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/polar_area_chart.png -------------------------------------------------------------------------------- /test/image/baselines/stacked_subplots.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/stacked_subplots.png -------------------------------------------------------------------------------- /test/image/baselines/text_chart_basic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/text_chart_basic.png -------------------------------------------------------------------------------- /test/image/baselines/tick_attributes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/tick_attributes.png -------------------------------------------------------------------------------- /dist/extras/mathjax/images/MenuArrow-15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/dist/extras/mathjax/images/MenuArrow-15.png -------------------------------------------------------------------------------- /test/image/baselines/Blackbody_heatmap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/Blackbody_heatmap.png -------------------------------------------------------------------------------- /test/image/baselines/axes-autotype-empty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/axes-autotype-empty.png -------------------------------------------------------------------------------- /test/image/baselines/axes_free_default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/axes_free_default.png -------------------------------------------------------------------------------- /test/image/baselines/axes_range_manual.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/axes_range_manual.png -------------------------------------------------------------------------------- /test/image/baselines/bar_group_percent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/bar_group_percent.png -------------------------------------------------------------------------------- /test/image/baselines/bubble_markersize0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/bubble_markersize0.png -------------------------------------------------------------------------------- /test/image/baselines/colorbar_tickformat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/colorbar_tickformat.png -------------------------------------------------------------------------------- /test/image/baselines/contour_match_edges.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/contour_match_edges.png -------------------------------------------------------------------------------- /test/image/baselines/contour_transposed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/contour_transposed.png -------------------------------------------------------------------------------- /test/image/baselines/contour_valid_ses.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/contour_valid_ses.png -------------------------------------------------------------------------------- /test/image/baselines/custom_colorscale.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/custom_colorscale.png -------------------------------------------------------------------------------- /test/image/baselines/custom_size_subplot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/custom_size_subplot.png -------------------------------------------------------------------------------- /test/image/baselines/geo_africa-insets.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/geo_africa-insets.png -------------------------------------------------------------------------------- /test/image/baselines/geo_bubbles-sizeref.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/geo_bubbles-sizeref.png -------------------------------------------------------------------------------- /test/image/baselines/geo_canadian-cites.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/geo_canadian-cites.png -------------------------------------------------------------------------------- /test/image/baselines/geo_choropleth-text.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/geo_choropleth-text.png -------------------------------------------------------------------------------- /test/image/baselines/geo_choropleth-usa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/geo_choropleth-usa.png -------------------------------------------------------------------------------- /test/image/baselines/geo_conic-conformal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/geo_conic-conformal.png -------------------------------------------------------------------------------- /test/image/baselines/geo_country-names.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/geo_country-names.png -------------------------------------------------------------------------------- /test/image/baselines/geo_europe-bubbles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/geo_europe-bubbles.png -------------------------------------------------------------------------------- /test/image/baselines/geo_stereographic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/geo_stereographic.png -------------------------------------------------------------------------------- /test/image/baselines/gl2d_axes_booleans.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/gl2d_axes_booleans.png -------------------------------------------------------------------------------- /test/image/baselines/gl2d_legend_inside.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/gl2d_legend_inside.png -------------------------------------------------------------------------------- /test/image/baselines/gl2d_legend_labels.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/gl2d_legend_labels.png -------------------------------------------------------------------------------- /test/image/baselines/gl2d_legend_outside.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/gl2d_legend_outside.png -------------------------------------------------------------------------------- /test/image/baselines/gl2d_legend_style.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/gl2d_legend_style.png -------------------------------------------------------------------------------- /test/image/baselines/gl2d_simple_inset.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/gl2d_simple_inset.png -------------------------------------------------------------------------------- /test/image/baselines/gl2d_size_margins.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/gl2d_size_margins.png -------------------------------------------------------------------------------- /test/image/baselines/gl3d_autocolorscale.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/gl3d_autocolorscale.png -------------------------------------------------------------------------------- /test/image/baselines/gl3d_autorange-zero.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/gl3d_autorange-zero.png -------------------------------------------------------------------------------- /test/image/baselines/gl3d_chrisp-nan-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/gl3d_chrisp-nan-1.png -------------------------------------------------------------------------------- /test/image/baselines/gl3d_contour-lines.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/gl3d_contour-lines.png -------------------------------------------------------------------------------- /test/image/baselines/gl3d_log-axis-big.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/gl3d_log-axis-big.png -------------------------------------------------------------------------------- /test/image/baselines/gl3d_marker-arrays.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/gl3d_marker-arrays.png -------------------------------------------------------------------------------- /test/image/baselines/gl3d_marker-color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/gl3d_marker-color.png -------------------------------------------------------------------------------- /test/image/baselines/gl3d_mirror-ticks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/gl3d_mirror-ticks.png -------------------------------------------------------------------------------- /test/image/baselines/gl3d_scatter-date.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/gl3d_scatter-date.png -------------------------------------------------------------------------------- /test/image/baselines/gl3d_text-weirdness.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/gl3d_text-weirdness.png -------------------------------------------------------------------------------- /test/image/baselines/gl3d_wire-surface.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/gl3d_wire-surface.png -------------------------------------------------------------------------------- /test/image/baselines/hist_almost_integer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/hist_almost_integer.png -------------------------------------------------------------------------------- /test/image/baselines/legend_visibility.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/legend_visibility.png -------------------------------------------------------------------------------- /test/image/baselines/multiple_subplots.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/multiple_subplots.png -------------------------------------------------------------------------------- /test/image/baselines/percent_error_bar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/percent_error_bar.png -------------------------------------------------------------------------------- /test/image/baselines/pie_label0_dlabel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/pie_label0_dlabel.png -------------------------------------------------------------------------------- /test/image/baselines/pie_sort_direction.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/pie_sort_direction.png -------------------------------------------------------------------------------- /test/image/baselines/simple_annotation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/simple_annotation.png -------------------------------------------------------------------------------- /test/image/baselines/text_chart_arrays.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/text_chart_arrays.png -------------------------------------------------------------------------------- /test/image/baselines/text_chart_styling.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/text_chart_styling.png -------------------------------------------------------------------------------- /test/image/baselines/tick_prefix_suffix.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/tick_prefix_suffix.png -------------------------------------------------------------------------------- /test/image/baselines/titles-avoid-labels.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/titles-avoid-labels.png -------------------------------------------------------------------------------- /test/image/baselines/annotations-autorange.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/annotations-autorange.png -------------------------------------------------------------------------------- /test/image/baselines/axes_enumerated_ticks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/axes_enumerated_ticks.png -------------------------------------------------------------------------------- /test/image/baselines/basic-figure-to-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/basic-figure-to-image.png -------------------------------------------------------------------------------- /test/image/baselines/error_bar_horizontal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/error_bar_horizontal.png -------------------------------------------------------------------------------- /test/image/baselines/geo_custom-colorscale.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/geo_custom-colorscale.png -------------------------------------------------------------------------------- /test/image/baselines/geo_text_chart_arrays.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/geo_text_chart_arrays.png -------------------------------------------------------------------------------- /test/image/baselines/gl2d_axes_range_mode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/gl2d_axes_range_mode.png -------------------------------------------------------------------------------- /test/image/baselines/gl2d_axes_range_type.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/gl2d_axes_range_type.png -------------------------------------------------------------------------------- /test/image/baselines/gl2d_basic_error_bar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/gl2d_basic_error_bar.png -------------------------------------------------------------------------------- /test/image/baselines/gl2d_error_bar_style.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/gl2d_error_bar_style.png -------------------------------------------------------------------------------- /test/image/baselines/gl2d_stacked_subplots.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/gl2d_stacked_subplots.png -------------------------------------------------------------------------------- /test/image/baselines/gl3d_opacity-surface.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/gl3d_opacity-surface.png -------------------------------------------------------------------------------- /test/image/baselines/gl3d_surface-lighting.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/gl3d_surface-lighting.png -------------------------------------------------------------------------------- /test/image/baselines/gl3d_xy-defined-ticks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/gl3d_xy-defined-ticks.png -------------------------------------------------------------------------------- /test/image/baselines/hist_0_to_1_midpoints.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/hist_0_to_1_midpoints.png -------------------------------------------------------------------------------- /test/image/baselines/hist_all_integer_n50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/hist_all_integer_n50.png -------------------------------------------------------------------------------- /test/image/baselines/legendgroup_bar-stack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/legendgroup_bar-stack.png -------------------------------------------------------------------------------- /test/image/baselines/multiple_axes_double.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/multiple_axes_double.png -------------------------------------------------------------------------------- /test/image/baselines/shared_axes_subplots.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/shared_axes_subplots.png -------------------------------------------------------------------------------- /test/image/baselines/bar-colorscale-colorbar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/bar-colorscale-colorbar.png -------------------------------------------------------------------------------- /test/image/baselines/bar_stackto100_negative.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/bar_stackto100_negative.png -------------------------------------------------------------------------------- /test/image/baselines/box_with-empty-1st-trace.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/box_with-empty-1st-trace.png -------------------------------------------------------------------------------- /test/image/baselines/boxplots_undefined_vals.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/boxplots_undefined_vals.png -------------------------------------------------------------------------------- /test/image/baselines/bubble_nonnumeric-sizes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/bubble_nonnumeric-sizes.png -------------------------------------------------------------------------------- /test/image/baselines/geo_bubbles-colorscales.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/geo_bubbles-colorscales.png -------------------------------------------------------------------------------- /test/image/baselines/geo_scattergeo-locations.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/geo_scattergeo-locations.png -------------------------------------------------------------------------------- /test/image/baselines/gl2d_axes_range_manual.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/gl2d_axes_range_manual.png -------------------------------------------------------------------------------- /test/image/baselines/gl2d_bubble_markersize0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/gl2d_bubble_markersize0.png -------------------------------------------------------------------------------- /test/image/baselines/gl2d_multiple_subplots.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/gl2d_multiple_subplots.png -------------------------------------------------------------------------------- /test/image/baselines/gl3d_projection-traces.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/gl3d_projection-traces.png -------------------------------------------------------------------------------- /test/image/baselines/multiple_axes_multiple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/multiple_axes_multiple.png -------------------------------------------------------------------------------- /test/image/baselines/pie_labels_colors_text.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/pie_labels_colors_text.png -------------------------------------------------------------------------------- /test/image/baselines/scatter_fill_no_opacity.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/scatter_fill_no_opacity.png -------------------------------------------------------------------------------- /test/image/baselines/stacked_coupled_subplots.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/stacked_coupled_subplots.png -------------------------------------------------------------------------------- /test/image/baselines/text_chart_single-string.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/text_chart_single-string.png -------------------------------------------------------------------------------- /test/image/baselines/autorange-tozero-rangemode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/autorange-tozero-rangemode.png -------------------------------------------------------------------------------- /test/image/baselines/boxplots_outlierColorDflt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/boxplots_outlierColorDflt.png -------------------------------------------------------------------------------- /test/image/baselines/colorbar_enumerated_ticks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/colorbar_enumerated_ticks.png -------------------------------------------------------------------------------- /test/image/baselines/contour_xyz-gaps-on-sides.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/contour_xyz-gaps-on-sides.png -------------------------------------------------------------------------------- /test/image/baselines/error_bar_asymmetric_array.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/error_bar_asymmetric_array.png -------------------------------------------------------------------------------- /test/image/baselines/gl2d_error_bar_horizontal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/gl2d_error_bar_horizontal.png -------------------------------------------------------------------------------- /test/image/baselines/gl3d_scatter3d-colorscale.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/gl3d_scatter3d-colorscale.png -------------------------------------------------------------------------------- /test/image/baselines/heatmap_autocolor_negative.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/heatmap_autocolor_negative.png -------------------------------------------------------------------------------- /test/image/baselines/heatmap_autocolor_positive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/heatmap_autocolor_positive.png -------------------------------------------------------------------------------- /test/image/baselines/heatmap_xyz-gaps-on-sides.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/heatmap_xyz-gaps-on-sides.png -------------------------------------------------------------------------------- /test/image/baselines/text_chart_invalid-arrays.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/text_chart_invalid-arrays.png -------------------------------------------------------------------------------- /test/image/mocks/hist_category.json: -------------------------------------------------------------------------------- 1 | {"data":[{"x":["a","b","c","a","b","d","b","c","d"],"type":"histogram"}], 2 | "layout":{"height":300,"width":400}} 3 | -------------------------------------------------------------------------------- /.ackrc: -------------------------------------------------------------------------------- 1 | --ignore-directory=is:dist 2 | --ignore-directory=is:build 3 | --ignore-directory=is:assets 4 | 5 | --ignore-file=ext:svg 6 | --ignore-file=ext:log 7 | -------------------------------------------------------------------------------- /test/image/baselines/2dhistogram_contour_subplots.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/2dhistogram_contour_subplots.png -------------------------------------------------------------------------------- /test/image/baselines/bar-marker-line-colorscales.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/bar-marker-line-colorscales.png -------------------------------------------------------------------------------- /test/image/baselines/colorbar_tick_prefix_suffix.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/colorbar_tick_prefix_suffix.png -------------------------------------------------------------------------------- /test/image/baselines/contour_transposed-irregular.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/contour_transposed-irregular.png -------------------------------------------------------------------------------- /test/image/baselines/error_bar_asymmetric_constant.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/error_bar_asymmetric_constant.png -------------------------------------------------------------------------------- /test/image/baselines/geo_country-names-text-chart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/geo_country-names-text-chart.png -------------------------------------------------------------------------------- /test/image/baselines/geo_multiple-usa-choropleths.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/geo_multiple-usa-choropleths.png -------------------------------------------------------------------------------- /test/image/baselines/gl2d_bubble_nonnumeric-sizes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/gl2d_bubble_nonnumeric-sizes.png -------------------------------------------------------------------------------- /test/image/baselines/gl2d_stacked_coupled_subplots.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/gl2d_stacked_coupled_subplots.png -------------------------------------------------------------------------------- /test/image/baselines/gl3d_opacity-scaling-spikes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/gl3d_opacity-scaling-spikes.png -------------------------------------------------------------------------------- /test/image/baselines/pie_scale_textpos_hideslices.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/pie_scale_textpos_hideslices.png -------------------------------------------------------------------------------- /test/image/baselines/scatter-colorscale-colorbar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/scatter-colorscale-colorbar.png -------------------------------------------------------------------------------- /test/image/baselines/tick_prefix_suffix_exponent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/tick_prefix_suffix_exponent.png -------------------------------------------------------------------------------- /test/image/baselines/gl2d_error_bar_asymmetric_array.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/gl2d_error_bar_asymmetric_array.png -------------------------------------------------------------------------------- /test/image/baselines/heatmap-reverse-autocolorscale.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/heatmap-reverse-autocolorscale.png -------------------------------------------------------------------------------- /test/image/baselines/scatter-marker-line-colorscales.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/scatter-marker-line-colorscales.png -------------------------------------------------------------------------------- /test/image/baselines/gl2d_error_bar_asymmetric_constant.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/gl2d_error_bar_asymmetric_constant.png -------------------------------------------------------------------------------- /test/image/baselines/gl2d_scatter-colorscale-colorbar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/gl2d_scatter-colorscale-colorbar.png -------------------------------------------------------------------------------- /test/image/baselines/heatmap_xyz-dates-and-categories.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/heatmap_xyz-dates-and-categories.png -------------------------------------------------------------------------------- /test/image/mocks/hist_003_to_093.json: -------------------------------------------------------------------------------- 1 | {"data":[{"x":[0.03,0.13,0.23,0.33,0.43,0.53,0.63,0.73,0.83,0.93],"type":"histogram"}], 2 | "layout":{"height":300,"width":400}} 3 | -------------------------------------------------------------------------------- /test/image/mocks/hist_003_to_1.json: -------------------------------------------------------------------------------- 1 | {"data":[{"x":[0.03,0.13,0.23,0.33,0.43,0.53,0.63,0.73,0.83,0.93,1],"type":"histogram"}], 2 | "layout":{"height":300,"width":400}} 3 | -------------------------------------------------------------------------------- /test/image/mocks/hist_0_to_093.json: -------------------------------------------------------------------------------- 1 | {"data":[{"x":[0,0.03,0.13,0.23,0.33,0.43,0.53,0.63,0.73,0.83,0.93],"type":"histogram"}], 2 | "layout":{"height":300,"width":400}} 3 | -------------------------------------------------------------------------------- /test/image/baselines/gl2d_scatter-marker-line-colorscales.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emackey/plotly.js/master/test/image/baselines/gl2d_scatter-marker-line-colorscales.png -------------------------------------------------------------------------------- /test/image/mocks/hist_0_to_1_midpoints.json: -------------------------------------------------------------------------------- 1 | {"data":[{"x":[0,0.03,0.13,0.25,0.33,0.43,0.53,0.63,0.75,0.83,0.93,1],"type":"histogram"}], 2 | "layout":{"height":300,"width":400}} 3 | -------------------------------------------------------------------------------- /src/constants/gl2d_dashes.json: -------------------------------------------------------------------------------- 1 | { 2 | "solid": [1], 3 | "dot": [1,1], 4 | "dash": [4,1], 5 | "longdash": [8,1], 6 | "dashdot": [4,1,1,1], 7 | "longdashdot": [8,1,1,1] 8 | } 9 | -------------------------------------------------------------------------------- /tasks/watch_plotly.js: -------------------------------------------------------------------------------- 1 | var makeWatchifiedBundle = require('./util/make_watchified_bundle'); 2 | 3 | // make watchified bundle and run it! 4 | var watchifiedBundle = makeWatchifiedBundle(function() {}); 5 | watchifiedBundle(); 6 | -------------------------------------------------------------------------------- /src/constants/gl_markers.json: -------------------------------------------------------------------------------- 1 | { 2 | "circle": "●", 3 | "circle-open": "○", 4 | "square": "■", 5 | "square-open": "□", 6 | "diamond": "◆", 7 | "diamond-open": "◇", 8 | "cross": "+", 9 | "x": "❌" 10 | } 11 | -------------------------------------------------------------------------------- /src/css/_mixins.scss: -------------------------------------------------------------------------------- 1 | // Vendor prefixer mixin. 2 | @mixin vendor($property, $value) { 3 | -webkit-#{$property}: $value; 4 | -moz-#{$property}: $value; 5 | -ms-#{$property}: $value; 6 | -o-#{$property}: $value; 7 | #{$property}: $value; 8 | } 9 | -------------------------------------------------------------------------------- /src/constants/gl3d_dashes.json: -------------------------------------------------------------------------------- 1 | { 2 | "solid": [[], 0], 3 | "dot": [[0.5,1], 200], 4 | "dash": [[0.5,1], 50], 5 | "longdash": [[0.5,1], 10], 6 | "dashdot": [[0.5,0.625,0.875,1], 50], 7 | "longdashdot": [[0.5,0.7,0.8,1], 10] 8 | } -------------------------------------------------------------------------------- /test/image/mocks/hist_grouped.json: -------------------------------------------------------------------------------- 1 | { 2 | "data":[{ 3 | "x":["1","2","3","4"], 4 | "type":"histogram" 5 | },{ 6 | "x":["1","2","3","4"], 7 | "type":"histogram" 8 | }], 9 | "layout":{"height":300,"width":400} 10 | } 11 | -------------------------------------------------------------------------------- /src/css/style.scss: -------------------------------------------------------------------------------- 1 | @import "vars.scss"; 2 | 3 | .js-plotly-plot .plotly { 4 | @import "mixins.scss"; 5 | @import "base.scss"; 6 | @import "cursor.scss"; 7 | @import "modebar.scss"; 8 | @import "tooltip.scss"; 9 | } 10 | @import "notifier.scss"; 11 | -------------------------------------------------------------------------------- /test/image/mocks/gl3d_delaunay.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "type":"mesh3d", 5 | "y":[0, 1, 2], 6 | "x":[1, 2, 0], 7 | "z":[2, 0, 1], 8 | "delaunayaxis": "x" 9 | }], 10 | "layout": { 11 | "title": "Delaunay axis" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /test/image/mocks/hist_stacked.json: -------------------------------------------------------------------------------- 1 | { 2 | "data":[{ 3 | "x":["1","2","3","4"], 4 | "type":"histogram" 5 | },{ 6 | "x":["1","2","3","4"], 7 | "type":"histogram" 8 | }], 9 | "layout":{"height":300,"width":400,"barmode":"stack"} 10 | } 11 | -------------------------------------------------------------------------------- /test/image/mocks/basic_bar.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "x": [ 5 | "giraffes", 6 | "orangutans", 7 | "monkeys" 8 | ], 9 | "y": [ 10 | 20, 11 | 14, 12 | 23 13 | ], 14 | "type": "bar" 15 | } 16 | ] 17 | } 18 | -------------------------------------------------------------------------------- /test/image/mocks/pie_simple.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "values": [ 5 | 1, 6 | 2, 7 | 3, 8 | 4, 9 | 5 10 | ], 11 | "type": "pie" 12 | } 13 | ], 14 | "layout": { 15 | "height": 300, 16 | "width": 400 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /test/image/mocks/gl3d_triangle.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "type":"mesh3d", 5 | "y":[0, 1, 2], 6 | "x":[1, 2, 0], 7 | "z":[2, 0, 1], 8 | "i":[0], 9 | "j":[1], 10 | "k":[2] 11 | }], 12 | "layout": { 13 | "title": "Triangle mesh" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /test/image/mocks/hist_all_integer.json: -------------------------------------------------------------------------------- 1 | { 2 | "data":[{ 3 | "x":["1","2","3","1","2","4","2","3","4","1","2","3","1","2","3","1","2","3","1","2","3","1","2","3","1","2","3","2","3","4","2","3","4","2","3","4","2","3","4"], 4 | "type":"histogram" 5 | }], 6 | "layout":{"height":300,"width":400} 7 | } 8 | -------------------------------------------------------------------------------- /test/image/mocks/date_axes.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "x": [ 5 | "2013-10-04 22:23:00", 6 | "2013-11-04 22:23:00", 7 | "2013-12-04 22:23:00" 8 | ], 9 | "y": [ 10 | 1, 11 | 3, 12 | 6 13 | ], 14 | "type": "scatter" 15 | } 16 | ] 17 | } 18 | -------------------------------------------------------------------------------- /test/image/mocks/axes_free_default.json: -------------------------------------------------------------------------------- 1 | { 2 | "data":[{"x": [1, 2], "y": [1, 2]}], 3 | "layout": { 4 | "xaxis": { 5 | "anchor": "free", 6 | "side": "top" 7 | }, 8 | "yaxis": { 9 | "anchor": "free", 10 | "side": "right" 11 | }, 12 | "width": 400, 13 | "height": 400 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /test/image/mocks/axes_reversed.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "x": [ 5 | 1, 6 | 2 7 | ], 8 | "y": [ 9 | 1, 10 | 2 11 | ], 12 | "type": "scatter" 13 | } 14 | ], 15 | "layout": { 16 | "xaxis": { 17 | "autorange": "reversed" 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /test/image/mocks/hist_almost_integer.json: -------------------------------------------------------------------------------- 1 | { 2 | "data":[{ 3 | "x":["1","2","3","1","2","4","2","3","4","1","2","3","1","2","3","1","2","3","1","2","3","1","2","3","1","2","3","2","3","4","2","3","4","2","3","4","2","3","4","2.5","3.5"], 4 | "type":"histogram" 5 | }], 6 | "layout":{"height":300,"width":400} 7 | } 8 | -------------------------------------------------------------------------------- /devtools/image_viewer/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |
6 |
7 |
8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/image/mocks/hist_all_integer_n50.json: -------------------------------------------------------------------------------- 1 | { 2 | "data":[{ 3 | "x":["1","2","3","1","2","4","2","3","4","1","2","3","1","2","3","1","2","3","1","2","3","1","2","3","1","2","3","2","3","4","2","3","4","2","3","4","2","3","4"], 4 | "type":"histogram", 5 | "nbinsx":50 6 | }], 7 | "layout":{"height":300,"width":400} 8 | } 9 | -------------------------------------------------------------------------------- /test/image/mocks/pie_label0_dlabel.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "values": [ 5 | 1, 6 | 2, 7 | 3, 8 | 4, 9 | 5 10 | ], 11 | "label0": 20, 12 | "dlabel": 5, 13 | "type": "pie" 14 | } 15 | ], 16 | "layout": { 17 | "height": 300, 18 | "width": 400 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /test/image/mocks/box_plot_jitter.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "y": [ 5 | 0, 6 | 1, 7 | 1, 8 | 2, 9 | 3, 10 | 5, 11 | 8, 12 | 13, 13 | 21 14 | ], 15 | "boxpoints": "all", 16 | "jitter": 0, 17 | "pointpos": -0.5, 18 | "type": "box" 19 | } 20 | ] 21 | } 22 | -------------------------------------------------------------------------------- /test/image/mocks/tick_prefix_suffix_exponent.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "x": [1,2,3,4,5,6,7], 5 | "y": [1e5,1e5,2e6,2e6,2e6,3e7,3e7] 6 | } 7 | ], 8 | "layout": { 9 | "yaxis": { 10 | "tickprefix": "*** ", 11 | "ticksuffix": " €", 12 | "showexponent": "first" 13 | } 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /test/image/mocks/basic_heatmap.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "z": [ 5 | [ 6 | 1, 7 | 20, 8 | 30 9 | ], 10 | [ 11 | 20, 12 | 1, 13 | 60 14 | ], 15 | [ 16 | 30, 17 | 60, 18 | 1 19 | ] 20 | ], 21 | "type": "heatmap" 22 | } 23 | ] 24 | } 25 | -------------------------------------------------------------------------------- /test/image/mocks/percent_error_bar.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "x": [ 5 | 0, 6 | 1, 7 | 2 8 | ], 9 | "y": [ 10 | 6, 11 | 10, 12 | 2 13 | ], 14 | "error_y": { 15 | "type": "percent", 16 | "value": 50, 17 | "visible": true 18 | }, 19 | "type": "scatter" 20 | } 21 | ] 22 | } 23 | -------------------------------------------------------------------------------- /test/image/mocks/error_bar_horizontal.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "x": [ 5 | 1, 6 | 2, 7 | 3, 8 | 4 9 | ], 10 | "y": [ 11 | 2, 12 | 1, 13 | 3, 14 | 4 15 | ], 16 | "error_x": { 17 | "type": "percent", 18 | "value": 10 19 | }, 20 | "type": "scatter" 21 | } 22 | ] 23 | } 24 | -------------------------------------------------------------------------------- /dist/README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | Import plotly.js as: 4 | 5 | ```js 6 | 7 | 8 | ``` 9 | 10 | To support IE9, import plotly.js as: 11 | 12 | ```js 13 | 14 | 15 | ``` 16 | -------------------------------------------------------------------------------- /test/image/mocks/gl2d_date_axes.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "x": [ 5 | "2013-10-04 22:23:00", 6 | "2013-11-04 22:23:00", 7 | "2013-12-04 22:23:00" 8 | ], 9 | "y": [ 10 | 1, 11 | 3, 12 | 6 13 | ], 14 | "type": "scattergl" 15 | } 16 | ] 17 | } -------------------------------------------------------------------------------- /test/image/mocks/category_dtick_3.json: -------------------------------------------------------------------------------- 1 | { 2 | "data":[{ 3 | "y":["3","2","1","2","3","4","3","2","1","2","3","4","3","4","4","3","2","1","2","2","3","4","3","3","2","1"], 4 | "x":["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"] 5 | }], 6 | "layout": { 7 | "autosize":false, 8 | "height":300, 9 | "width":300 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /tasks/util/get_image_request_options.js: -------------------------------------------------------------------------------- 1 | /* 2 | * For image testing 3 | * 4 | * Give it a json object for the body, 5 | * it'll return an options object ready for request(). 6 | */ 7 | module.exports = function getOptions(body, url) { 8 | 9 | var opts = { 10 | url: url || 'http://localhost:9010/', 11 | method: 'POST' 12 | }; 13 | 14 | if (body) opts.body = JSON.stringify(body); 15 | 16 | return opts; 17 | }; 18 | -------------------------------------------------------------------------------- /test/image/mocks/basic_error_bar.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "x": [ 5 | 0, 6 | 1, 7 | 2 8 | ], 9 | "y": [ 10 | 6, 11 | 10, 12 | 2 13 | ], 14 | "error_y": { 15 | "type": "data", 16 | "array": [ 17 | 1, 18 | 2, 19 | 3 20 | ], 21 | "visible": true 22 | }, 23 | "type": "scatter" 24 | } 25 | ] 26 | } 27 | -------------------------------------------------------------------------------- /src/assets/geo_assets.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2012-2015, Plotly, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the MIT license found in the 6 | * LICENSE file in the root directory of this source tree. 7 | */ 8 | 9 | 10 | var saneTopojson = require('sane-topojson'); 11 | 12 | // export the version found in the package.json 13 | exports.version = require('../../package.json').version; 14 | 15 | exports.topojson = saneTopojson; 16 | -------------------------------------------------------------------------------- /test/image/mocks/geo_first.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "type": "scattergeo", 5 | "lon": [0, -75, 20], 6 | "lat": [0, 45], 7 | "marker": {"size": [20, 30]} 8 | }, 9 | { 10 | "type": "choropleth", 11 | "locations": ["USA", "CAN", "RUS"], 12 | "z": [0, 5, 10] 13 | } 14 | ], 15 | "layout": { 16 | "showframe": true 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /test/image/mocks/gl3d_marker-color.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "type":"scatter3d", 5 | "y":[-102.63,-110.53,-96.97,-163.59], 6 | "x":[100.75,157.53,140.72,134.03], 7 | "z":[100.75,157.53,140.72,134.03], 8 | "marker": { 9 | "color": ["blue", "orange", "black"], 10 | "size": [10, 20, 30, 40] 11 | } 12 | }], 13 | "layout": { 14 | "title": "Scatter3d with under-defined marker color array" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /test/image/mocks/error_bar_asymmetric_constant.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "x": [ 5 | 1, 6 | 2, 7 | 3, 8 | 4 9 | ], 10 | "y": [ 11 | 2, 12 | 1, 13 | 3, 14 | 4 15 | ], 16 | "error_y": { 17 | "type": "percent", 18 | "symmetric": false, 19 | "value": 15, 20 | "valueminus": 25 21 | }, 22 | "type": "scatter" 23 | } 24 | ] 25 | } 26 | -------------------------------------------------------------------------------- /test/image/mocks/bar_marker_array.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "x": [ 5 | 1, 6 | 2, 7 | 3, 8 | 4 9 | ], 10 | "y": [ 11 | 5, 12 | 4, 13 | -3, 14 | 2 15 | ], 16 | "marker": { 17 | "color": [ 18 | "#447adb", 19 | "#447adb", 20 | "#db5a44", 21 | "#447adb" 22 | ] 23 | }, 24 | "type": "bar" 25 | } 26 | ] 27 | } 28 | -------------------------------------------------------------------------------- /test/image/mocks/gl3d_scatter-date.json: -------------------------------------------------------------------------------- 1 | { 2 | "data":[ 3 | { 4 | "y":[1.1,1.16,1.16,1.2,1.18,1.31,1.3,1.34,1.38,1.39,1.35,1.37,1.39], 5 | "z":[1.1,1.16,1.16,1.2,1.18,1.31,1.3,1.34,1.38,1.39,1.35,1.37,1.39], 6 | "x":["2013-07","2013-08","2013-09","2013-10","2013-11","2013-12","2014-01","2014-02","2014-03","2014-04","2014-05","2014-06","2014-07"], 7 | "type":"scatter3d" 8 | } 9 | ], 10 | "layout": { 11 | "title": "Date values" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /test/image/mocks/bubble_markersize0.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [{"type":"scatter","mode":"markers","x":[100.75,157.53,140.72,134.03],"y":[-102.63,-110.53,-96.97,-163.59],"marker":{"size":[0,20,30,40]}}], 3 | "layout": {"title":"Bubble with marker.size[0] === 0","showlegend":true,"xaxis":{"type":"linear","range":[97.17617854849068,161.79670520231213],"autorange":true},"yaxis":{"type":"linear","range":[-172.7879485636938,-89.02449541284403],"autorange":true},"height":598,"width":1080,"autosize":true} 4 | } 5 | -------------------------------------------------------------------------------- /src/lib/array_to_calc_item.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2012-2015, Plotly, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the MIT license found in the 6 | * LICENSE file in the root directory of this source tree. 7 | */ 8 | 9 | 10 | 'use strict'; 11 | 12 | // similar to Lib.mergeArray, but using inside a loop 13 | module.exports = function arrayToCalcItem(traceAttr, calcItem, calcAttr, i) { 14 | if(Array.isArray(traceAttr)) calcItem[calcAttr] = traceAttr[i]; 15 | }; 16 | -------------------------------------------------------------------------------- /test/image/mocks/heatmap_autocolor_negative.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "z": [ 5 | [ 6 | "a", 7 | "-1.5", 8 | "b" 9 | ], 10 | [ 11 | "-2.2", 12 | "d", 13 | "e" 14 | ] 15 | ], 16 | "autocolorscale": true, 17 | "type": "heatmap" 18 | } 19 | ] 20 | } 21 | -------------------------------------------------------------------------------- /test/image/mocks/heatmap_autocolor_positive.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "z": [ 5 | [ 6 | "1", 7 | "1.5", 8 | "1" 9 | ], 10 | [ 11 | "2.2", 12 | "2", 13 | "3" 14 | ] 15 | ], 16 | "autocolorscale": true, 17 | "type": "heatmap" 18 | } 19 | ] 20 | } 21 | -------------------------------------------------------------------------------- /src/css/_vars.scss: -------------------------------------------------------------------------------- 1 | $color-brand-primary: #447adb; 2 | $color-brand-accent: #1d3b84; 3 | 4 | $color-bg-base: #f3f3f3; 5 | $color-bg-light: #fff; 6 | $color-bg-darker: #e0e2e5; 7 | $color-brand-tint: #a9b3c7; 8 | $color-bg-hint: #edf1f8; 9 | $color-bg-pay-attention: #fee186; 10 | 11 | 12 | $color-click: #69738a; 13 | $color-lines: #ccc; 14 | $color-inline-code: #db44a5; 15 | $color-muted-text: #777; 16 | 17 | 18 | $static-url: "/static"; 19 | $font-url: "#{$static-url}/plotlyjs/src/fonts"; 20 | 21 | $zIndex: 1001; 22 | -------------------------------------------------------------------------------- /test/image/mocks/axes_range_mode.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "x": [ 5 | 2, 6 | 4, 7 | 6 8 | ], 9 | "y": [ 10 | -3, 11 | 0, 12 | 3 13 | ], 14 | "type": "scatter" 15 | } 16 | ], 17 | "layout": { 18 | "showlegend": false, 19 | "xaxis": { 20 | "autorange": true, 21 | "rangemode": "tozero" 22 | }, 23 | "yaxis": { 24 | "autorange": true, 25 | "rangemode": "nonnegative" 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /test/image/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /test/image/mocks/bar_stackto1.json: -------------------------------------------------------------------------------- 1 | { 2 | "data":[ 3 | {"name":"Col1","y":["1","2","3","4","5"],"x":["1","2","3","4","5"],"type":"bar","uid":"f8cb0a"}, 4 | {"name":"Col2","y":["2","3","4","3","2"],"x":["1","2","3","4","5"],"type":"bar","uid":"bb3568"}, 5 | {"name":"Col3","y":["5","4","3","2","1"],"x":["1","2","3","4","5"],"type":"bar","uid":"2de3f3"} 6 | ], 7 | "layout":{ 8 | "height":400, 9 | "width":400, 10 | "barmode":"stack", 11 | "barnorm":"fraction" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /test/image/mocks/gl2d_error_bar_horizontal.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "x": [ 5 | 1, 6 | 2, 7 | 3, 8 | 4 9 | ], 10 | "y": [ 11 | 2, 12 | 1, 13 | 3, 14 | 4 15 | ], 16 | "error_x": { 17 | "type": "percent", 18 | "value": 10 19 | }, 20 | "type": "scattergl" 21 | } 22 | ] 23 | } -------------------------------------------------------------------------------- /test/image/mocks/basic_line.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "x": [ 5 | 1, 6 | 2, 7 | 3, 8 | 4 9 | ], 10 | "y": [ 11 | 10, 12 | 15, 13 | 13, 14 | 17 15 | ], 16 | "type": "scatter" 17 | }, 18 | { 19 | "x": [ 20 | 1, 21 | 2, 22 | 3, 23 | 4 24 | ], 25 | "y": [ 26 | 16, 27 | 5, 28 | 11, 29 | 9 30 | ], 31 | "type": "scatter" 32 | } 33 | ] 34 | } 35 | -------------------------------------------------------------------------------- /src/lib/str2rgbarray.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2012-2015, Plotly, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the MIT license found in the 6 | * LICENSE file in the root directory of this source tree. 7 | */ 8 | 9 | 10 | 'use strict'; 11 | 12 | var tinycolor = require('tinycolor2'); 13 | var arrtools = require('arraytools'); 14 | 15 | function str2RgbaArray(color) { 16 | color = tinycolor(color); 17 | return arrtools.str2RgbaArray(color.toRgbString()); 18 | } 19 | 20 | module.exports = str2RgbaArray; 21 | -------------------------------------------------------------------------------- /src/plots/geo/layout/index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2012-2015, Plotly, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the MIT license found in the 6 | * LICENSE file in the root directory of this source tree. 7 | */ 8 | 9 | 10 | 'use strict'; 11 | 12 | var Plotly = require('../../../plotly'); 13 | var attributes = require('./attributes'); 14 | 15 | Plotly.Plots.registerSubplot('geo', 'geo', 'geo', attributes); 16 | 17 | exports.layoutAttributes = require('./layout_attributes'); 18 | exports.supplyLayoutDefaults = require('./defaults'); 19 | -------------------------------------------------------------------------------- /src/lib/is_plain_object.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2012-2015, Plotly, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the MIT license found in the 6 | * LICENSE file in the root directory of this source tree. 7 | */ 8 | 9 | 10 | 'use strict'; 11 | 12 | // more info: http://stackoverflow.com/questions/18531624/isplainobject-thing 13 | module.exports = function isPlainObject(obj) { 14 | return ( 15 | Object.prototype.toString.call(obj) === '[object Object]' && 16 | Object.getPrototypeOf(obj) === Object.prototype 17 | ); 18 | }; 19 | -------------------------------------------------------------------------------- /test/image/mocks/basic_area.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "x": [ 5 | 1, 6 | 2, 7 | 3, 8 | 4 9 | ], 10 | "y": [ 11 | 0, 12 | 2, 13 | 3, 14 | 5 15 | ], 16 | "fill": "tozeroy", 17 | "type": "scatter" 18 | }, 19 | { 20 | "x": [ 21 | 1, 22 | 2, 23 | 3, 24 | 4 25 | ], 26 | "y": [ 27 | 3, 28 | 5, 29 | 1, 30 | 7 31 | ], 32 | "fill": "tonexty", 33 | "type": "scatter" 34 | } 35 | ] 36 | } 37 | -------------------------------------------------------------------------------- /test/image/mocks/gl3d_log-axis.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [{ 3 | "type": "scatter3d", 4 | "mode": "lines", 5 | "x": [1,2,3,4,5], 6 | "y": [1,2,3,4,5], 7 | "z": [3,3,3,3,3], 8 | "line": { 9 | "width": 6 10 | } 11 | },{ 12 | "type": "scatter3d", 13 | "mode": "lines", 14 | "x": [1,2,3,4,5], 15 | "y": [3,2,1, 0, -1], 16 | "z": [3,3,3, 3, 3], 17 | "line": { 18 | "width": 20 19 | } 20 | }], 21 | "layout": { 22 | "title": "test", 23 | "scene": { 24 | "xaxis": { 25 | "type": "log" 26 | } 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /test/image/mocks/hist_summed.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "histfunc": "sum", 5 | "y": [ 6 | "5", 7 | "10", 8 | "3", 9 | "10", 10 | "5" 11 | ], 12 | "x": [ 13 | "Apples", 14 | "Apples", 15 | "Apples", 16 | "Oranges", 17 | "Bananas" 18 | ], 19 | "type": "histogram" 20 | } 21 | ], 22 | "layout": { 23 | "height": 300, 24 | "width": 400 25 | } 26 | } -------------------------------------------------------------------------------- /test/image/mocks/gl2d_basic_error_bar.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "x": [ 5 | 0, 6 | 1, 7 | 2 8 | ], 9 | "y": [ 10 | 6, 11 | 10, 12 | 2 13 | ], 14 | "error_y": { 15 | "type": "data", 16 | "array": [ 17 | 1, 18 | 2, 19 | 3 20 | ], 21 | "visible": true 22 | }, 23 | "type": "scattergl" 24 | } 25 | ] 26 | } -------------------------------------------------------------------------------- /test/image/mocks/gl2d_error_bar_asymmetric_constant.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "x": [ 5 | 1, 6 | 2, 7 | 3, 8 | 4 9 | ], 10 | "y": [ 11 | 2, 12 | 1, 13 | 3, 14 | 4 15 | ], 16 | "error_y": { 17 | "type": "percent", 18 | "symmetric": false, 19 | "value": 15, 20 | "valueminus": 25 21 | }, 22 | "type": "scattergl" 23 | } 24 | ] 25 | } -------------------------------------------------------------------------------- /test/image/mocks/colorbar_tick_prefix_suffix.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "type": "contour", 5 | "z": [ 6 | ["1e5", "2e6"], 7 | ["2e6", "3e7"] 8 | ], 9 | "colorbar": { 10 | "showexponent": "last", 11 | "tickprefix": "*** ", 12 | "showtickprefix": "first", 13 | "ticksuffix": " €", 14 | "showticksuffix": "last" 15 | } 16 | } 17 | ], 18 | "layout": { 19 | "title": "colorbar tick label prefix and suffix" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /test/image/mocks/box_with-empty-1st-trace.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "x": [], 5 | "y": [] 6 | }, 7 | { 8 | "jitter": 0.3, 9 | "name": "y", 10 | "type": "box", 11 | "y": [ 12 | 0, 13 | 1, 14 | 1, 15 | 2, 16 | 3, 17 | 5, 18 | 8, 19 | 13, 20 | 21 21 | ], 22 | "pointpos": -1.8, 23 | "boxpoints": "all" 24 | } 25 | ], 26 | "layout": {} 27 | } 28 | -------------------------------------------------------------------------------- /test/image/mocks/show_legend.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "x": [ 5 | 0, 6 | 1, 7 | 2 8 | ], 9 | "y": [ 10 | 1, 11 | 2, 12 | 3 13 | ], 14 | "name": "First Trace", 15 | "showlegend": false, 16 | "type": "scatter" 17 | }, 18 | { 19 | "x": [ 20 | 0, 21 | 1, 22 | 2, 23 | 3 24 | ], 25 | "y": [ 26 | 8, 27 | 4, 28 | 2, 29 | 0 30 | ], 31 | "name": "Second Trace", 32 | "showlegend": true, 33 | "type": "scatter" 34 | } 35 | ] 36 | } 37 | -------------------------------------------------------------------------------- /test/image/mocks/global_font.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "x": [ 5 | 0, 6 | 1, 7 | 2, 8 | 3, 9 | 4, 10 | 5, 11 | 6, 12 | 7, 13 | 8 14 | ], 15 | "y": [ 16 | 0, 17 | 1, 18 | 2, 19 | 3, 20 | 4, 21 | 5, 22 | 6, 23 | 7, 24 | 8 25 | ], 26 | "type": "scatter" 27 | } 28 | ], 29 | "layout": { 30 | "title": "Global Font", 31 | "font": { 32 | "family": "Courier New, monospace", 33 | "size": 18, 34 | "color": "#7f7f7f" 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/plot_api/set_plot_config.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2012-2015, Plotly, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the MIT license found in the 6 | * LICENSE file in the root directory of this source tree. 7 | */ 8 | 9 | 10 | 'use strict'; 11 | 12 | var Plotly = require('../plotly'); 13 | 14 | /** 15 | * Extends the plot config 16 | * 17 | * @param {object} configObj partial plot configuration object 18 | * to extend the current plot configuration. 19 | * 20 | */ 21 | module.exports = function setPlotConfig(configObj) { 22 | return Plotly.Lib.extendFlat(Plotly.defaultConfig, configObj); 23 | }; 24 | -------------------------------------------------------------------------------- /test/image/mocks/colorbar_tickformat.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "type": "contour", 5 | "z": [ 6 | ["0", "2e6"], 7 | ["2e6", "3e7"] 8 | ], 9 | "colorbar": { 10 | "tickformat": ",.1f", 11 | "tickprefix": "*** ", 12 | "showtickprefix": "first", 13 | "ticksuffix": " €", 14 | "showticksuffix": "last" 15 | } 16 | } 17 | ], 18 | "layout": { 19 | "width": 500, 20 | "height": 400, 21 | "title": "colorbar tickformat" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /test/image/mocks/error_bar_asymmetric_array.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "x": [ 5 | 1, 6 | 2, 7 | 3, 8 | 4 9 | ], 10 | "y": [ 11 | 2, 12 | 1, 13 | 3, 14 | 4 15 | ], 16 | "error_y": { 17 | "type": "data", 18 | "symmetric": false, 19 | "array": [ 20 | 0.1, 21 | 0.2, 22 | 0.1, 23 | 0.1 24 | ], 25 | "arrayminus": [ 26 | 0.2, 27 | 0.4, 28 | 1, 29 | 0.2 30 | ] 31 | }, 32 | "type": "scatter" 33 | } 34 | ] 35 | } 36 | -------------------------------------------------------------------------------- /test/image/mocks/bar_group_percent.json: -------------------------------------------------------------------------------- 1 | { 2 | "data":[ 3 | {"name":"Col1","y":["1","2","3","4","5"],"x":["1","2","3","4","5"],"type":"bar","uid":"aeb9ea"}, 4 | {"name":"Col2","y":["2","3","4","3","2"],"x":["1","2","3","4","5"],"type":"bar","uid":"2f201d"}, 5 | {"name":"Col3","y":["5","4","3","2","1"],"x":["1","2","3","4","5"],"type":"bar","uid":"aef0bf"}, 6 | {"name":"Col4","y":["-1","0","1","0","-1"],"x":["1","2","3","4","5"],"type":"bar","uid":"330b4d"} 7 | ], 8 | "layout":{ 9 | "height":400, 10 | "width":400, 11 | "barmode":"group", 12 | "barnorm":"percent" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /test/image/mocks/tickformat.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "x": ["2005-01","2005-02","2005-03","2005-04","2005-05","2005-06","2005-07"], 5 | "y": [1e5,1e5,2e6,2e6,2e6,3e7,3e7] 6 | } 7 | ], 8 | "layout": { 9 | "title": "tickformat", 10 | "xaxis": { 11 | "tickformat": "%b %y", 12 | "tickprefix": "~~ ", 13 | "showtickprefix": "first", 14 | "ticksuffix": " !!", 15 | "showticksuffix": "last" 16 | }, 17 | "yaxis": { 18 | "type": "log", 19 | "tickformat": ":^+12.3g" 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /test/image/mocks/bar_stackto100_negative.json: -------------------------------------------------------------------------------- 1 | { 2 | "data":[ 3 | {"name":"Col1","y":["1","2","3","4","5"],"x":["1","2","3","4","5"],"type":"bar","uid":"aeb9ea"}, 4 | {"name":"Col2","y":["2","3","4","3","2"],"x":["1","2","3","4","5"],"type":"bar","uid":"2f201d"}, 5 | {"name":"Col3","y":["5","4","3","2","1"],"x":["1","2","3","4","5"],"type":"bar","uid":"aef0bf"}, 6 | {"name":"Col4","y":["-1","0","1","0","-1"],"x":["1","2","3","4","5"],"type":"bar","uid":"330b4d"} 7 | ], 8 | "layout":{ 9 | "height":400, 10 | "width":400, 11 | "barmode":"stack", 12 | "barnorm":"percent" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /test/image/mocks/gl2d_axes_range_mode.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "x": [ 5 | 2, 6 | 4, 7 | 6 8 | ], 9 | "y": [ 10 | -3, 11 | 0, 12 | 3 13 | ], 14 | "type": "scattergl" 15 | } 16 | ], 17 | "layout": { 18 | "showlegend": false, 19 | "xaxis": { 20 | "autorange": true, 21 | "rangemode": "tozero" 22 | }, 23 | "yaxis": { 24 | "autorange": true, 25 | "rangemode": "nonnegative" 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /src/traces/mesh3d/index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2012-2015, Plotly, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the MIT license found in the 6 | * LICENSE file in the root directory of this source tree. 7 | */ 8 | 9 | 10 | 'use strict'; 11 | 12 | var Plotly = require('../../plotly'); 13 | 14 | var Mesh3D = module.exports = {}; 15 | 16 | Plotly.Plots.register(Mesh3D, 'mesh3d', ['gl3d'], { 17 | description: [ 18 | '' 19 | ].join(' ') 20 | }); 21 | 22 | Mesh3D.attributes = require('./attributes'); 23 | 24 | Mesh3D.supplyDefaults = require('./defaults'); 25 | 26 | Mesh3D.colorbar = Plotly.Colorbar.traceColorbar; 27 | -------------------------------------------------------------------------------- /test/image/mocks/contour_nolines.json: -------------------------------------------------------------------------------- 1 | { 2 | "data":[{ 3 | "contours":{"coloring":"fill","showlines":false}, 4 | "z":[["1",""],["2",""],["3",""],["3",""],["4",""],["5",""],["6",""],["5",""],["2",""],["3",""],["3",""],["5",""],["6",""],["5",""],["4","1"],["4","2"],["2","3"],["1","4"],["3","5"],["2","4"],["1","3"],["3","2"],["5","3"],["4","4"],["3","3"],["2","2"],["1","1"],["2","2"],["3","3"],["4","4"],["5","6"],["4","5"],["3","4"],["2","3"],["3","2"],["2","3"],["3","4"],["3","3"],["3","2"]], 5 | "type":"contour" 6 | }], 7 | "layout":{ 8 | "showlegend":false, 9 | "autosize":false, 10 | "height":400, 11 | "width":400 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/css/_cursor.scss: -------------------------------------------------------------------------------- 1 | .cursor-pointer { cursor: pointer; } 2 | .cursor-crosshair { cursor: crosshair; } 3 | .cursor-move { cursor: move; } 4 | .cursor-col-resize { cursor: col-resize; } 5 | .cursor-row-resize { cursor: row-resize; } 6 | .cursor-ns-resize { cursor: ns-resize; } 7 | .cursor-ew-resize { cursor: ew-resize; } 8 | .cursor-sw-resize { cursor: sw-resize; } 9 | .cursor-s-resize { cursor: s-resize; } 10 | .cursor-se-resize { cursor: se-resize; } 11 | .cursor-w-resize { cursor: w-resize; } 12 | .cursor-e-resize { cursor: e-resize; } 13 | .cursor-nw-resize { cursor: nw-resize; } 14 | .cursor-n-resize { cursor: n-resize; } 15 | .cursor-ne-resize { cursor: ne-resize; } 16 | -------------------------------------------------------------------------------- /test/image/mocks/gl3d_log-axis-big.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [{ 3 | "type": "scatter3d", 4 | "mode": "lines", 5 | "x": [0.0000001, 1,100,10000, 1000000], 6 | "y": [1,2,3,4,5], 7 | "z": [3,3,3,3,3], 8 | "line": { 9 | "width": 6 10 | } 11 | },{ 12 | "type": "scatter3d", 13 | "mode": "lines", 14 | "x": [1,2,3,4,5], 15 | "y": [3,2,1, 0, -1], 16 | "z": [3,3,3, 3, 3], 17 | "line": { 18 | "width": 20 19 | } 20 | }], 21 | "layout": { 22 | "title": "test", 23 | "scene": { 24 | "xaxis": { 25 | "title": "foobar", 26 | "type": "log" 27 | } 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /test/image/mocks/pie_style.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "values": [ 5 | 10, 6 | 11, 7 | 12, 8 | 13, 9 | 14, 10 | 15, 11 | 16, 12 | 17, 13 | 18, 14 | 19, 15 | 20 16 | ], 17 | "hole": 0.5, 18 | "rotation": 45, 19 | "marker": { 20 | "line": { 21 | "color": "#fff", 22 | "width": 3 23 | } 24 | }, 25 | "pull": 0.2, 26 | "type": "pie" 27 | } 28 | ], 29 | "layout": { 30 | "height": 400, 31 | "width": 500, 32 | "paper_bgcolor": "#ddd", 33 | "showlegend": false 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /test/image/mocks/tick_prefix_suffix.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "x": [1,2,3,4,5,6,7], 5 | "y": [1e5,1e5,2e6,2e6,2e6,3e7,3e7], 6 | "line": { 7 | "shape": "spline" 8 | } 9 | } 10 | ], 11 | "layout": { 12 | "title": "tick label prefix and suffix", 13 | "xaxis": { 14 | "tickprefix": "-> ", 15 | "ticksuffix": " s" 16 | }, 17 | "yaxis": { 18 | "tickprefix": "*** ", 19 | "showtickprefix": "first", 20 | "ticksuffix": " €", 21 | "showticksuffix": "last" 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /test/image/mocks/bar_line.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "x": [ 5 | 0, 6 | 1, 7 | 2, 8 | 3, 9 | 4, 10 | 5 11 | ], 12 | "y": [ 13 | 1.5, 14 | 1, 15 | 1.3, 16 | 0.7, 17 | 0.8, 18 | 0.9 19 | ], 20 | "type": "scatter" 21 | }, 22 | { 23 | "x": [ 24 | 0, 25 | 1, 26 | 2, 27 | 3, 28 | 4, 29 | 5 30 | ], 31 | "y": [ 32 | 1, 33 | 0.5, 34 | 0.7, 35 | -1.2, 36 | 0.3, 37 | 0.4 38 | ], 39 | "type": "bar" 40 | } 41 | ] 42 | } 43 | -------------------------------------------------------------------------------- /src/plots/polar/area_attributes.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2012-2015, Plotly, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the MIT license found in the 6 | * LICENSE file in the root directory of this source tree. 7 | */ 8 | 9 | 10 | var scatterAttrs = require('../../traces/scatter/attributes'); 11 | var scatterMarkerAttrs = scatterAttrs.marker; 12 | 13 | module.exports = { 14 | r: scatterAttrs.r, 15 | t: scatterAttrs.t, 16 | marker: { 17 | color: scatterMarkerAttrs.color, 18 | size: scatterMarkerAttrs.size, 19 | symbol: scatterMarkerAttrs.symbol, 20 | opacity: scatterMarkerAttrs.opacity 21 | } 22 | }; 23 | -------------------------------------------------------------------------------- /test/image/mocks/pseudo_html.json: -------------------------------------------------------------------------------- 1 | { 2 | "data":[{ 3 | "x":["b i","line 1
line 2"], 4 | "y":["sub1","sup2"], 5 | "name":"test pseudoHTML
3H2O is heavy!
and Fonts,
oh my?" 6 | }], 7 | "layout":{ 8 | "xaxis": {"title":"multiline title
with a link and spaces"}, 9 | "yaxis": {"title":"y23 or something"}, 10 | "showlegend":true, 11 | "height":300, 12 | "width":400 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/css/_base.scss: -------------------------------------------------------------------------------- 1 | &, div { 2 | font-family: 'Open Sans', verdana, arial, sans-serif; 3 | margin: 0; 4 | padding: 0; 5 | } 6 | 7 | input, button { 8 | font-family: 'Open Sans', verdana, arial, sans-serif; 9 | 10 | &:focus { 11 | outline: none; 12 | } 13 | } 14 | 15 | a { 16 | text-decoration: none; 17 | 18 | &:hover { 19 | text-decoration: none; 20 | } 21 | } 22 | 23 | .crisp { shape-rendering: crispEdges; } 24 | svg a { fill: $color-brand-primary; } 25 | svg a:hover { fill: #3c6dc5; } 26 | 27 | .main-svg { 28 | position: absolute; 29 | top: 0; 30 | left: 0; 31 | pointer-events: none; 32 | 33 | .draglayer { 34 | pointer-events: all; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/plots/gl3d/project.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2012-2015, Plotly, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the MIT license found in the 6 | * LICENSE file in the root directory of this source tree. 7 | */ 8 | 9 | 10 | 'use strict'; 11 | 12 | function xformMatrix(m, v) { 13 | var out = [0,0,0,0], i, j; 14 | for(i=0; i<4; ++i) { 15 | for(j=0; j<4; ++j) { 16 | out[j] += m[4*i + j] * v[i]; 17 | } 18 | } 19 | return out; 20 | } 21 | 22 | function project(camera, v) { 23 | var p = xformMatrix(camera.projection, 24 | xformMatrix(camera.view, 25 | xformMatrix(camera.model, [v[0], v[1], v[2], 1]))); 26 | return p; 27 | } 28 | 29 | module.exports = project; 30 | -------------------------------------------------------------------------------- /test/image/mocks/gl3d_multi-scene.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [{ 3 | "type": "scatter3d", 4 | "x": [1], 5 | "y": [1], 6 | "z": [1], 7 | "marker": { 8 | "color": "blue" 9 | }, 10 | "scene": "scene1" 11 | },{ 12 | "type": "scatter3d", 13 | "x": [2], 14 | "y": [2], 15 | "z": [2], 16 | "marker": { 17 | "color": "red" 18 | }, 19 | "scene": "scene2" 20 | }], 21 | "layout": { 22 | "title": "scene should be the same as scene1", 23 | "scene1": { 24 | "domain": { 25 | "x": [0, 0.5], 26 | "y": [0, 0.5] 27 | } 28 | }, 29 | "scene2": { 30 | "domain": { 31 | "x": [0.5, 1], 32 | "y": [0.5, 1] 33 | } 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/fonts/mathjax_config.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2012-2015, Plotly, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the MIT license found in the 6 | * LICENSE file in the root directory of this source tree. 7 | */ 8 | 9 | 10 | /* global MathJax:false */ 11 | 12 | /** 13 | * Check and configure MathJax 14 | */ 15 | if (typeof MathJax !== 'undefined'){ 16 | exports.MathJax = true; 17 | 18 | MathJax.Hub.Config({ 19 | messageStyle: 'none', 20 | skipStartupTypeset: true, 21 | displayAlign: 'left', 22 | tex2jax: { 23 | inlineMath: [['$','$'],['\\(','\\)']] 24 | } 25 | }); 26 | 27 | MathJax.Hub.Configured(); 28 | } else { 29 | exports.MathJax = false; 30 | } 31 | -------------------------------------------------------------------------------- /test/image/mocks/size_margins.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "x": [ 5 | 0, 6 | 1, 7 | 2, 8 | 3, 9 | 4, 10 | 5, 11 | 6, 12 | 7, 13 | 8 14 | ], 15 | "y": [ 16 | 0, 17 | 1, 18 | 2, 19 | 3, 20 | 4, 21 | 5, 22 | 6, 23 | 7, 24 | 8 25 | ], 26 | "type": "scatter" 27 | } 28 | ], 29 | "layout": { 30 | "autosize": false, 31 | "width": 500, 32 | "height": 500, 33 | "margin": { 34 | "l": 50, 35 | "r": 50, 36 | "b": 100, 37 | "t": 100, 38 | "pad": 4 39 | }, 40 | "paper_bgcolor": "#7f7f7f", 41 | "plot_bgcolor": "#c7c7c7" 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /test/image/mocks/labelled_heatmap.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "z": [ 5 | [ 6 | 1, 7 | 20, 8 | 30, 9 | 50, 10 | 1 11 | ], 12 | [ 13 | 20, 14 | 1, 15 | 60, 16 | 80, 17 | 30 18 | ], 19 | [ 20 | 30, 21 | 60, 22 | 1, 23 | -10, 24 | 20 25 | ] 26 | ], 27 | "x": [ 28 | "Monday", 29 | "Tuesday", 30 | "Wednesday", 31 | "Thursday", 32 | "Friday" 33 | ], 34 | "y": [ 35 | "Morning", 36 | "Afternoon", 37 | "Evening" 38 | ], 39 | "type": "heatmap" 40 | } 41 | ] 42 | } 43 | -------------------------------------------------------------------------------- /circle.yml: -------------------------------------------------------------------------------- 1 | general: 2 | artifacts: 3 | - "build/test_images/" # relative to the build directory 4 | - "build/test_images_diff/" # relative to the build directory 5 | 6 | machine: 7 | node: 8 | version: 4.2.1 9 | services: 10 | - docker 11 | 12 | 13 | dependencies: 14 | pre: 15 | - docker pull plotly/imageserver:1.0.0 16 | post: 17 | - npm run cibuild 18 | - docker run -d --name myimageserver -v $PWD:/var/www/streambed/image_server/plotly.js -p 9010:9010 plotly/imageserver:1.0.0; sleep 20 19 | 20 | test: 21 | override: 22 | - sudo lxc-attach -n "$(docker inspect --format '{{.Id}}' myimageserver)" -- bash -c "cd /var/www/streambed/image_server/plotly.js && node test/image/compare_pixels_test.js" 23 | - npm run citest-jasmine 24 | -------------------------------------------------------------------------------- /test/jasmine/karma.ciconf.js: -------------------------------------------------------------------------------- 1 | // Karma configuration 2 | 3 | function func(config) { 4 | 5 | // level of logging 6 | // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG 7 | func.defaultConfig.logLevel = config.LOG_INFO; 8 | 9 | // Continuous Integration mode 10 | // if true, Karma captures browsers, runs the tests and exits 11 | func.defaultConfig.singleRun = true; 12 | 13 | func.defaultConfig.browserNoActivityTimeout = 30000; // 30 seconds 14 | 15 | func.defaultConfig.autoWatch = false; 16 | 17 | func.defaultConfig.browsers = ['Firefox']; 18 | 19 | config.set(func.defaultConfig); 20 | } 21 | 22 | func.defaultConfig = require('./karma.conf').defaultConfig; 23 | module.exports = func; 24 | -------------------------------------------------------------------------------- /src/plots/geo/layout/attributes.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2012-2015, Plotly, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the MIT license found in the 6 | * LICENSE file in the root directory of this source tree. 7 | */ 8 | 9 | 10 | module.exports = { 11 | geo: { 12 | valType: 'geoid', 13 | role: 'info', 14 | dflt: 'geo', 15 | description: [ 16 | 'Sets a reference between this trace\'s geospatial coordinates and', 17 | 'a geographic map.', 18 | 'If *geo* (the default value), the geospatial coordinates refer to', 19 | '`layout.geo`.', 20 | 'If *geo2*, the geospatial coordinates refer to `layout.geo2`,', 21 | 'and so on.' 22 | ].join(' ') 23 | } 24 | }; 25 | -------------------------------------------------------------------------------- /src/plots/gl3d/layout/attributes.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2012-2015, Plotly, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the MIT license found in the 6 | * LICENSE file in the root directory of this source tree. 7 | */ 8 | 9 | 10 | module.exports = { 11 | scene: { 12 | valType: 'sceneid', 13 | role: 'info', 14 | dflt: 'scene', 15 | description: [ 16 | 'Sets a reference between this trace\'s 3D coordinate system and', 17 | 'a 3D scene.', 18 | 'If *scene* (the default value), the (x,y,z) coordinates refer to', 19 | '`layout.scene`.', 20 | 'If *scene2*, the (x,y,z) coordinates refer to `layout.scene2`,', 21 | 'and so on.' 22 | ].join(' ') 23 | } 24 | }; 25 | -------------------------------------------------------------------------------- /test/image/mocks/grouped_bar.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "x": [ 5 | "giraffes", 6 | "orangutans", 7 | "monkeys" 8 | ], 9 | "y": [ 10 | 20, 11 | 14, 12 | 23 13 | ], 14 | "name": "SF Zoo", 15 | "type": "bar" 16 | }, 17 | { 18 | "x": [ 19 | "giraffes", 20 | "orangutans", 21 | "monkeys" 22 | ], 23 | "y": [ 24 | 12, 25 | 18, 26 | 29 27 | ], 28 | "name": "LA Zoo", 29 | "type": "bar" 30 | } 31 | ], 32 | "layout": { 33 | "xaxis": { 34 | "type": "category" 35 | }, 36 | "barmode": "group", 37 | "categories": [ 38 | "giraffes", 39 | "orangutans", 40 | "monkeys" 41 | ] 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /test/image/mocks/stacked_bar.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "x": [ 5 | "giraffes", 6 | "orangutans", 7 | "monkeys" 8 | ], 9 | "y": [ 10 | 20, 11 | 14, 12 | 23 13 | ], 14 | "name": "SF Zoo", 15 | "type": "bar" 16 | }, 17 | { 18 | "x": [ 19 | "giraffes", 20 | "orangutans", 21 | "monkeys" 22 | ], 23 | "y": [ 24 | 12, 25 | 18, 26 | 29 27 | ], 28 | "name": "LA Zoo", 29 | "type": "bar" 30 | } 31 | ], 32 | "layout": { 33 | "xaxis": { 34 | "type": "category" 35 | }, 36 | "barmode": "stack", 37 | "categories": [ 38 | "giraffes", 39 | "orangutans", 40 | "monkeys" 41 | ] 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /test/image/mocks/simple_inset.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "x": [ 5 | 1, 6 | 2, 7 | 3 8 | ], 9 | "y": [ 10 | 4, 11 | 3, 12 | 2 13 | ], 14 | "type": "scatter" 15 | }, 16 | { 17 | "x": [ 18 | 20, 19 | 30, 20 | 40 21 | ], 22 | "y": [ 23 | 30, 24 | 40, 25 | 50 26 | ], 27 | "xaxis": "x2", 28 | "yaxis": "y2", 29 | "type": "scatter" 30 | } 31 | ], 32 | "layout": { 33 | "yaxis2": { 34 | "domain": [ 35 | 0.6, 36 | 0.95 37 | ], 38 | "anchor": "x2" 39 | }, 40 | "xaxis2": { 41 | "domain": [ 42 | 0.6, 43 | 0.95 44 | ], 45 | "anchor": "y2" 46 | } 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /test/image/mocks/simple_subplot.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "x": [ 5 | 1, 6 | 2, 7 | 3 8 | ], 9 | "y": [ 10 | 4, 11 | 5, 12 | 6 13 | ], 14 | "type": "scatter" 15 | }, 16 | { 17 | "x": [ 18 | 20, 19 | 30, 20 | 40 21 | ], 22 | "y": [ 23 | 50, 24 | 60, 25 | 70 26 | ], 27 | "xaxis": "x2", 28 | "yaxis": "y2", 29 | "type": "scatter" 30 | } 31 | ], 32 | "layout": { 33 | "xaxis": { 34 | "domain": [ 35 | 0, 36 | 0.45 37 | ] 38 | }, 39 | "yaxis2": { 40 | "anchor": "x2" 41 | }, 42 | "xaxis2": { 43 | "domain": [ 44 | 0.55, 45 | 1 46 | ] 47 | } 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /test/image/mocks/custom_size_subplot.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "x": [ 5 | 1, 6 | 2, 7 | 3 8 | ], 9 | "y": [ 10 | 4, 11 | 5, 12 | 6 13 | ], 14 | "type": "scatter" 15 | }, 16 | { 17 | "x": [ 18 | 20, 19 | 30, 20 | 40 21 | ], 22 | "y": [ 23 | 50, 24 | 60, 25 | 70 26 | ], 27 | "xaxis": "x2", 28 | "yaxis": "y2", 29 | "type": "scatter" 30 | } 31 | ], 32 | "layout": { 33 | "xaxis": { 34 | "domain": [ 35 | 0, 36 | 0.7 37 | ] 38 | }, 39 | "yaxis2": { 40 | "anchor": "x2" 41 | }, 42 | "xaxis2": { 43 | "domain": [ 44 | 0.8, 45 | 1 46 | ] 47 | } 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /test/image/mocks/gl2d_show_legend.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "x": [ 5 | 0, 6 | 1, 7 | 2 8 | ], 9 | "y": [ 10 | 1, 11 | 2, 12 | 3 13 | ], 14 | "name": "First Trace", 15 | "showlegend": false, 16 | "type": "scattergl" 17 | }, 18 | { 19 | "x": [ 20 | 0, 21 | 1, 22 | 2, 23 | 3 24 | ], 25 | "y": [ 26 | 8, 27 | 4, 28 | 2, 29 | 0 30 | ], 31 | "name": "Second Trace", 32 | "showlegend": true, 33 | "type": "scattergl" 34 | } 35 | ] 36 | } -------------------------------------------------------------------------------- /src/components/color/attributes.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2012-2015, Plotly, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the MIT license found in the 6 | * LICENSE file in the root directory of this source tree. 7 | */ 8 | 9 | 10 | // IMPORTANT - default colors should be in hex for compatibility 11 | exports.defaults = [ 12 | '#1f77b4', // muted blue 13 | '#ff7f0e', // safety orange 14 | '#2ca02c', // cooked asparagus green 15 | '#d62728', // brick red 16 | '#9467bd', // muted purple 17 | '#8c564b', // chestnut brown 18 | '#e377c2', // raspberry yogurt pink 19 | '#7f7f7f', // middle gray 20 | '#bcbd22', // curry yellow-green 21 | '#17becf' // blue-teal 22 | ]; 23 | 24 | exports.defaultLine = '#444'; 25 | 26 | exports.lightLine = '#eee'; 27 | 28 | exports.background = '#fff'; 29 | -------------------------------------------------------------------------------- /test/image/mocks/gl2d_global_font.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "x": [ 5 | 0, 6 | 1, 7 | 2, 8 | 3, 9 | 4, 10 | 5, 11 | 6, 12 | 7, 13 | 8 14 | ], 15 | "y": [ 16 | 0, 17 | 1, 18 | 2, 19 | 3, 20 | 4, 21 | 5, 22 | 6, 23 | 7, 24 | 8 25 | ], 26 | "type": "scattergl" 27 | } 28 | ], 29 | "layout": { 30 | "title": "Global Font", 31 | "font": { 32 | "family": "Courier New, monospace", 33 | "size": 18, 34 | "color": "#7f7f7f" 35 | } 36 | } 37 | } -------------------------------------------------------------------------------- /src/plots/geo/zoom_reset.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2012-2015, Plotly, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the MIT license found in the 6 | * LICENSE file in the root directory of this source tree. 7 | */ 8 | 9 | 10 | 'use strict'; 11 | 12 | var loneUnhover = require('../../plotly').Fx.loneUnhover; 13 | 14 | 15 | function createGeoZoomReset(geo, geoLayout) { 16 | var projection = geo.projection, 17 | zoom = geo.zoom; 18 | 19 | var zoomReset = function() { 20 | geo.makeProjection(geoLayout); 21 | geo.makePath(); 22 | 23 | zoom.scale(projection.scale()); 24 | zoom.translate(projection.translate()); 25 | 26 | loneUnhover(geo.hoverContainer); 27 | 28 | geo.render(); 29 | }; 30 | 31 | return zoomReset; 32 | } 33 | 34 | module.exports = createGeoZoomReset; 35 | -------------------------------------------------------------------------------- /test/image/mocks/line_scatter.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "x": [ 5 | 1, 6 | 2, 7 | 3, 8 | 4 9 | ], 10 | "y": [ 11 | 10, 12 | 15, 13 | 13, 14 | 17 15 | ], 16 | "mode": "markers", 17 | "type": "scatter" 18 | }, 19 | { 20 | "x": [ 21 | 2, 22 | 3, 23 | 4, 24 | 5 25 | ], 26 | "y": [ 27 | 16, 28 | 5, 29 | 11, 30 | 9 31 | ], 32 | "mode": "lines", 33 | "type": "scatter" 34 | }, 35 | { 36 | "x": [ 37 | 1, 38 | 2, 39 | 3, 40 | 4 41 | ], 42 | "y": [ 43 | 12, 44 | 9, 45 | 15, 46 | 12 47 | ], 48 | "mode": "lines+markers", 49 | "type": "scatter" 50 | } 51 | ] 52 | } 53 | -------------------------------------------------------------------------------- /test/image/mocks/gl2d_error_bar_asymmetric_array.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "x": [ 5 | 1, 6 | 2, 7 | 3, 8 | 4 9 | ], 10 | "y": [ 11 | 2, 12 | 1, 13 | 3, 14 | 4 15 | ], 16 | "error_y": { 17 | "type": "data", 18 | "symmetric": false, 19 | "array": [ 20 | 0.1, 21 | 0.2, 22 | 0.1, 23 | 0.1 24 | ], 25 | "arrayminus": [ 26 | 0.2, 27 | 0.4, 28 | 1, 29 | 0.2 30 | ] 31 | }, 32 | "type": "scattergl" 33 | } 34 | ] 35 | } -------------------------------------------------------------------------------- /test/image/mocks/hist2d_summed.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "x": [ 5 | "apples", 6 | "apples", 7 | "apples", 8 | "apples", 9 | "lemons", 10 | "lemons" 11 | ], 12 | "y": [ 13 | "red", 14 | "red", 15 | "yellow", 16 | "green", 17 | "yellow", 18 | "yellow" 19 | ], 20 | "z": [ 21 | "1", 22 | "2", 23 | "3", 24 | "4", 25 | "5", 26 | "6" 27 | ], 28 | "type": "histogram2d", 29 | "histfunc": "sum" 30 | } 31 | ], 32 | "layout": { 33 | "height": 300, 34 | "width": 400 35 | } 36 | } -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # plotly.js changelog. 2 | 3 | For more context information, please read through the 4 | [release notes](https://github.com/plotly/plotly.js/releases). 5 | 6 | ## [1.0.0] -- 2015-11-17 7 | 8 | First fully open source release. 9 | 10 | ### Added 11 | - Add 2D WebGL plot engine 12 | 13 | ### Changed 14 | - Save to cloud is now done via a modebar button by default, 15 | the `'Edit chart'` link is still available through the 16 | `'showLink'` plot config. 17 | - Better double-click notifier CSS 18 | 19 | ### Fixed 20 | - Fix `Plotly.newPlot` 3D and geo bug. 21 | - Fix `plotly_click` event bug in latest Chrome and Firefox. 22 | 23 | ### Known limitations 24 | - Different plot types cannot be mixed in subplots. 25 | - 2D WebGL has no image test support. 26 | - Click and hover events are not hooked for gl3d, geo and gl2d 27 | plot types. 28 | - Polar chart are under-developed. 29 | -------------------------------------------------------------------------------- /test/image/mocks/pie_labels_colors_text.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "values": [ 5 | 1, 6 | 2, 7 | 3, 8 | 4, 9 | 5 10 | ], 11 | "labels": [ 12 | "apples", 13 | "oranges", 14 | "blueberries", 15 | "lemons", 16 | "watermelon" 17 | ], 18 | "marker": { 19 | "colors": [ 20 | "red", 21 | "orange", 22 | "blue", 23 | "yellow", 24 | "green" 25 | ] 26 | }, 27 | "text": [ 28 | "red delicious", 29 | "mandarin", 30 | "high bush", 31 | "meyer", 32 | "jubilee" 33 | ], 34 | "textinfo": "label+text+value+percent", 35 | "type": "pie" 36 | } 37 | ], 38 | "layout": { 39 | "height": 400, 40 | "width": 500, 41 | "showlegend": false 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /test/image/mocks/gl3d_autorange-zero.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "type": "surface", 5 | "z": [ 6 | [ 7 | "4", 8 | "2", 9 | "3" 10 | ], 11 | [ 12 | "5", 13 | "4", 14 | "4" 15 | ], 16 | [ 17 | "3", 18 | "6", 19 | "3" 20 | ] 21 | ], 22 | "zsrc": ":", 23 | "uid": "782735" 24 | } 25 | ], 26 | "layout": { 27 | "showlegend": false, 28 | "height": 758, 29 | "width": 1310, 30 | "autosize": true, 31 | "scene": { 32 | "xaxis": { 33 | "rangemode": "tozero", 34 | "type": "linear" 35 | }, 36 | "yaxis": { 37 | "rangemode": "tozero", 38 | "type": "linear" 39 | }, 40 | "zaxis": { 41 | "rangemode": "tozero" 42 | } 43 | } 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /test/image/mocks/legend_labels.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "x": [ 5 | 0, 6 | 1, 7 | 2, 8 | 3, 9 | 4, 10 | 5, 11 | 6, 12 | 7, 13 | 8 14 | ], 15 | "y": [ 16 | 0, 17 | 3, 18 | 6, 19 | 4, 20 | 5, 21 | 2, 22 | 3, 23 | 5, 24 | 4 25 | ], 26 | "name": "Blue Trace", 27 | "type": "scatter" 28 | }, 29 | { 30 | "x": [ 31 | 0, 32 | 1, 33 | 2, 34 | 3, 35 | 4, 36 | 5, 37 | 6, 38 | 7, 39 | 8 40 | ], 41 | "y": [ 42 | 0, 43 | 4, 44 | 7, 45 | 8, 46 | 3, 47 | 6, 48 | 3, 49 | 3, 50 | 4 51 | ], 52 | "name": "Orange Trace", 53 | "type": "scatter" 54 | } 55 | ] 56 | } 57 | -------------------------------------------------------------------------------- /tasks/preprocess.js: -------------------------------------------------------------------------------- 1 | var fs = require('fs-extra'); 2 | 3 | var sass = require('node-sass'); 4 | 5 | var pullCSS = require('./util/pull_css'); 6 | var pullFontSVG = require('./util/pull_font_svg'); 7 | var constants = require('./util/constants'); 8 | 9 | 10 | // convert scss to css 11 | sass.render({ 12 | file: constants.pathToSCSS, 13 | outputStyle: 'compressed' 14 | }, function(err, result) { 15 | if(err) console.log('SASS error'); 16 | 17 | // css to js 18 | pullCSS(String(result.css), constants.pathToCSSBuild); 19 | }); 20 | 21 | // convert font svg into js 22 | fs.readFile(constants.pathToFontSVG, function(err, data) { 23 | pullFontSVG(data.toString(), constants.pathToFontSVGBuild); 24 | }); 25 | 26 | // copy topojson files from sane-topojson to dist/ 27 | fs.copy(constants.pathToTopojsonSrc, constants.pathToTopojsonDist, 28 | { clobber: true }, 29 | function(err) { 30 | if(err) throw err; 31 | }); 32 | -------------------------------------------------------------------------------- /tasks/baseline.sh: -------------------------------------------------------------------------------- 1 | #! /bin/bash 2 | # 3 | # TODO adapt this for Windows 4 | # 5 | # TODO add package.json config arguments to configure: 6 | # - container name, 7 | # - ports and 8 | # - imageserver version 9 | # 10 | # =============================================================================== 11 | 12 | CONTAINER_NAME="imagetest" 13 | IMAGE_NAME="registry.plot.ly:5000/imageserver" 14 | IMAGE_VERSION="1.3.0" 15 | 16 | # Run docker container: 17 | # 18 | # docker run -d --name $CONTAINER_NAME \ 19 | # -v $PWD/plotly.js:/var/www/streambed/image_server/plotly.js \ 20 | # -p 9010:9010 -p 2022:22 \ 21 | # $IMAGE_NAME:[$IMAGE_VERSION] 22 | 23 | CMD=( 24 | "cd /var/www/streambed/image_server/plotly.js &&" 25 | "cp -f test/image/index.html ../server_app/index.html &&" 26 | "monit restart nw1 &&" 27 | "sleep 5 &&" 28 | "node test/image/make_baseline.js $1" 29 | ) 30 | 31 | docker exec -i $CONTAINER_NAME /bin/bash -c "${CMD[*]}" 32 | -------------------------------------------------------------------------------- /test/image/mocks/colorbar_enumerated_ticks.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "colorbar": { 5 | "ticktext": [ 6 | "cool", 7 | "chillax", 8 | "feisty" 9 | ], 10 | "tickvals": [ 11 | 3, 12 | 8, 13 | 13 14 | ] 15 | }, 16 | "z": [ 17 | [ 18 | 1, 19 | 3, 20 | 5 21 | ], 22 | [ 23 | 4, 24 | 7, 25 | 10 26 | ], 27 | [ 28 | 7, 29 | 11, 30 | 14 31 | ] 32 | ], 33 | "type": "heatmap" 34 | } 35 | ], 36 | "layout": { 37 | "height": 300, 38 | "width": 400 39 | } 40 | } -------------------------------------------------------------------------------- /tasks/test_image.sh: -------------------------------------------------------------------------------- 1 | #! /bin/bash 2 | # 3 | # TODO adapt this for Windows 4 | # 5 | # TODO add package.json config arguments to configure: 6 | # - container name, 7 | # - ports and 8 | # - imageserver version 9 | # 10 | # =============================================================================== 11 | 12 | CONTAINER_NAME="imagetest" 13 | IMAGE_NAME="registry.plot.ly:5000/imageserver" 14 | IMAGE_VERSION="1.3.0" 15 | 16 | # Run docker container: 17 | # 18 | # docker run -d --name $CONTAINER_NAME \ 19 | # -v $PWD/plotly.js:/var/www/streambed/image_server/plotly.js \ 20 | # -p 9010:9010 -p 2022:22 \ 21 | # $IMAGE_NAME:[$IMAGE_VERSION] 22 | 23 | CMD=( 24 | "cd /var/www/streambed/image_server/plotly.js &&" 25 | "cp -f test/image/index.html ../server_app/index.html &&" 26 | "monit restart nw1 &&" 27 | "sleep 5 &&" 28 | "node test/image/compare_pixels_test.js $1" 29 | ) 30 | 31 | docker exec -i $CONTAINER_NAME /bin/bash -c "${CMD[*]}" 32 | -------------------------------------------------------------------------------- /test/image/mocks/scatter_fill_no_opacity.json: -------------------------------------------------------------------------------- 1 | { 2 | "data":[ 3 | { 4 | "marker":{"size":16}, 5 | "fillcolor":"rgb(31, 119, 180)", 6 | "y":["1","2","3","4","5"], 7 | "x":["1","2","3","4","5"], 8 | "opacity": 0.2 9 | }, 10 | { 11 | "marker":{"size":16}, 12 | "fillcolor":"rgb(255, 127, 14)", 13 | "y":["2","3","4","5","6"], 14 | "x":["1","2","3","4","5"], 15 | "fill":"tonexty", 16 | "opacity": 0.2 17 | }, 18 | { 19 | "marker":{"size":16}, 20 | "fillcolor":"rgb(44, 160, 44)", 21 | "y":["3","3","3","3","3"], 22 | "x":["1","2","3","4","5"], 23 | "fill":"tonexty", 24 | "opacity": 0.2 25 | } 26 | ], 27 | "layout":{ 28 | "title": "No opacity with filled scatter", 29 | "width": 400, 30 | "height": 400 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /test/image/mocks/multiple_axes_double.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "x": [ 5 | 1, 6 | 2, 7 | 3 8 | ], 9 | "y": [ 10 | 40, 11 | 50, 12 | 60 13 | ], 14 | "name": "yaxis data", 15 | "type": "scatter" 16 | }, 17 | { 18 | "x": [ 19 | 2, 20 | 3, 21 | 4 22 | ], 23 | "y": [ 24 | 4, 25 | 5, 26 | 6 27 | ], 28 | "name": "yaxis2 data", 29 | "yaxis": "y2", 30 | "type": "scatter" 31 | } 32 | ], 33 | "layout": { 34 | "title": "Double Y Axis Example", 35 | "yaxis": { 36 | "title": "yaxis title" 37 | }, 38 | "yaxis2": { 39 | "title": "yaxis2 title", 40 | "titlefont": { 41 | "color": "rgb(148, 103, 189)" 42 | }, 43 | "tickfont": { 44 | "color": "rgb(148, 103, 189)" 45 | }, 46 | "side": "right", 47 | "overlaying": "y" 48 | } 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /test/image/mocks/multiple_axes_multiple.json: -------------------------------------------------------------------------------- 1 | {"data":[{"x":[1,2,3],"y":[4,5,6],"name":"yaxis1 data","type":"scatter"},{"x":[2,3,4],"y":[40,50,60],"name":"yaxis2 data","yaxis":"y2","type":"scatter"},{"x":[4,5,6],"y":[40000,50000,60000],"name":"yaxis3 data","yaxis":"y3","type":"scatter"},{"x":[5,6,7],"y":[400000,500000,600000],"name":"yaxis4 data","yaxis":"y4","type":"scatter"}],"layout":{"title":"multiple y-axes example","width":800,"xaxis":{"domain":[0.3,0.7]},"yaxis":{"tickfont":{"color":"#1f77b4"},"titlefont":{"color":"#1f77b4"},"title":"yaxis title"},"yaxis2":{"title":"yaxis2 title","titlefont":{"color":"#ff7f0e"},"tickfont":{"color":"#ff7f0e"},"anchor":"free","side":"left","position":0.15,"overlaying":"y"},"yaxis3":{"title":"yaxis3 title","titlefont":{"color":"#d62728"},"tickfont":{"color":"#d62728"},"anchor":"x","side":"right","overlaying":"y"},"yaxis4":{"title":"yaxis4 title","titlefont":{"color":"#9467bd"},"tickfont":{"color":"#9467bd"},"anchor":"free","side":"right","position":0.85,"overlaying":"y"}}} 2 | -------------------------------------------------------------------------------- /tasks/util/shortcut_paths.js: -------------------------------------------------------------------------------- 1 | var path = require('path'); 2 | 3 | var transformTools = require('browserify-transform-tools'); 4 | 5 | var constants = require('./constants'); 6 | 7 | /** 8 | * Transform require paths starting with '@' to appropriate folder paths 9 | */ 10 | 11 | var shortcutsConfig = { 12 | '@src': constants.pathToSrc, 13 | '@mocks': constants.pathToMocks 14 | }; 15 | 16 | module.exports = transformTools.makeRequireTransform('requireTransform', 17 | { evaluateArguments: true, jsFilesOnly: true }, 18 | function(args, opts, cb) { 19 | var pathIn = args[0]; 20 | var pathOut; 21 | 22 | Object.keys(shortcutsConfig).forEach(function(k) { 23 | if(pathIn.indexOf(k) !== -1) { 24 | var tail = pathIn.split(k)[1]; 25 | pathOut = 'require(\''+ shortcutsConfig[k] + tail + '\')'; 26 | } 27 | }); 28 | 29 | if(pathOut) return cb(null, pathOut); 30 | else return cb(); 31 | }); 32 | -------------------------------------------------------------------------------- /test/image/mocks/gl2d_size_margins.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "x": [ 5 | 0, 6 | 1, 7 | 2, 8 | 3, 9 | 4, 10 | 5, 11 | 6, 12 | 7, 13 | 8 14 | ], 15 | "y": [ 16 | 0, 17 | 1, 18 | 2, 19 | 3, 20 | 4, 21 | 5, 22 | 6, 23 | 7, 24 | 8 25 | ], 26 | "type": "scattergl" 27 | } 28 | ], 29 | "layout": { 30 | "autosize": false, 31 | "width": 500, 32 | "height": 500, 33 | "margin": { 34 | "l": 50, 35 | "r": 50, 36 | "b": 100, 37 | "t": 100, 38 | "pad": 4 39 | }, 40 | "paper_bgcolor": "#7f7f7f", 41 | "plot_bgcolor": "#c7c7c7" 42 | } 43 | } -------------------------------------------------------------------------------- /test/image/mocks/legend_inside.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "x": [ 5 | 0, 6 | 1, 7 | 2, 8 | 3, 9 | 4, 10 | 5, 11 | 6, 12 | 7, 13 | 8 14 | ], 15 | "y": [ 16 | 0, 17 | 3, 18 | 6, 19 | 4, 20 | 5, 21 | 2, 22 | 3, 23 | 5, 24 | 4 25 | ], 26 | "type": "scatter" 27 | }, 28 | { 29 | "x": [ 30 | 0, 31 | 1, 32 | 2, 33 | 3, 34 | 4, 35 | 5, 36 | 6, 37 | 7, 38 | 8 39 | ], 40 | "y": [ 41 | 0, 42 | 4, 43 | 7, 44 | 8, 45 | 3, 46 | 6, 47 | 3, 48 | 3, 49 | 4 50 | ], 51 | "type": "scatter" 52 | } 53 | ], 54 | "layout": { 55 | "showlegend": true, 56 | "legend": { 57 | "x": 1, 58 | "y": 1, 59 | "xanchor": "auto" 60 | } 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /tasks/cibundle.js: -------------------------------------------------------------------------------- 1 | var fs = require('fs'); 2 | 3 | var browserify = require('browserify'); 4 | 5 | var compressAttributes = require('./util/compress_attributes'); 6 | var constants = require('./util/constants'); 7 | 8 | /* 9 | * Trimmed down version of ./bundle.js for CI testing 10 | * 11 | * Outputs plotly.js bundle in build/ and 12 | * plotly-geo-assets.js bundle in dist/ 13 | * in accordance with test/image/index.html 14 | * 15 | */ 16 | 17 | 18 | // Browserify plotly.js 19 | browserify(constants.pathToPlotlySrc, { 20 | standalone: 'Plotly', 21 | transform: [compressAttributes] 22 | }) 23 | .bundle(function(err) { 24 | if(err) throw err; 25 | }) 26 | .pipe(fs.createWriteStream(constants.pathToPlotlyBuild)); 27 | 28 | 29 | // Browserify the geo assets 30 | browserify(constants.pathToPlotlyGeoAssetsSrc, { 31 | standalone: 'PlotlyGeoAssets' 32 | }) 33 | .bundle(function(err) { 34 | if(err) throw err; 35 | }) 36 | .pipe(fs.createWriteStream(constants.pathToPlotlyGeoAssetsDist)); 37 | -------------------------------------------------------------------------------- /test/image/mocks/error_bar_bar.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "x": [ 5 | "Trial 1", 6 | "Trial 2", 7 | "Trial 3" 8 | ], 9 | "y": [ 10 | 3, 11 | 6, 12 | 4 13 | ], 14 | "name": "Control", 15 | "error_y": { 16 | "type": "data", 17 | "array": [ 18 | 1, 19 | 0.5, 20 | 1.5 21 | ], 22 | "visible": true 23 | }, 24 | "type": "bar" 25 | }, 26 | { 27 | "x": [ 28 | "Trial 1", 29 | "Trial 2", 30 | "Trial 3" 31 | ], 32 | "y": [ 33 | 4, 34 | 7, 35 | 3 36 | ], 37 | "name": "Experimental", 38 | "error_y": { 39 | "type": "data", 40 | "array": [ 41 | 0.5, 42 | 1, 43 | 2 44 | ], 45 | "visible": true 46 | }, 47 | "type": "bar" 48 | } 49 | ], 50 | "layout": { 51 | "barmode": "group" 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /dist/extras/mathjax/jax/element/mml/optable/GreekAndCoptic.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/element/mml/optable/GreekAndCoptic.js 3 | * 4 | * Copyright (c) 2009-2013 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | (function(a){var c=a.mo.OPTYPES;var b=a.TEXCLASS;MathJax.Hub.Insert(a.mo.prototype,{OPTABLE:{infix:{"\u03F6":c.REL}}});MathJax.Ajax.loadComplete(a.optableDir+"/GreekAndCoptic.js")})(MathJax.ElementJax.mml); 20 | -------------------------------------------------------------------------------- /dist/extras/mathjax/jax/output/SVG/fonts/TeX/Main/Regular/MathOperators.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/SVG/fonts/TeX/Main/Regular/MathOperators.js 3 | * 4 | * Copyright (c) 2009-2013 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax.SVG.FONTDATA.FONTS.MathJax_Main,{8710:[716,0,833,46,786,""]});MathJax.Ajax.loadComplete(MathJax.OutputJax.SVG.fontDir+"/Main/Regular/MathOperators.js"); 20 | -------------------------------------------------------------------------------- /tasks/util/compress_attributes.js: -------------------------------------------------------------------------------- 1 | var through = require('through2'); 2 | 3 | /** 4 | * Browserify transform that strips meta attributes out 5 | * of the plotly.js bundles 6 | */ 7 | 8 | var attributeNamesToRemove = [ 9 | 'description', 'requiredOpts', 'otherOpts', 'hrName', 'role' 10 | ]; 11 | 12 | // ref: http://www.regexr.com/3bj6p 13 | var regexStr = ''; 14 | attributeNamesToRemove.forEach(function(attr, i) { 15 | // one line string with or without trailing comma 16 | regexStr += attr + ': \'.*\'' + ',?' + '|'; 17 | // array of strings with or without trailing comma 18 | regexStr += attr + ': \\[[\\s\\S]*?\\].*' + ',?'; 19 | 20 | if(i !== attributeNamesToRemove.length-1) regexStr += '|'; 21 | }); 22 | 23 | var regex = new RegExp(regexStr, 'g'); 24 | 25 | module.exports = function() { 26 | return through(function(buf, enc, next) { 27 | this.push( 28 | buf.toString('utf-8') 29 | .replace(regex, '') 30 | ); 31 | next(); 32 | }); 33 | }; 34 | -------------------------------------------------------------------------------- /dist/extras/mathjax/jax/element/mml/optable/CombDiacritMarks.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/element/mml/optable/CombDiacritMarks.js 3 | * 4 | * Copyright (c) 2009-2013 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | (function(a){var c=a.mo.OPTYPES;var b=a.TEXCLASS;MathJax.Hub.Insert(a.mo.prototype,{OPTABLE:{postfix:{"\u0311":c.ACCENT}}});MathJax.Ajax.loadComplete(a.optableDir+"/CombDiacritMarks.js")})(MathJax.ElementJax.mml); 20 | -------------------------------------------------------------------------------- /dist/extras/mathjax/jax/element/mml/optable/Dingbats.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/element/mml/optable/Dingbats.js 3 | * 4 | * Copyright (c) 2009-2013 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | (function(a){var c=a.mo.OPTYPES;var b=a.TEXCLASS;MathJax.Hub.Insert(a.mo.prototype,{OPTABLE:{prefix:{"\u2772":c.OPEN},postfix:{"\u2773":c.CLOSE}}});MathJax.Ajax.loadComplete(a.optableDir+"/Dingbats.js")})(MathJax.ElementJax.mml); 20 | -------------------------------------------------------------------------------- /dist/extras/mathjax/jax/input/MathML/entities/j.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/input/MathML/entities/j.js 3 | * 4 | * Copyright (c) 2009-2013 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | (function(a){MathJax.Hub.Insert(a.Parse.Entity,{Jcirc:"\u0134",Jcy:"\u0419",Jsercy:"\u0408",Jukcy:"\u0404",jcirc:"\u0135",jcy:"\u0439",jsercy:"\u0458",jukcy:"\u0454"});MathJax.Ajax.loadComplete(a.entityDir+"/j.js")})(MathJax.InputJax.MathML); 20 | -------------------------------------------------------------------------------- /dist/extras/mathjax/jax/input/MathML/entities/w.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/input/MathML/entities/w.js 3 | * 4 | * Copyright (c) 2009-2013 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | (function(a){MathJax.Hub.Insert(a.Parse.Entity,{Wcirc:"\u0174",wcirc:"\u0175",wedbar:"\u2A5F",wedge:"\u2227",wedgeq:"\u2259",wp:"\u2118",wr:"\u2240",wreath:"\u2240"});MathJax.Ajax.loadComplete(a.entityDir+"/w.js")})(MathJax.InputJax.MathML); 20 | -------------------------------------------------------------------------------- /src/traces/choropleth/index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2012-2015, Plotly, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the MIT license found in the 6 | * LICENSE file in the root directory of this source tree. 7 | */ 8 | 9 | 10 | 'use strict'; 11 | 12 | var Plotly = require('../../plotly'); 13 | 14 | var Choropleth = module.exports = {}; 15 | 16 | Plotly.Plots.register(Choropleth, 'choropleth', ['geo', 'noOpacity'], { 17 | description: [ 18 | 'The data that describes the choropleth value-to-color mapping', 19 | 'is set in `z`.', 20 | 'The geographic locations corresponding to each value in `z`', 21 | 'are set in `locations`.' 22 | ].join(' ') 23 | }); 24 | 25 | Choropleth.attributes = require('./attributes'); 26 | 27 | Choropleth.supplyDefaults = require('./defaults'); 28 | 29 | Choropleth.colorbar = Plotly.Colorbar.traceColorbar; 30 | 31 | Choropleth.calc = function(gd, trace) { 32 | 33 | Plotly.Colorscale.calc(trace, trace.z, '', 'z'); 34 | 35 | }; 36 | -------------------------------------------------------------------------------- /dist/extras/mathjax/jax/output/SVG/fonts/TeX/Main/Italic/MathOperators.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/SVG/fonts/TeX/Main/Italic/MathOperators.js 3 | * 4 | * Copyright (c) 2009-2013 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax.SVG.FONTDATA.FONTS["MathJax_Main-italic"],{8710:[716,0,818,70,751,""]});MathJax.Ajax.loadComplete(MathJax.OutputJax.SVG.fontDir+"/Main/Italic/MathOperators.js"); 20 | -------------------------------------------------------------------------------- /dist/extras/mathjax/jax/input/MathML/entities/q.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/input/MathML/entities/q.js 3 | * 4 | * Copyright (c) 2009-2013 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | (function(a){MathJax.Hub.Insert(a.Parse.Entity,{QUOT:"\u0022",qint:"\u2A0C",qprime:"\u2057",quaternions:"\u210D",quatint:"\u2A16",quest:"\u003F",questeq:"\u225F",quot:"\u0022"});MathJax.Ajax.loadComplete(a.entityDir+"/q.js")})(MathJax.InputJax.MathML); 20 | -------------------------------------------------------------------------------- /test/image/mocks/geo_europe-bubbles.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "type": "scattergeo", 5 | "mode": "markers", 6 | "locations": [ 7 | "FRA", 8 | "DEU", 9 | "RUS", 10 | "ESP" 11 | ], 12 | "marker": { 13 | "size": [ 14 | 20, 15 | 30, 16 | 15, 17 | 10 18 | ], 19 | "color": [ 20 | 10, 21 | 20, 22 | 40, 23 | 50 24 | ], 25 | "colorbar": { 26 | "title": "wow" 27 | } 28 | } 29 | } 30 | ], 31 | "layout": { 32 | "geo": { 33 | "scope": "europe", 34 | "resolution": 50 35 | }, 36 | "width": 500, 37 | "height": 500, 38 | "showlegend": false 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /dist/extras/mathjax/jax/element/mml/optable/LetterlikeSymbols.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/element/mml/optable/LetterlikeSymbols.js 3 | * 4 | * Copyright (c) 2009-2013 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | (function(a){var c=a.mo.OPTYPES;var b=a.TEXCLASS;MathJax.Hub.Insert(a.mo.prototype,{OPTABLE:{prefix:{"\u2145":c.ORD21,"\u2146":[2,0,b.ORD]}}});MathJax.Ajax.loadComplete(a.optableDir+"/LetterlikeSymbols.js")})(MathJax.ElementJax.mml); 20 | -------------------------------------------------------------------------------- /test/image/mocks/axes_range_type.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "x": [ 5 | 0, 6 | 1, 7 | 2, 8 | 3, 9 | 4, 10 | 5, 11 | 6, 12 | 7, 13 | 8 14 | ], 15 | "y": [ 16 | 8, 17 | 7, 18 | 6, 19 | 5, 20 | 4, 21 | 3, 22 | 2, 23 | 1, 24 | 0 25 | ], 26 | "type": "scatter" 27 | }, 28 | { 29 | "x": [ 30 | 0, 31 | 1, 32 | 2, 33 | 3, 34 | 4, 35 | 5, 36 | 6, 37 | 7, 38 | 8 39 | ], 40 | "y": [ 41 | 0, 42 | 1, 43 | 2, 44 | 3, 45 | 4, 46 | 5, 47 | 6, 48 | 7, 49 | 8 50 | ], 51 | "type": "scatter" 52 | } 53 | ], 54 | "layout": { 55 | "xaxis": { 56 | "type": "log", 57 | "autorange": true 58 | }, 59 | "yaxis": { 60 | "type": "log", 61 | "autorange": true 62 | } 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /dist/extras/mathjax/jax/element/mml/optable/CombDiactForSymbols.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/element/mml/optable/CombDiactForSymbols.js 3 | * 4 | * Copyright (c) 2009-2013 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | (function(a){var c=a.mo.OPTYPES;var b=a.TEXCLASS;MathJax.Hub.Insert(a.mo.prototype,{OPTABLE:{postfix:{"\u20DB":c.ACCENT,"\u20DC":c.ACCENT}}});MathJax.Ajax.loadComplete(a.optableDir+"/CombDiactForSymbols.js")})(MathJax.ElementJax.mml); 20 | -------------------------------------------------------------------------------- /dist/extras/mathjax/jax/element/mml/optable/Latin1Supplement.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/element/mml/optable/Latin1Supplement.js 3 | * 4 | * Copyright (c) 2009-2013 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | (function(a){var c=a.mo.OPTYPES;var b=a.TEXCLASS;MathJax.Hub.Insert(a.mo.prototype,{OPTABLE:{postfix:{"\u00B0":c.ORD,"\u00B4":c.ACCENT,"\u00B8":c.ACCENT}}});MathJax.Ajax.loadComplete(a.optableDir+"/Latin1Supplement.js")})(MathJax.ElementJax.mml); 20 | -------------------------------------------------------------------------------- /dist/extras/mathjax/jax/input/MathML/entities/k.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/input/MathML/entities/k.js 3 | * 4 | * Copyright (c) 2009-2013 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | (function(a){MathJax.Hub.Insert(a.Parse.Entity,{KHcy:"\u0425",KJcy:"\u040C",Kappa:"\u039A",Kcedil:"\u0136",Kcy:"\u041A",kcedil:"\u0137",kcy:"\u043A",kgreen:"\u0138",khcy:"\u0445",kjcy:"\u045C"});MathJax.Ajax.loadComplete(a.entityDir+"/k.js")})(MathJax.InputJax.MathML); 20 | -------------------------------------------------------------------------------- /dist/extras/mathjax/jax/element/mml/optable/MiscSymbolsAndArrows.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/element/mml/optable/MiscSymbolsAndArrows.js 3 | * 4 | * Copyright (c) 2009-2013 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | (function(a){var c=a.mo.OPTYPES;var b=a.TEXCLASS;MathJax.Hub.Insert(a.mo.prototype,{OPTABLE:{infix:{"\u2B45":c.RELSTRETCH,"\u2B46":c.RELSTRETCH}}});MathJax.Ajax.loadComplete(a.optableDir+"/MiscSymbolsAndArrows.js")})(MathJax.ElementJax.mml); 20 | -------------------------------------------------------------------------------- /test/image/mocks/geo_multi-geos.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "type": "scattergeo", 5 | "mode": "markers+text", 6 | "name": "mah trace", 7 | "lon": [ 8 | 0, 9 | -75, 10 | 100 11 | ], 12 | "lat": [ 13 | 0, 14 | 45, 15 | -30 16 | ], 17 | "uid": "3bbd0c" 18 | }, 19 | { 20 | "type": "scattergeo", 21 | "lon": [ 22 | -75, 23 | 10, 24 | 160 25 | ], 26 | "lat": [ 27 | 45, 28 | 50, 29 | 60 30 | ], 31 | "mode": "lines", 32 | "geo": "geo2", 33 | "uid": "daaba4" 34 | } 35 | ], 36 | "layout": { 37 | "title": "MULTI GEOS", 38 | "height": 450, 39 | "width": 1000, 40 | "autosize": true, 41 | "showlegend": false 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /src/lib/topojson_utils.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2012-2015, Plotly, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the MIT license found in the 6 | * LICENSE file in the root directory of this source tree. 7 | */ 8 | 9 | 10 | 'use strict'; 11 | 12 | var topojsonUtils = module.exports = {}; 13 | 14 | var locationmodeToLayer = require('../constants/geo_constants').locationmodeToLayer, 15 | topojsonFeature = require('topojson').feature; 16 | 17 | 18 | topojsonUtils.getTopojsonName = function(geoLayout) { 19 | return [ 20 | geoLayout.scope.replace(/ /g, '-'), '_', 21 | geoLayout.resolution.toString(), 'm' 22 | ].join(''); 23 | }; 24 | 25 | topojsonUtils.getTopojsonPath = function(topojsonURL, topojsonName) { 26 | return topojsonURL + topojsonName + '.json'; 27 | }; 28 | 29 | topojsonUtils.getTopojsonFeatures = function(trace, topojson) { 30 | var layer = locationmodeToLayer[trace.locationmode], 31 | obj = topojson.objects[layer]; 32 | 33 | return topojsonFeature(topojson, obj).features; 34 | }; 35 | -------------------------------------------------------------------------------- /test/image/mocks/axes_range_manual.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "x": [ 5 | 0, 6 | 1, 7 | 2, 8 | 3, 9 | 4, 10 | 5, 11 | 6, 12 | 7, 13 | 8 14 | ], 15 | "y": [ 16 | 8, 17 | 7, 18 | 6, 19 | 5, 20 | 4, 21 | 3, 22 | 2, 23 | 1, 24 | 0 25 | ], 26 | "type": "scatter" 27 | }, 28 | { 29 | "x": [ 30 | 0, 31 | 1, 32 | 2, 33 | 3, 34 | 4, 35 | 5, 36 | 6, 37 | 7, 38 | 8 39 | ], 40 | "y": [ 41 | 0, 42 | 1, 43 | 2, 44 | 3, 45 | 4, 46 | 5, 47 | 6, 48 | 7, 49 | 8 50 | ], 51 | "type": "scatter" 52 | } 53 | ], 54 | "layout": { 55 | "xaxis": { 56 | "range": [ 57 | 2, 58 | 5 59 | ] 60 | }, 61 | "yaxis": { 62 | "range": [ 63 | 2, 64 | 5 65 | ] 66 | } 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /test/image/mocks/gl2d_simple_inset.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "x": [ 5 | 1, 6 | 2, 7 | 3 8 | ], 9 | "y": [ 10 | 4, 11 | 3, 12 | 2 13 | ], 14 | "type": "scattergl" 15 | }, 16 | { 17 | "x": [ 18 | 20, 19 | 30, 20 | 40 21 | ], 22 | "y": [ 23 | 30, 24 | 40, 25 | 50 26 | ], 27 | "xaxis": "x2", 28 | "yaxis": "y2", 29 | "type": "scattergl" 30 | } 31 | ], 32 | "layout": { 33 | "yaxis2": { 34 | "domain": [ 35 | 0.6, 36 | 0.95 37 | ], 38 | "anchor": "x2" 39 | }, 40 | "xaxis2": { 41 | "domain": [ 42 | 0.6, 43 | 0.95 44 | ], 45 | "anchor": "y2" 46 | } 47 | } 48 | } -------------------------------------------------------------------------------- /dist/extras/mathjax/jax/element/mml/optable/SpacingModLetters.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/element/mml/optable/SpacingModLetters.js 3 | * 4 | * Copyright (c) 2009-2013 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | (function(a){var c=a.mo.OPTYPES;var b=a.TEXCLASS;MathJax.Hub.Insert(a.mo.prototype,{OPTABLE:{postfix:{"\u02CD":c.WIDEACCENT,"\u02DA":c.ACCENT,"\u02DD":c.ACCENT,"\u02F7":c.WIDEACCENT}}});MathJax.Ajax.loadComplete(a.optableDir+"/SpacingModLetters.js")})(MathJax.ElementJax.mml); 20 | -------------------------------------------------------------------------------- /dist/extras/mathjax/jax/output/SVG/fonts/TeX/Fraktur/Regular/Main.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/SVG/fonts/TeX/Fraktur/Regular/Main.js 3 | * 4 | * Copyright (c) 2009-2013 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.OutputJax.SVG.FONTDATA.FONTS.MathJax_Fraktur={directory:"Fraktur/Regular",family:"MathJax_Fraktur",id:"MJFRAK",Ranges:[[0,127,"BasicLatin"],[128,57343,"Other"],[58112,58128,"PUA"]]};MathJax.Ajax.loadComplete(MathJax.OutputJax.SVG.fontDir+"/Fraktur/Regular/Main.js"); 20 | -------------------------------------------------------------------------------- /dist/extras/mathjax/jax/output/SVG/fonts/TeX/Fraktur/Bold/Main.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/SVG/fonts/TeX/Fraktur/Bold/Main.js 3 | * 4 | * Copyright (c) 2009-2013 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.OutputJax.SVG.FONTDATA.FONTS["MathJax_Fraktur-bold"]={directory:"Fraktur/Bold",family:"MathJax_Fraktur",id:"MJFRAKB",weight:"bold",Ranges:[[0,127,"BasicLatin"],[128,57343,"Other"],[58112,58128,"PUA"]]};MathJax.Ajax.loadComplete(MathJax.OutputJax.SVG.fontDir+"/Fraktur/Bold/Main.js"); 20 | -------------------------------------------------------------------------------- /dist/extras/mathjax/jax/input/MathML/entities/y.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/input/MathML/entities/y.js 3 | * 4 | * Copyright (c) 2009-2013 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | (function(a){MathJax.Hub.Insert(a.Parse.Entity,{YAcy:"\u042F",YIcy:"\u0407",YUcy:"\u042E",Yacute:"\u00DD",Ycirc:"\u0176",Ycy:"\u042B",Yuml:"\u0178",yacute:"\u00FD",yacy:"\u044F",ycirc:"\u0177",ycy:"\u044B",yicy:"\u0457",yucy:"\u044E",yuml:"\u00FF"});MathJax.Ajax.loadComplete(a.entityDir+"/y.js")})(MathJax.InputJax.MathML); 20 | -------------------------------------------------------------------------------- /src/traces/scattergl/index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2012-2015, Plotly, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the MIT license found in the 6 | * LICENSE file in the root directory of this source tree. 7 | */ 8 | 9 | 10 | 'use strict'; 11 | 12 | var Plotly = require('../../plotly'); 13 | 14 | var ScatterGl = module.exports = {}; 15 | 16 | Plotly.Plots.register(ScatterGl, 'scattergl', 17 | ['gl2d', 'symbols', 'errorBarsOK', 'markerColorscale', 'showLegend'], { 18 | description: [ 19 | 'The data visualized as scatter point or lines is set in `x` and `y`', 20 | 'using the WebGl plotting engine.', 21 | 'Bubble charts are achieved by setting `marker.size` and/or `marker.color`', 22 | 'to a numerical arrays.' 23 | ].join(' ') 24 | }); 25 | 26 | ScatterGl.attributes = require('./attributes'); 27 | 28 | ScatterGl.supplyDefaults = require('./defaults'); 29 | 30 | ScatterGl.colorbar = Plotly.Scatter.colorbar; 31 | 32 | // reuse the Scatter3D 'dummy' calc step so that legends know what to do 33 | ScatterGl.calc = Plotly.Scatter3D.calc; 34 | -------------------------------------------------------------------------------- /dist/extras/mathjax/jax/element/mml/optable/MiscMathSymbolsA.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/element/mml/optable/MiscMathSymbolsA.js 3 | * 4 | * Copyright (c) 2009-2013 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | (function(a){var c=a.mo.OPTYPES;var b=a.TEXCLASS;MathJax.Hub.Insert(a.mo.prototype,{OPTABLE:{prefix:{"\u27E6":c.OPEN,"\u27EA":c.OPEN,"\u27EC":c.OPEN},postfix:{"\u27E7":c.CLOSE,"\u27EB":c.CLOSE,"\u27ED":c.CLOSE}}});MathJax.Ajax.loadComplete(a.optableDir+"/MiscMathSymbolsA.js")})(MathJax.ElementJax.mml); 20 | -------------------------------------------------------------------------------- /dist/extras/mathjax/jax/input/AsciiMath/config.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/input/AsciiMath/config.js 3 | * 4 | * Copyright (c) 2009-2013 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.InputJax.AsciiMath=MathJax.InputJax({id:"AsciiMath",version:"2.3",directory:MathJax.InputJax.directory+"/AsciiMath",extensionDir:MathJax.InputJax.extensionDir+"/AsciiMath",config:{displaystyle:true,decimalsign:"."}});MathJax.InputJax.AsciiMath.Register("math/asciimath");MathJax.InputJax.AsciiMath.loadComplete("config.js"); 20 | -------------------------------------------------------------------------------- /dist/extras/mathjax/jax/output/SVG/fonts/TeX/SansSerif/Regular/Main.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/SVG/fonts/TeX/SansSerif/Regular/Main.js 3 | * 4 | * Copyright (c) 2009-2013 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.OutputJax.SVG.FONTDATA.FONTS.MathJax_SansSerif={directory:"SansSerif/Regular",family:"MathJax_SansSerif",id:"MJSS",Ranges:[[0,127,"BasicLatin"],[128,65535,"Other"],[768,879,"CombDiacritMarks"]]};MathJax.Ajax.loadComplete(MathJax.OutputJax.SVG.fontDir+"/SansSerif/Regular/Main.js"); 20 | -------------------------------------------------------------------------------- /src/traces/scattergeo/index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2012-2015, Plotly, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the MIT license found in the 6 | * LICENSE file in the root directory of this source tree. 7 | */ 8 | 9 | 10 | 'use strict'; 11 | 12 | var Plotly = require('../../plotly'); 13 | 14 | var ScatterGeo = module.exports = {}; 15 | 16 | Plotly.Plots.register(ScatterGeo, 'scattergeo', 17 | ['geo', 'symbols', 'markerColorscale', 'showLegend'], { 18 | hrName: 'scatter_geo', 19 | description: [ 20 | 'The data visualized as scatter point or lines on a geographic map', 21 | 'is provided either by longitude/latitude pairs in `lon` and `lat`', 22 | 'respectively or by geographic location IDs or names in `locations`.' 23 | ].join(' ') 24 | }); 25 | 26 | ScatterGeo.attributes = require('./attributes'); 27 | 28 | ScatterGeo.supplyDefaults = require('./defaults'); 29 | 30 | ScatterGeo.colorbar = Plotly.Scatter.colorbar; 31 | 32 | ScatterGeo.calc = function(gd, trace) { 33 | 34 | Plotly.Scatter.calcMarkerColorscales(trace); 35 | 36 | }; 37 | -------------------------------------------------------------------------------- /dist/extras/mathjax/jax/output/SVG/fonts/TeX/Typewriter/Regular/Main.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/SVG/fonts/TeX/Typewriter/Regular/Main.js 3 | * 4 | * Copyright (c) 2009-2013 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.OutputJax.SVG.FONTDATA.FONTS.MathJax_Typewriter={directory:"Typewriter/Regular",family:"MathJax_Typewriter",id:"MJTT",Ranges:[[0,127,"BasicLatin"],[128,65535,"Other"],[768,879,"CombDiacritMarks"]]};MathJax.Ajax.loadComplete(MathJax.OutputJax.SVG.fontDir+"/Typewriter/Regular/Main.js"); 20 | -------------------------------------------------------------------------------- /dist/extras/mathjax/jax/output/SVG/fonts/TeX/SansSerif/Bold/Main.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/SVG/fonts/TeX/SansSerif/Bold/Main.js 3 | * 4 | * Copyright (c) 2009-2013 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.OutputJax.SVG.FONTDATA.FONTS["MathJax_SansSerif-bold"]={directory:"SansSerif/Bold",family:"MathJax_SansSerif",id:"MJSSB",weight:"bold",Ranges:[[0,127,"BasicLatin"],[128,65535,"Other"],[768,879,"CombDiacritMarks"]]};MathJax.Ajax.loadComplete(MathJax.OutputJax.SVG.fontDir+"/SansSerif/Bold/Main.js"); 20 | -------------------------------------------------------------------------------- /dist/extras/mathjax/jax/element/mml/optable/MiscTechnical.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/element/mml/optable/MiscTechnical.js 3 | * 4 | * Copyright (c) 2009-2013 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | (function(a){var c=a.mo.OPTYPES;var b=a.TEXCLASS;MathJax.Hub.Insert(a.mo.prototype,{OPTABLE:{postfix:{"\u23B4":c.WIDEACCENT,"\u23B5":c.WIDEACCENT,"\u23DC":c.WIDEACCENT,"\u23DD":c.WIDEACCENT,"\u23E0":c.WIDEACCENT,"\u23E1":c.WIDEACCENT}}});MathJax.Ajax.loadComplete(a.optableDir+"/MiscTechnical.js")})(MathJax.ElementJax.mml); 20 | -------------------------------------------------------------------------------- /dist/extras/mathjax/jax/element/mml/optable/SupplementalArrowsA.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/element/mml/optable/SupplementalArrowsA.js 3 | * 4 | * Copyright (c) 2009-2013 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | (function(a){var c=a.mo.OPTYPES;var b=a.TEXCLASS;MathJax.Hub.Insert(a.mo.prototype,{OPTABLE:{infix:{"\u27F0":c.RELSTRETCH,"\u27F1":c.RELSTRETCH,"\u27FB":c.WIDEREL,"\u27FD":c.WIDEREL,"\u27FE":c.WIDEREL,"\u27FF":c.WIDEREL}}});MathJax.Ajax.loadComplete(a.optableDir+"/SupplementalArrowsA.js")})(MathJax.ElementJax.mml); 20 | -------------------------------------------------------------------------------- /dist/extras/mathjax/jax/input/MathML/config.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/input/MathML/config.js 3 | * 4 | * Copyright (c) 2009-2013 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.InputJax.MathML=MathJax.InputJax({id:"MathML",version:"2.3",directory:MathJax.InputJax.directory+"/MathML",extensionDir:MathJax.InputJax.extensionDir+"/MathML",entityDir:MathJax.InputJax.directory+"/MathML/entities",config:{useMathMLspacing:false}});MathJax.InputJax.MathML.Register("math/mml");MathJax.InputJax.MathML.loadComplete("config.js"); 20 | -------------------------------------------------------------------------------- /test/image/mocks/heatmap-reverse-autocolorscale.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "type": "heatmap", 5 | "z": [ 6 | [ 7 | 1, 8 | 2, 9 | 3 10 | ], 11 | [ 12 | 3, 13 | 2, 14 | 1 15 | ] 16 | ], 17 | "autocolorscale": true, 18 | "reversescale": true 19 | } 20 | ], 21 | "layout": { 22 | "title": "reverse auto colorscale", 23 | "xaxis": { 24 | "type": "linear", 25 | "range": [ 26 | -0.5, 27 | 2.5 28 | ], 29 | "autorange": true 30 | }, 31 | "yaxis": { 32 | "type": "linear", 33 | "range": [ 34 | -0.5, 35 | 1.5 36 | ], 37 | "autorange": true 38 | }, 39 | "height": 598, 40 | "width": 1080, 41 | "autosize": true, 42 | "showlegend": false 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /dist/extras/mathjax/jax/input/MathML/entities/z.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/input/MathML/entities/z.js 3 | * 4 | * Copyright (c) 2009-2013 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | (function(a){MathJax.Hub.Insert(a.Parse.Entity,{ZHcy:"\u0416",Zacute:"\u0179",Zcaron:"\u017D",Zcy:"\u0417",Zdot:"\u017B",ZeroWidthSpace:"\u200B",Zeta:"\u0396",zacute:"\u017A",zcaron:"\u017E",zcy:"\u0437",zdot:"\u017C",zeetrf:"\u2128",zhcy:"\u0436",zwj:"\u200D",zwnj:"\u200C"});MathJax.Ajax.loadComplete(a.entityDir+"/z.js")})(MathJax.InputJax.MathML); 20 | -------------------------------------------------------------------------------- /dist/extras/mathjax/jax/output/SVG/fonts/TeX/SansSerif/Italic/Main.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/SVG/fonts/TeX/SansSerif/Italic/Main.js 3 | * 4 | * Copyright (c) 2009-2013 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.OutputJax.SVG.FONTDATA.FONTS["MathJax_SansSerif-italic"]={directory:"SansSerif/Italic",family:"MathJax_SansSerif",id:"MJSSI",style:"italic",Ranges:[[0,127,"BasicLatin"],[128,65535,"Other"],[768,879,"CombDiacritMarks"]]};MathJax.Ajax.loadComplete(MathJax.OutputJax.SVG.fontDir+"/SansSerif/Italic/Main.js"); 20 | -------------------------------------------------------------------------------- /test/image/mocks/line_grid_width.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "y": [ 5 | -5, 6 | -1, 7 | 1 8 | ], 9 | "x": [ 10 | -1, 11 | 0, 12 | 1 13 | ], 14 | "uid": "e9539e" 15 | } 16 | ], 17 | "layout": { 18 | "xaxis": { 19 | "linewidth": 2, 20 | "gridwidth": 2, 21 | "zerolinewidth": 4, 22 | "type": "linear", 23 | "range": [ 24 | -1.122244488977956, 25 | 1.122244488977956 26 | ], 27 | "autorange": true 28 | }, 29 | "yaxis": { 30 | "linewidth": 2, 31 | "gridwidth": 2, 32 | "zerolinewidth": 4, 33 | "type": "linear", 34 | "range": [ 35 | -5.439490445859873, 36 | 1.4394904458598727 37 | ], 38 | "autorange": true 39 | }, 40 | "height": 450, 41 | "width": 1000, 42 | "autosize": true 43 | } 44 | } -------------------------------------------------------------------------------- /test/image/mocks/tick_attributes.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "y": [ 5 | -1, 6 | 0, 7 | -2 8 | ], 9 | "x": [ 10 | 1, 11 | 2, 12 | 3 13 | ], 14 | "uid": "02de62" 15 | } 16 | ], 17 | "layout": { 18 | "xaxis": { 19 | "tickwidth": 2, 20 | "tickcolor": "blue", 21 | "ticklen": 4, 22 | "type": "linear", 23 | "range": [ 24 | 0.8777555110220441, 25 | 3.122244488977956 26 | ], 27 | "autorange": true 28 | }, 29 | "yaxis": { 30 | "tickwidth": 2, 31 | "tickcolor": "blue", 32 | "ticklen": 4, 33 | "type": "linear", 34 | "range": [ 35 | -2.1464968152866244, 36 | 0.1464968152866242 37 | ], 38 | "autorange": true 39 | }, 40 | "height": 450, 41 | "width": 1000, 42 | "autosize": true 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /src/css/_notifier.scss: -------------------------------------------------------------------------------- 1 | .plotly-notifier { 2 | font-family: 'Open Sans'; // Because not all contexts have this specified. 3 | position: fixed; 4 | top: 50px; 5 | right: 20px; 6 | z-index: 10000; 7 | font-size: 10pt; 8 | max-width: 180px; 9 | 10 | p { 11 | margin: 0; 12 | } 13 | 14 | .notifier-note { 15 | min-width: 180px; 16 | max-width: 250px; 17 | border: 1px solid $color-bg-light; 18 | z-index: 3000; 19 | margin: 0; 20 | 21 | background-color: #8c97af; 22 | background-color: rgba(140, 151, 175, 0.9); 23 | color: $color-bg-light; 24 | padding: 10px; 25 | } 26 | 27 | .notifier-close { 28 | color: $color-bg-light; 29 | opacity: 0.8; 30 | 31 | float: right; 32 | padding: 0 5px; 33 | 34 | background: none; 35 | border: none; 36 | font-size: 20px; 37 | font-weight: bold; 38 | line-height: 20px; 39 | 40 | &:hover { 41 | color: #444; 42 | text-decoration: none; 43 | cursor: pointer; 44 | } 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /test/image/mocks/hist_valid_ses_y.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "y": [ 5 | 2, 6 | 3, 7 | 3, 8 | 4, 9 | 4, 10 | 4, 11 | 4, 12 | 5, 13 | 5, 14 | 5, 15 | 6, 16 | 7, 17 | 7 18 | ], 19 | "ybins": { 20 | "start": 2, 21 | "end": 8, 22 | "size": 1 23 | }, 24 | "type": "histogram", 25 | "uid": "b7f050" 26 | } 27 | ], 28 | "layout": { 29 | "xaxis": { 30 | "range": [ 31 | 0, 32 | 4.2105263157894735 33 | ], 34 | "autorange": true 35 | }, 36 | "yaxis": { 37 | "type": "linear", 38 | "range": [ 39 | 2, 40 | 8 41 | ], 42 | "autorange": true 43 | }, 44 | "height": 450, 45 | "width": 1000, 46 | "autosize": true 47 | } 48 | } -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 Plotly, Inc 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /tasks/util/format_bundle_msg.js: -------------------------------------------------------------------------------- 1 | var prettySize = require('prettysize'); 2 | 3 | 4 | /** 5 | * Format the on-bundle output message 6 | * 7 | * @param {browserify instance} b 8 | * @param {string} bundleName name of the bundle built 9 | */ 10 | module.exports = function formatBundleMsg(b, bundleName) { 11 | var msgParts = [ 12 | bundleName, ':', '', 13 | 'written', 'in', '', 'sec', 14 | '[', '', '', '', ']' 15 | ]; 16 | 17 | b.on('bytes', function(bytes) { 18 | msgParts[2] = prettySize(bytes, true); 19 | }); 20 | 21 | b.on('time', function(time) { 22 | msgParts[5] = (time / 1000).toFixed(2); 23 | }); 24 | 25 | b.on('log', function() { 26 | var date = new Date(); 27 | 28 | // get locale date 29 | msgParts[msgParts.length-4] = date.toLocaleDateString(); 30 | 31 | // get locale time 32 | msgParts[msgParts.length-3] = date.toLocaleTimeString(); 33 | 34 | // get time zone code 35 | msgParts[msgParts.length-2] = date.toString().match(/\(([A-Za-z\s].*)\)/)[1]; 36 | 37 | console.log(msgParts.join(' ')); 38 | }); 39 | }; 40 | -------------------------------------------------------------------------------- /test/image/mocks/stacked_coupled_subplots.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "x": [ 5 | 0, 6 | 1, 7 | 2 8 | ], 9 | "y": [ 10 | 10, 11 | 11, 12 | 12 13 | ], 14 | "type": "scatter" 15 | }, 16 | { 17 | "x": [ 18 | 2, 19 | 3, 20 | 4 21 | ], 22 | "y": [ 23 | 100, 24 | 110, 25 | 120 26 | ], 27 | "yaxis": "y2", 28 | "type": "scatter" 29 | }, 30 | { 31 | "x": [ 32 | 3, 33 | 4, 34 | 5 35 | ], 36 | "y": [ 37 | 1000, 38 | 1100, 39 | 1200 40 | ], 41 | "yaxis": "y3", 42 | "type": "scatter" 43 | } 44 | ], 45 | "layout": { 46 | "yaxis": { 47 | "domain": [ 48 | 0, 49 | 0.33 50 | ] 51 | }, 52 | "legend": { 53 | "traceorder": "reversed" 54 | }, 55 | "yaxis2": { 56 | "domain": [ 57 | 0.33, 58 | 0.66 59 | ] 60 | }, 61 | "yaxis3": { 62 | "domain": [ 63 | 0.66, 64 | 1 65 | ] 66 | } 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /dist/extras/mathjax/jax/output/SVG/fonts/TeX/AMS/Regular/GeneralPunctuation.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/SVG/fonts/TeX/AMS/Regular/GeneralPunctuation.js 3 | * 4 | * Copyright (c) 2009-2013 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Insert(MathJax.OutputJax.SVG.FONTDATA.FONTS.MathJax_AMS,{8245:[560,-43,275,12,244,"12 501Q12 527 31 542T63 558Q73 560 77 560Q114 560 128 528Q133 518 188 293T244 61Q244 56 223 50T195 43Q192 43 190 45T102 263T14 486Q12 496 12 501"]});MathJax.Ajax.loadComplete(MathJax.OutputJax.SVG.fontDir+"/AMS/Regular/GeneralPunctuation.js"); 20 | -------------------------------------------------------------------------------- /test/image/mocks/gl3d_autocolorscale.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "type": "surface", 5 | "z": [ 6 | [ 7 | 8.41, 8 | 3, 9 | 4 10 | ], 11 | [ 12 | 1, 13 | 2, 14 | 3 15 | ], 16 | [ 17 | 2, 18 | 43, 19 | 1 20 | ] 21 | ], 22 | "text": [ 23 | ["zero zero", "one zero", "two zero"], 24 | ["zero two", "one one", "two one"], 25 | ["zero two", "one two", "two two"] 26 | ], 27 | "autocolorscale": true 28 | } 29 | ], 30 | "layout": { 31 | "title": "Simple surface", 32 | "scene": { 33 | "aspectratio": { 34 | "x": 1, 35 | "y": 1, 36 | "z": 1 37 | } 38 | }, 39 | "height": 598, 40 | "width": 1080, 41 | "autosize": true, 42 | "showlegend": false 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /test/image/mocks/text_chart_single-string.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "x": [ 5 | 0, 6 | 1, 7 | 2 8 | ], 9 | "y": [ 10 | 1, 11 | 1, 12 | 1 13 | ], 14 | "mode": "lines+markers+text", 15 | "name": "Lines, Markers and (same) Text", 16 | "text": "(same) text", 17 | "textposition": "top", 18 | "type": "scatter" 19 | }, 20 | { 21 | "x": [ 22 | 0, 23 | 1, 24 | 2 25 | ], 26 | "y": [ 27 | 2, 28 | 2, 29 | 2 30 | ], 31 | "mode": "markers+text", 32 | "name": "Markers and Text (same)", 33 | "text": "text (same)", 34 | "textposition": "bottom", 35 | "type": "scatter" 36 | }, 37 | { 38 | "x": [ 39 | 0, 40 | 1, 41 | 2 42 | ], 43 | "y": [ 44 | 3, 45 | 3, 46 | 3 47 | ], 48 | "mode": "lines+text", 49 | "name": "Lines and Text", 50 | "text": "text", 51 | "textposition": "bottom", 52 | "type": "scatter" 53 | } 54 | ], 55 | "layout": { 56 | "showlegend": false 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /test/image/mocks/legend_outside.json: -------------------------------------------------------------------------------- 1 | { 2 | "data":[ 3 | { 4 | "x":[ 5 | 0, 6 | 1, 7 | 2, 8 | 3, 9 | 4, 10 | 5, 11 | 6, 12 | 7, 13 | 8 14 | ], 15 | "y":[ 16 | 0, 17 | 3, 18 | 6, 19 | 4, 20 | 5, 21 | 2, 22 | 3, 23 | 5, 24 | 4 25 | ], 26 | "type":"scatter" 27 | }, 28 | { 29 | "x":[ 30 | 0, 31 | 1, 32 | 2, 33 | 3, 34 | 4, 35 | 5, 36 | 6, 37 | 7, 38 | 8 39 | ], 40 | "y":[ 41 | 0, 42 | 4, 43 | 7, 44 | 8, 45 | 3, 46 | 6, 47 | 3, 48 | 3, 49 | 4 50 | ], 51 | "type":"scatter" 52 | } 53 | ], 54 | "layout":{ 55 | "showlegend":true, 56 | "legend":{ 57 | "x":1, 58 | "y":1, 59 | "xanchor":"left" 60 | } 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /test/image/mocks/axes_enumerated_ticks.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "y": [ 5 | 1, 6 | 2, 7 | 3, 8 | 4, 9 | 5, 10 | 6 11 | ], 12 | "x": [ 13 | 0, 14 | 1, 15 | 2, 16 | 3, 17 | 4, 18 | 5 19 | ] 20 | } 21 | ], 22 | "layout": { 23 | "yaxis": { 24 | "type": "log", 25 | "tickvals": [ 26 | 1.5, 27 | 2.53, 28 | 5.99999 29 | ] 30 | }, 31 | "height": 300, 32 | "width": 400, 33 | "xaxis": { 34 | "ticktext": [ 35 | "green eggs", 36 | "& ham", 37 | "H2O", 38 | "Gorgonzola" 39 | ], 40 | "tickvals": [ 41 | 0, 42 | 1, 43 | 2, 44 | 3, 45 | 4, 46 | 5 47 | ] 48 | } 49 | } 50 | } -------------------------------------------------------------------------------- /test/image/mocks/legend_visibility.json: -------------------------------------------------------------------------------- 1 | { 2 | "data":[ 3 | {"name":"bar A","type":"bar","y":["2","3","5","4","1"]}, 4 | {"name":"bar B","type":"bar","visible":"legendonly","y":["3","5","7","6","8"]}, 5 | {"name":"bar C","type":"bar","y":["2","4","6","3","8"]}, 6 | {"name":"line A","yaxis":"y2","y":["2","3","5","4","1"]}, 7 | {"name":"line B","yaxis":"y2","visible":"legendonly","y":["3","5","7","6","8"]}, 8 | {"name":"line C","yaxis":"y2","y":["2","4","6","3","8"]}, 9 | {"name":"box A","type":"box","xaxis":"x2","yaxis":"y3","y":[1,2,3,4,5,6,7,8,9]}, 10 | {"name":"box B","type":"box","xaxis":"x2","yaxis":"y3","visible":"legendonly","y":[2,3,3,4,4,4,5,5,6]}, 11 | {"name":"box C","type":"box","xaxis":"x2","yaxis":"y3","y":[1,4,6,7,7,8,8,8,9]} 12 | ], 13 | "layout": { 14 | "showlegend":true, 15 | "height":400, 16 | "width":600, 17 | "barnorm":"fraction", 18 | "barmode":"stack", 19 | "xaxis":{"domain":[0,0.45]}, 20 | "xaxis2":{"anchor":"y3","domain":[0.55,1]}, 21 | "yaxis2":{"overlaying":"y","side":"right"}, 22 | "yaxis3":{"anchor":"x2"} 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/plots/cartesian/attributes.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2012-2015, Plotly, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the MIT license found in the 6 | * LICENSE file in the root directory of this source tree. 7 | */ 8 | 9 | 10 | module.exports = { 11 | xaxis: { 12 | valType: 'axisid', 13 | role: 'info', 14 | dflt: 'x', 15 | description: [ 16 | 'Sets a reference between this trace\'s x coordinates and', 17 | 'a 2D cartesian x axis.', 18 | 'If *x* (the default value), the x coordinates refer to', 19 | '`layout.xaxis`.', 20 | 'If *x2*, the x coordinates refer to `layout.xaxis2`, and so on.' 21 | ].join(' ') 22 | }, 23 | yaxis: { 24 | valType: 'axisid', 25 | role: 'info', 26 | dflt: 'y', 27 | description: [ 28 | 'Sets a reference between this trace\'s y coordinates and', 29 | 'a 2D cartesian y axis.', 30 | 'If *y* (the default value), the y coordinates refer to', 31 | '`layout.yaxis`.', 32 | 'If *y2*, the y coordinates refer to `layout.xaxis2`, and so on.' 33 | ].join(' ') 34 | } 35 | }; 36 | --------------------------------------------------------------------------------