j1-template 2022.5.0.rc3 → 2022.5.1.rc0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/_includes/themes/j1/modules/attics/generator.html +5 -13
- data/assets/data/banner.html +2 -2
- data/assets/themes/j1/adapter/js/attic.js +106 -62
- data/assets/themes/j1/adapter/js/masterslider.js +22 -5
- data/assets/themes/j1/core/css/themes/unolight/bootstrap.css +26 -1
- data/assets/themes/j1/core/css/themes/unolight/bootstrap.min.css +1 -1
- data/assets/themes/j1/modules/backstretch/js/backstretch.js +1 -1
- data/assets/themes/j1/modules/backstretch/js/v2.1.16/backstretch.js +1696 -0
- data/assets/themes/j1/modules/backstretch/js/v2.1.16/backstretch.min.js +20 -0
- data/assets/themes/j1/modules/backstretch/js/v2.1.18/backstretch.js +1627 -0
- data/assets/themes/j1/modules/backstretch/js/v2.1.18/backstretch.min.js +20 -0
- data/assets/themes/j1/modules/cryptoJS/js/rc4.js +2 -2
- data/lib/j1/version.rb +1 -1
- data/lib/starter_web/Gemfile +1 -1
- data/lib/starter_web/README.md +440 -175
- data/lib/starter_web/_config.yml +3 -3
- data/lib/starter_web/_data/blocks/banner.yml +1 -1
- data/lib/starter_web/_data/modules/attics.yml +12 -0
- data/lib/starter_web/_data/modules/defaults/attics.yml +16 -1
- data/lib/starter_web/_data/modules/defaults/masterslider.yml +1 -1
- data/lib/starter_web/_data/modules/masterslider.yml +0 -4
- data/lib/starter_web/_data/modules/navigator_menu.yml +31 -25
- data/lib/starter_web/_includes/attributes.asciidoc +2 -0
- data/lib/starter_web/_plugins/lunr_index.rb +1 -1
- data/lib/starter_web/assets/images/modules/attics/1920x1280/ben-kolde.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/1920x1280/braden-collum.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/1920x1280/ev.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/1920x1280/firmbee-com.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/1920x1280/max-harlynking.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/guillaume-bolduc-1920x1280.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/spacex-1920x1280.jpg +0 -0
- data/lib/starter_web/assets/videos/headers/{still → present_videos/still}/underground-broadway.jpg +0 -0
- data/lib/starter_web/assets/videos/headers/present_videos/underground-broadway.mp4 +0 -0
- data/lib/starter_web/collections/asciidoc_skeletons/simple-post/_posts/yyyy-mm-dd-your-post-name.asciidoc +3 -1
- data/lib/starter_web/collections/posts/public/featured/_posts/2021-01-01-about-cookies.adoc +3 -0
- data/lib/starter_web/collections/posts/public/featured/_posts/2021-02-01-site-generators.adoc +2 -3
- data/lib/starter_web/collections/posts/public/featured/_posts/2022-02-01-about-j1.adoc +3 -0
- data/lib/starter_web/collections/posts/public/series/_posts/2020-01-01-post-wiki-series.adoc +3 -0
- data/lib/starter_web/collections/posts/public/series/_posts/2020-01-02-post-wiki-series.adoc +3 -0
- data/lib/starter_web/collections/posts/public/series/_posts/2020-01-03-post-wiki-series.adoc +3 -0
- data/lib/starter_web/index.html +41 -7
- data/lib/starter_web/package.json +2 -2
- data/lib/starter_web/pages/public/about/features.adoc +119 -0
- data/lib/starter_web/pages/public/about/reporting_issues.adoc +78 -0
- data/lib/starter_web/pages/public/about/{about_site.adoc → site.adoc} +20 -15
- data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/documentation.adoc +3 -0
- data/lib/starter_web/pages/public/asciidoc_skeletons/multi-document/multi.adoc +3 -0
- data/lib/starter_web/pages/public/asciidoc_skeletons/simple-document/simple.adoc +3 -0
- data/lib/starter_web/pages/public/blog/navigator/archive/categoryview.html +3 -0
- data/lib/starter_web/pages/public/blog/navigator/archive/dateview.html +4 -1
- data/lib/starter_web/pages/public/blog/navigator/archive/tagview.html +4 -1
- data/lib/starter_web/pages/public/blog/navigator/archive.html +4 -1
- data/lib/starter_web/pages/public/blog/navigator/index.html +4 -1
- data/lib/starter_web/pages/public/features/general.adoc +5 -1
- data/lib/starter_web/pages/public/features/template.adoc +4 -0
- data/lib/starter_web/pages/public/jupyter/examples/distributed/j1-circular-times-table.adoc +3 -0
- data/lib/starter_web/pages/public/jupyter/examples/distributed/j1-common-used-widgets.adoc +3 -0
- data/lib/starter_web/pages/public/jupyter/examples/distributed/j1-odes-in-python.adoc +3 -0
- data/lib/starter_web/pages/public/jupyter/examples/localized/j1_climate-change-forecast.adoc +3 -0
- data/lib/starter_web/pages/public/jupyter/notebooks/textbooks/j1_interactive_widgets.html +512 -512
- data/lib/starter_web/pages/public/jupyter/notebooks/textbooks/j1_nbi_widgets.html +629 -629
- data/lib/starter_web/pages/public/jupyter/notebooks/textbooks/j1_nbi_widgets_bar_chart.html +95 -95
- data/lib/starter_web/pages/public/jupyter/notebooks/textbooks/j1_nbi_widgets_hist_chart.html +93 -93
- data/lib/starter_web/pages/public/jupyter/notebooks/textbooks/j1_nbi_widgets_line_chart.html +96 -96
- data/lib/starter_web/pages/public/jupyter/notebooks/textbooks/j1_nbi_widgets_question_multiple_choice.html +70 -70
- data/lib/starter_web/pages/public/jupyter/notebooks/textbooks/j1_nbi_widgets_question_short_answer.html +156 -156
- data/lib/starter_web/pages/public/jupyter/notebooks/textbooks/j1_nbi_widgets_scatter_chart.html +95 -95
- data/lib/starter_web/pages/public/jupyter/notebooks/textbooks/j1_nbi_widgets_scatter_drag_chart.html +93 -93
- data/lib/starter_web/pages/public/jupyter/notebooks/textbooks/j1_odes_in_python.html +955 -955
- data/lib/starter_web/pages/public/learn/quickstart.adoc +4 -1
- data/lib/starter_web/pages/public/learn/roundtrip/100_present_images.adoc +4 -1
- data/lib/starter_web/pages/public/learn/roundtrip/100_present_videos.adoc +16 -5
- data/lib/starter_web/pages/public/learn/roundtrip/200_typography.adoc +3 -0
- data/lib/starter_web/pages/public/learn/roundtrip/300_icon_fonts.adoc +3 -0
- data/lib/starter_web/pages/public/learn/roundtrip/400_asciidoc_extensions.adoc +3 -0
- data/lib/starter_web/pages/public/learn/roundtrip/410_bs_modals_extentions.adoc +3 -0
- data/lib/starter_web/pages/public/learn/roundtrip/420_responsive_tables_extensions.adoc +3 -0
- data/lib/starter_web/pages/public/learn/roundtrip/500_themes.adoc +3 -0
- data/lib/starter_web/pages/public/learn/roundtrip/600_quicksearch.adoc +6 -2
- data/lib/starter_web/pages/public/learn/where_to_go.adoc +3 -0
- data/lib/starter_web/pages/public/legal/de/100_copyright.adoc +3 -0
- data/lib/starter_web/pages/public/legal/de/100_impress.adoc +3 -0
- data/lib/starter_web/pages/public/legal/de/300_privacy.adoc +3 -0
- data/lib/starter_web/pages/public/legal/de/400_comment_policy.adoc +3 -0
- data/lib/starter_web/pages/public/legal/en/100_copyright.adoc +9 -1
- data/lib/starter_web/pages/public/legal/en/200_impress.adoc +10 -2
- data/lib/starter_web/pages/public/legal/en/300_privacy.adoc +3 -0
- data/lib/starter_web/pages/public/legal/en/400_comment_policy.adoc +3 -0
- data/lib/starter_web/pages/public/panels/intro_panel/panel.adoc +3 -0
- data/lib/starter_web/pages/public/plans/plans.adoc +3 -0
- data/lib/starter_web/pages/public/previewer/preview_bootstrap_theme.adoc +4 -0
- data/lib/starter_web/pages/public/se/se-fake.adoc +4 -0
- data/lib/starter_web/utilsrv/_defaults/package.json +1 -1
- data/lib/starter_web/utilsrv/package.json +1 -1
- metadata +18 -365
- data/lib/starter_web/assets/videos/headers/still/victoria-oskolovich-on-vimeo.jpg +0 -0
- data/lib/starter_web/pages/public/_jupyter/docs/_includes/attributes.asciidoc +0 -67
- data/lib/starter_web/pages/public/_jupyter/docs/_includes/documents/j1_docs_example_static.asciidoc +0 -232
- data/lib/starter_web/pages/public/_jupyter/docs/binderhub.adoc +0 -631
- data/lib/starter_web/pages/public/_jupyter/docs/j1-nbinteract.adoc +0 -638
- data/lib/starter_web/pages/public/_jupyter/docs/jupyterhub.adoc +0 -248
- data/lib/starter_web/pages/public/_jupyter/docs/nbinteract-widget-manual.adoc +0 -928
- data/lib/starter_web/pages/public/_jupyter/examples/distributed/j1-circular-times-table.adoc +0 -139
- data/lib/starter_web/pages/public/_jupyter/examples/distributed/j1-common-used-widgets.adoc +0 -229
- data/lib/starter_web/pages/public/_jupyter/examples/distributed/j1-odes-in-python.adoc +0 -112
- data/lib/starter_web/pages/public/_jupyter/examples/localized/j1-altair/j1-altair-visualisations.adoc +0 -142
- data/lib/starter_web/pages/public/_jupyter/examples/localized/j1-bokeh/j1-bokeh-visualisations.adoc +0 -171
- data/lib/starter_web/pages/public/_jupyter/examples/localized/j1-bokeh/j1-bqplot-eamples.adoc +0 -111
- data/lib/starter_web/pages/public/_jupyter/examples/localized/j1-plotly/j1-plotly-visualisations.adoc +0 -94
- data/lib/starter_web/pages/public/_jupyter/examples/localized/j1_climate-change-forecast.adoc +0 -106
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_altair_interactive-checkpoint.ipynb +0 -16260
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_bgplot_line_plot-checkpoint.ipynb +0 -247
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_circular_times_table-Copy1-checkpoint.ipynb +0 -12382
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_circular_times_table-checkpoint.ipynb +0 -12387
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_circular_times_table-short-checkpoint.ipynb +0 -12170
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_climate_change_forecast-checkpoint.ipynb +0 -1058
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_docs_example_dynamic-checkpoint.ipynb +0 -14478
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_interactive_widgets-Copy1-checkpoint.ipynb +0 -379
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_interactive_widgets-checkpoint.ipynb +0 -442
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets-checkpoint.ipynb +0 -523
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets.line_charts-checkpoint.ipynb +0 -84
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets.questions-checkpoint.ipynb +0 -194
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets_bar_chart-checkpoint.ipynb +0 -89
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets_bar_charts-Copy1-checkpoint.ipynb +0 -164
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets_bar_charts-checkpoint.ipynb +0 -173
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets_bar_charts.1-checkpoint.ipynb +0 -256
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets_barcharts-checkpoint.ipynb +0 -126
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets_hist_chart-checkpoint.ipynb +0 -87
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets_line_chart-checkpoint.ipynb +0 -90
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets_line_charts-checkpoint.ipynb +0 -87
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets_question_multiple_choice-checkpoint.ipynb +0 -64
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets_question_short_answer-checkpoint.ipynb +0 -122
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets_questions-checkpoint.ipynb +0 -181
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets_scatter_chart-checkpoint.ipynb +0 -89
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets_scatter_charts-checkpoint.ipynb +0 -175
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets_scatter_drag_chart-checkpoint.ipynb +0 -87
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_ode_selected-checkpoint.ipynb +0 -14478
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_odes_in_python-checkpoint.ipynb +0 -15227
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/factor_by_factor.mp4 +0 -0
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/j1_circular_times_table.ipynb +0 -12382
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/j1_climate_change_forecast.ipynb +0 -1058
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/j1_docs_example_dynamic.ipynb +0 -14478
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/j1_interactive_widgets.ipynb +0 -442
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/j1_nbi_widgets.ipynb +0 -523
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/j1_nbi_widgets_bar_chart.ipynb +0 -89
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/j1_nbi_widgets_hist_chart.ipynb +0 -87
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/j1_nbi_widgets_line_chart.ipynb +0 -90
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/j1_nbi_widgets_question_multiple_choice.ipynb +0 -64
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/j1_nbi_widgets_question_short_answer.ipynb +0 -122
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/j1_nbi_widgets_scatter_chart.ipynb +0 -89
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/j1_nbi_widgets_scatter_drag_chart.ipynb +0 -87
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/j1_odes_in_python.ipynb +0 -15227
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/line_by_line.mp4 +0 -0
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/point_by_point.mp4 +0 -0
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-altair-tutorial/.ipynb_checkpoints/j1_altair_interactive-checkpoint.ipynb +0 -16296
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-altair-tutorial/.ipynb_checkpoints/j1_altair_non_interactive-checkpoint.ipynb +0 -15385
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-altair-tutorial/j1_altair_interactive.ipynb +0 -16296
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-altair-tutorial/j1_altair_non_interactive.ipynb +0 -15385
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/00 - Introduction and Setup-checkpoint.ipynb +0 -717
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/01 - Basic Plotting-checkpoint.ipynb +0 -1381
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/02 - Styling and Theming-checkpoint.ipynb +0 -1440
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/03 - Data Sources and Transformations-checkpoint.ipynb +0 -927
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/04 - Adding Annotations-checkpoint.ipynb +0 -1105
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/05 - Presentation Layouts-checkpoint.ipynb +0 -578
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/06 - Linking and Interactions-checkpoint.ipynb +0 -1196
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/07 - Bar and Categorical Data Plots-checkpoint.ipynb +0 -1681
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/08 - Graph and Network Plots-checkpoint.ipynb +0 -680
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/09 - Geographic Plots-checkpoint.ipynb +0 -693
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/10 - Exporting and Embedding-checkpoint.ipynb +0 -751
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/11 - Running Bokeh Applications-checkpoint.ipynb +0 -770
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/bokeh_tut_00_introduction_and_setup-checkpoint.ipynb +0 -666
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/j1_bokeh_01_basic_plotting-checkpoint.ipynb +0 -1365
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/j1_bokeh_02_styling_and_theming-checkpoint.ipynb +0 -1405
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/j1_bokeh_03_data_sources_and_transformations-checkpoint.ipynb +0 -856
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/j1_bokeh_04_adding_annotations-checkpoint.ipynb +0 -1167
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/j1_bokeh_05_presentation_layouts-checkpoint.ipynb +0 -601
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/j1_bokeh_06_linking_and_interactions-checkpoint.ipynb +0 -1356
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/j1_bokeh_07_bar_and_categorical_data_plots-checkpoint.ipynb +0 -1742
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/j1_bokeh_08_graph_and_network_plots-checkpoint.ipynb +0 -625
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/j1_bokeh_09_geographic_plots-checkpoint.ipynb +0 -685
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/j1_bokeh_10_exporting_and_embedding-checkpoint.ipynb +0 -726
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/j1_bokeh_10_exporting_and_embedding-checkpoint.org +0 -726
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/j1_bokeh_10_exporting_and_embedding.new-checkpoint.ipynb +0 -560
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/j1_bokeh_11_running_bokeh_applications-checkpoint.ipynb +0 -716
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/j1_bokeh_01_basic_plotting.ipynb +0 -1365
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/j1_bokeh_02_styling_and_theming.ipynb +0 -1405
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/j1_bokeh_03_data_sources_and_transformations.ipynb +0 -856
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/j1_bokeh_04_adding_annotations.ipynb +0 -1167
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/j1_bokeh_05_presentation_layouts.ipynb +0 -601
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/j1_bokeh_06_linking_and_interactions.ipynb +0 -1356
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/j1_bokeh_07_bar_and_categorical_data_plots.ipynb +0 -1742
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/j1_bokeh_08_graph_and_network_plots.ipynb +0 -625
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/j1_bokeh_09_geographic_plots.ipynb +0 -685
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bqplot/.ipynb_checkpoints/j1_mathplot_vs_bqplot-checkpoint.ipynb +0 -336
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bqplot/advanced/Feature_Vector_Distribution-Iris-Digits.ipynb +0 -433
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bqplot/j1_bgplot_line_plot.ipynb +0 -244
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bqplot/j1_circular_times_table-short.ipynb +0 -12170
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bqplot/j1_mathplot_vs_bqplot.ipynb +0 -336
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/.ipynb_checkpoints/Index-checkpoint.ipynb +0 -163
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/.ipynb_checkpoints/Tutorials-checkpoint.ipynb +0 -51
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Advanced Plotting/Advanced Plotting.ipynb +0 -289
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Advanced Plotting/Animations.ipynb +0 -266
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Advanced Plotting/Axis Properties.ipynb +0 -396
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Advanced Plotting/Plotting Dates.ipynb +0 -318
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Applications/Equity Index Performance/Time Series.ipynb +0 -158
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Applications/Equity Index Performance/spx_prices.csv +0 -6799
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Applications/Feature_Vector_Distribution-Iris-Digits.ipynb +0 -470
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Applications/Index.ipynb +0 -49
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Applications/Logs Analytics/Logs Dashboard.ipynb +0 -378
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Applications/Mobile Patent Suits.ipynb +0 -123
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Applications/Neural Network.ipynb +0 -177
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Applications/Outlier Detection.ipynb +0 -311
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Applications/Wealth Of Nations/Bubble Chart.ipynb +0 -255
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Applications/Wealth Of Nations/Choropleth.ipynb +0 -275
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Applications/Wealth Of Nations/nations.json +0 -1
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Applications/Wealth Of Nations/world_map_codes.csv +0 -234
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Basic Plotting/.ipynb_checkpoints/Basic Plotting-checkpoint.ipynb +0 -186
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Basic Plotting/.ipynb_checkpoints/Pyplot-checkpoint.ipynb +0 -794
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Basic Plotting/.ipynb_checkpoints/Untitled-checkpoint.ipynb +0 -323
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Basic Plotting/Basic Plotting.ipynb +0 -261
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Basic Plotting/Pyplot.ipynb +0 -1489
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Index.ipynb +0 -163
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Interactions/Interaction Layer.ipynb +0 -966
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Interactions/Mark Interactions.ipynb +0 -476
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Interactions/Selectors.ipynb +0 -427
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Introduction.ipynb +0 -528
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/Bars.ipynb +0 -480
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/Bins.ipynb +0 -217
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/Boxplot.ipynb +0 -253
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/Candles.ipynb +0 -225
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/FlexLine.ipynb +0 -123
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/Graph.ipynb +0 -357
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/GridHeatMap.ipynb +0 -422
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/HeatMap.ipynb +0 -157
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/Hist.ipynb +0 -176
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/Image.ipynb +0 -195
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/Label.ipynb +0 -189
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/Lines.ipynb +0 -565
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/Map.ipynb +0 -182
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/Market Map.ipynb +0 -315
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/Pie.ipynb +0 -465
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/Scatter.ipynb +0 -835
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Pyplot/Bars.ipynb +0 -362
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Pyplot/Bins.ipynb +0 -252
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Pyplot/Boxplot.ipynb +0 -273
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Pyplot/Candles.ipynb +0 -242
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Pyplot/GridHeatMap.ipynb +0 -417
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Pyplot/HeatMap.ipynb +0 -155
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Pyplot/Hist.ipynb +0 -238
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Pyplot/Image.ipynb +0 -152
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Pyplot/Label.ipynb +0 -206
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Pyplot/Lines.ipynb +0 -474
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Pyplot/Map.ipynb +0 -181
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Pyplot/Pie.ipynb +0 -310
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Pyplot/Scatter.ipynb +0 -702
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Scales/Color Scales.ipynb +0 -495
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Tutorials/.ipynb_checkpoints/Feature_Vector_Distribution-Iris-Digits-checkpoint.ipynb +0 -433
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Tutorials/.ipynb_checkpoints/Linking Plots With Widgets-checkpoint.ipynb +0 -326
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Tutorials/.ipynb_checkpoints/Updating Plots-Copy1-checkpoint.ipynb +0 -177
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Tutorials/.ipynb_checkpoints/Updating Plots-checkpoint.ipynb +0 -177
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Tutorials/Brush Interval Selector.ipynb +0 -154
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Tutorials/Fast Interval Selector.ipynb +0 -152
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Tutorials/Gaussian Density Widget.ipynb +0 -128
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Tutorials/Gaussian Density.ipynb +0 -113
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Tutorials/Linking Plots With Widgets.ipynb +0 -326
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Tutorials/Object Model.ipynb +0 -179
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Tutorials/Pyplot.ipynb +0 -174
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Tutorials/Updating Plots.ipynb +0 -177
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Tutorials.ipynb +0 -51
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/data_files/country_codes.csv +0 -213
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/data_files/gdp_per_capita.csv +0 -56
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/data_files/state_codes.csv +0 -52
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/data_files/trees.jpg +0 -0
- data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/.ipynb_checkpoints/nbi_docs_examples_central_limit_theorem-checkpoint.ipynb +0 -247
- data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/.ipynb_checkpoints/nbi_docs_examples_variability_of_the_sample_mean-checkpoint.ipynb +0 -323
- data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/.ipynb_checkpoints/nbi_docs_recipes_graphing-checkpoint.ipynb +0 -387
- data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/.ipynb_checkpoints/nbi_docs_recipes_interactive_questions-checkpoint.ipynb +0 -185
- data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/.ipynb_checkpoints/nbi_docs_recipes_layout-checkpoint.ipynb +0 -384
- data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/.ipynb_checkpoints/nbi_docs_tutorial_interact-checkpoint.ipynb +0 -254
- data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/.ipynb_checkpoints/nbi_docs_tutorial_monty_hall-checkpoint.ipynb +0 -732
- data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/nbi_docs_examples_central_limit_theorem.ipynb +0 -247
- data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/nbi_docs_examples_correlation.ipynb +0 -651
- data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/nbi_docs_examples_empirical_distributions.ipynb +0 -773
- data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/nbi_docs_examples_linear_regression.ipynb +0 -111
- data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/nbi_docs_examples_probability_distribution_plots.ipynb +0 -199
- data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/nbi_docs_examples_sampling_from_a_population.ipynb +0 -421
- data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/nbi_docs_examples_variability_of_the_sample_mean.ipynb +0 -323
- data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/nbi_docs_recipes_graphing.ipynb +0 -387
- data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/nbi_docs_recipes_interactive_questions.ipynb +0 -185
- data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/nbi_docs_recipes_layout.ipynb +0 -384
- data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/nbi_docs_tutorial_interact.ipynb +0 -254
- data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/nbi_docs_tutorial_monty_hall.ipynb +0 -732
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Advanced Plotting.html +0 -373
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Animations.html +0 -361
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Axis Properties.html +0 -569
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Bars.html +0 -487
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Basic Plotting.html +0 -341
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Bins.html +0 -259
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Boxplot.html +0 -277
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Brush Interval Selector.html +0 -182
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Bubble Chart.html +0 -299
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Candles.html +0 -252
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Choropleth.html +0 -318
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Color Scales.html +0 -514
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Fast Interval Selector.html +0 -182
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Feature_Vector_Distribution-Iris-Digits.html +0 -479
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/FlexLine.html +0 -128
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Gaussian Density Widget.html +0 -152
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Gaussian Density.html +0 -137
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Graph.html +0 -484
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/GridHeatMap.html +0 -483
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/HeatMap.html +0 -170
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Hist.html +0 -349
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Image.html +0 -177
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Index.html +0 -29
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Interaction Layer.html +0 -1372
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Introduction.html +0 -749
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Label.html +0 -268
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Lines.html +0 -704
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Linking Plots With Widgets.html +0 -389
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Logs Dashboard.html +0 -455
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Map.html +0 -229
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Mark Interactions.html +0 -613
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Market Map.html +0 -413
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Mobile Patent Suits.html +0 -131
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Neural Network.html +0 -190
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Object Model.html +0 -193
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Outlier Detection.html +0 -363
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Pie.html +0 -367
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Plotting Dates.html +0 -337
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Pyplot.html +0 -196
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Scatter.html +0 -948
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Selectors.html +0 -489
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Time Series.html +0 -173
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Tutorials.html +0 -40
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Updating Plots.html +0 -228
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_altair_interactive.html +0 -2216
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_altair_non_interactive.html +0 -1170
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_bgplot_line_plot.html +0 -318
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_bokeh_01_basic_plotting.html +0 -1479
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_bokeh_02_styling_and_theming.html +0 -1524
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_bokeh_03_data_sources_and_transformations.html +0 -983
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_bokeh_04_adding_annotations.html +0 -1280
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_bokeh_05_presentation_layouts.html +0 -660
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_bokeh_06_linking_and_interactions.html +0 -1563
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_bokeh_07_bar_and_categorical_data_plots.html +0 -1888
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_bokeh_08_graph_and_network_plots.html +0 -689
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_bokeh_09_geographic_plots.html +0 -767
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_circular_times_table-short.html +0 -475
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_circular_times_table.html +0 -747
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_climate_change_forecast.html +0 -1250
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_docs_example_dynamic.html +0 -186
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_interactive_widgets.html +0 -512
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_mathplot_vs_bqplot.html +0 -407
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_nbi_widgets.html +0 -629
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_nbi_widgets_bar_chart.html +0 -95
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_nbi_widgets_hist_chart.html +0 -93
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_nbi_widgets_line_chart.html +0 -96
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_nbi_widgets_question_multiple_choice.html +0 -70
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_nbi_widgets_question_short_answer.html +0 -156
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_nbi_widgets_scatter_chart.html +0 -95
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_nbi_widgets_scatter_drag_chart.html +0 -93
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_odes_in_python.html +0 -955
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/nbi_docs_examples_central_limit_theorem.html +0 -290
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/nbi_docs_examples_correlation.html +0 -818
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/nbi_docs_examples_empirical_distributions.html +0 -351
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/nbi_docs_examples_linear_regression.html +0 -106
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/nbi_docs_examples_probability_distribution_plots.html +0 -228
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/nbi_docs_examples_sampling_from_a_population.html +0 -518
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/nbi_docs_examples_variability_of_the_sample_mean.html +0 -372
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/nbi_docs_recipes_graphing.html +0 -473
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/nbi_docs_recipes_interactive_questions.html +0 -242
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/nbi_docs_recipes_layout.html +0 -496
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/nbi_docs_tutorial_interact.html +0 -329
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/nbi_docs_tutorial_monty_hall.html +0 -866
- data/lib/starter_web/pages/public/_jupyter/where_to_go.adoc +0 -270
- data/lib/starter_web/pages/public/learn/_roundtrip/100_present_images.adoc +0 -313
- data/lib/starter_web/pages/public/learn/_roundtrip/100_present_videos.adoc +0 -281
- data/lib/starter_web/pages/public/learn/_roundtrip/200_typography.adoc +0 -253
- data/lib/starter_web/pages/public/learn/_roundtrip/300_icon_fonts.adoc +0 -579
- data/lib/starter_web/pages/public/learn/_roundtrip/400_asciidoc_extensions.adoc +0 -718
- data/lib/starter_web/pages/public/learn/_roundtrip/410_bs_modals_extentions.adoc +0 -91
- data/lib/starter_web/pages/public/learn/_roundtrip/420_responsive_tables_extensions.adoc +0 -420
- data/lib/starter_web/pages/public/learn/_roundtrip/500_themes.adoc +0 -250
- data/lib/starter_web/pages/public/learn/_roundtrip/600_quicksearch.adoc +0 -425
- data/lib/starter_web/pages/public/learn/_roundtrip/_includes/attributes.asciidoc +0 -118
- data/lib/starter_web/pages/public/learn/_roundtrip/_includes/documents/100_gistblock.asciidoc +0 -28
- data/lib/starter_web/pages/public/learn/_roundtrip/_includes/documents/410_bottom_info.asciidoc +0 -14
- data/lib/starter_web/pages/public/learn/_roundtrip/_includes/documents/410_bottom_left_warning.asciidoc +0 -11
- data/lib/starter_web/pages/public/learn/_roundtrip/_includes/documents/410_bottom_right_danger.asciidoc +0 -11
- data/lib/starter_web/pages/public/learn/_roundtrip/_includes/documents/410_central_success.asciidoc +0 -11
- data/lib/starter_web/pages/public/learn/_roundtrip/_includes/documents/410_full_height_left_info.asciidoc +0 -11
- data/lib/starter_web/pages/public/learn/_roundtrip/_includes/documents/410_full_height_right_success.asciidoc +0 -11
- data/lib/starter_web/pages/public/learn/_roundtrip/_includes/documents/410_table_bs_modal_examples.asciidoc +0 -47
- data/lib/starter_web/pages/public/learn/_roundtrip/_includes/documents/410_top_info.asciidoc +0 -11
- data/lib/starter_web/pages/public/learn/_roundtrip/_includes/documents/410_top_left_info.asciidoc +0 -11
- data/lib/starter_web/pages/public/learn/_roundtrip/_includes/documents/410_top_right_success.asciidoc +0 -11
- data/lib/starter_web/pages/public/learn/_roundtrip/_includes/documents/419_advanced_modals_demo.asciidoc +0 -337
- data/lib/starter_web/pages/public/learn/_roundtrip/_includes/documents/tables/bs_modal_examples.asciidoc +0 -47
- data/lib/starter_web/pages/public/learn/_roundtrip/_includes/google-ad.js +0 -130
@@ -1,1105 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"cells": [
|
3
|
-
{
|
4
|
-
"cell_type": "markdown",
|
5
|
-
"metadata": {},
|
6
|
-
"source": [
|
7
|
-
"<table style=\"float:left; border:none\">\n",
|
8
|
-
" <tr style=\"border:none\">\n",
|
9
|
-
" <td style=\"border:none\">\n",
|
10
|
-
" <a href=\"https://bokeh.org/\"> \n",
|
11
|
-
" <img \n",
|
12
|
-
" src=\"assets/bokeh-transparent.png\" \n",
|
13
|
-
" style=\"width:50px\"\n",
|
14
|
-
" >\n",
|
15
|
-
" </a> \n",
|
16
|
-
" </td>\n",
|
17
|
-
" <td style=\"border:none\">\n",
|
18
|
-
" <h1>Bokeh Tutorial</h1>\n",
|
19
|
-
" </td>\n",
|
20
|
-
" </tr>\n",
|
21
|
-
"</table>\n",
|
22
|
-
"\n",
|
23
|
-
"<div style=\"float:right;\"><h2>04. Adding Annotations</h2></div>"
|
24
|
-
]
|
25
|
-
},
|
26
|
-
{
|
27
|
-
"cell_type": "code",
|
28
|
-
"execution_count": 1,
|
29
|
-
"metadata": {},
|
30
|
-
"outputs": [],
|
31
|
-
"source": [
|
32
|
-
"from bokeh.io import output_notebook, show\n",
|
33
|
-
"from bokeh.plotting import figure"
|
34
|
-
]
|
35
|
-
},
|
36
|
-
{
|
37
|
-
"cell_type": "code",
|
38
|
-
"execution_count": 2,
|
39
|
-
"metadata": {},
|
40
|
-
"outputs": [
|
41
|
-
{
|
42
|
-
"data": {
|
43
|
-
"text/html": [
|
44
|
-
"<div class=\"bk-root\">\n",
|
45
|
-
" <a href=\"https://bokeh.org\" target=\"_blank\" class=\"bk-logo bk-logo-small bk-logo-notebook\"></a>\n",
|
46
|
-
" <span id=\"1002\">Loading BokehJS ...</span>\n",
|
47
|
-
" </div>\n"
|
48
|
-
]
|
49
|
-
},
|
50
|
-
"metadata": {},
|
51
|
-
"output_type": "display_data"
|
52
|
-
},
|
53
|
-
{
|
54
|
-
"data": {
|
55
|
-
"application/javascript": [
|
56
|
-
"(function(root) {\n",
|
57
|
-
" function now() {\n",
|
58
|
-
" return new Date();\n",
|
59
|
-
" }\n",
|
60
|
-
"\n",
|
61
|
-
" const force = true;\n",
|
62
|
-
"\n",
|
63
|
-
" if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n",
|
64
|
-
" root._bokeh_onload_callbacks = [];\n",
|
65
|
-
" root._bokeh_is_loading = undefined;\n",
|
66
|
-
" }\n",
|
67
|
-
"\n",
|
68
|
-
"const JS_MIME_TYPE = 'application/javascript';\n",
|
69
|
-
" const HTML_MIME_TYPE = 'text/html';\n",
|
70
|
-
" const EXEC_MIME_TYPE = 'application/vnd.bokehjs_exec.v0+json';\n",
|
71
|
-
" const CLASS_NAME = 'output_bokeh rendered_html';\n",
|
72
|
-
"\n",
|
73
|
-
" /**\n",
|
74
|
-
" * Render data to the DOM node\n",
|
75
|
-
" */\n",
|
76
|
-
" function render(props, node) {\n",
|
77
|
-
" const script = document.createElement(\"script\");\n",
|
78
|
-
" node.appendChild(script);\n",
|
79
|
-
" }\n",
|
80
|
-
"\n",
|
81
|
-
" /**\n",
|
82
|
-
" * Handle when an output is cleared or removed\n",
|
83
|
-
" */\n",
|
84
|
-
" function handleClearOutput(event, handle) {\n",
|
85
|
-
" const cell = handle.cell;\n",
|
86
|
-
"\n",
|
87
|
-
" const id = cell.output_area._bokeh_element_id;\n",
|
88
|
-
" const server_id = cell.output_area._bokeh_server_id;\n",
|
89
|
-
" // Clean up Bokeh references\n",
|
90
|
-
" if (id != null && id in Bokeh.index) {\n",
|
91
|
-
" Bokeh.index[id].model.document.clear();\n",
|
92
|
-
" delete Bokeh.index[id];\n",
|
93
|
-
" }\n",
|
94
|
-
"\n",
|
95
|
-
" if (server_id !== undefined) {\n",
|
96
|
-
" // Clean up Bokeh references\n",
|
97
|
-
" const cmd_clean = \"from bokeh.io.state import curstate; print(curstate().uuid_to_server['\" + server_id + \"'].get_sessions()[0].document.roots[0]._id)\";\n",
|
98
|
-
" cell.notebook.kernel.execute(cmd_clean, {\n",
|
99
|
-
" iopub: {\n",
|
100
|
-
" output: function(msg) {\n",
|
101
|
-
" const id = msg.content.text.trim();\n",
|
102
|
-
" if (id in Bokeh.index) {\n",
|
103
|
-
" Bokeh.index[id].model.document.clear();\n",
|
104
|
-
" delete Bokeh.index[id];\n",
|
105
|
-
" }\n",
|
106
|
-
" }\n",
|
107
|
-
" }\n",
|
108
|
-
" });\n",
|
109
|
-
" // Destroy server and session\n",
|
110
|
-
" const cmd_destroy = \"import bokeh.io.notebook as ion; ion.destroy_server('\" + server_id + \"')\";\n",
|
111
|
-
" cell.notebook.kernel.execute(cmd_destroy);\n",
|
112
|
-
" }\n",
|
113
|
-
" }\n",
|
114
|
-
"\n",
|
115
|
-
" /**\n",
|
116
|
-
" * Handle when a new output is added\n",
|
117
|
-
" */\n",
|
118
|
-
" function handleAddOutput(event, handle) {\n",
|
119
|
-
" const output_area = handle.output_area;\n",
|
120
|
-
" const output = handle.output;\n",
|
121
|
-
"\n",
|
122
|
-
" // limit handleAddOutput to display_data with EXEC_MIME_TYPE content only\n",
|
123
|
-
" if ((output.output_type != \"display_data\") || (!Object.prototype.hasOwnProperty.call(output.data, EXEC_MIME_TYPE))) {\n",
|
124
|
-
" return\n",
|
125
|
-
" }\n",
|
126
|
-
"\n",
|
127
|
-
" const toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n",
|
128
|
-
"\n",
|
129
|
-
" if (output.metadata[EXEC_MIME_TYPE][\"id\"] !== undefined) {\n",
|
130
|
-
" toinsert[toinsert.length - 1].firstChild.textContent = output.data[JS_MIME_TYPE];\n",
|
131
|
-
" // store reference to embed id on output_area\n",
|
132
|
-
" output_area._bokeh_element_id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n",
|
133
|
-
" }\n",
|
134
|
-
" if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n",
|
135
|
-
" const bk_div = document.createElement(\"div\");\n",
|
136
|
-
" bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n",
|
137
|
-
" const script_attrs = bk_div.children[0].attributes;\n",
|
138
|
-
" for (let i = 0; i < script_attrs.length; i++) {\n",
|
139
|
-
" toinsert[toinsert.length - 1].firstChild.setAttribute(script_attrs[i].name, script_attrs[i].value);\n",
|
140
|
-
" toinsert[toinsert.length - 1].firstChild.textContent = bk_div.children[0].textContent\n",
|
141
|
-
" }\n",
|
142
|
-
" // store reference to server id on output_area\n",
|
143
|
-
" output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n",
|
144
|
-
" }\n",
|
145
|
-
" }\n",
|
146
|
-
"\n",
|
147
|
-
" function register_renderer(events, OutputArea) {\n",
|
148
|
-
"\n",
|
149
|
-
" function append_mime(data, metadata, element) {\n",
|
150
|
-
" // create a DOM node to render to\n",
|
151
|
-
" const toinsert = this.create_output_subarea(\n",
|
152
|
-
" metadata,\n",
|
153
|
-
" CLASS_NAME,\n",
|
154
|
-
" EXEC_MIME_TYPE\n",
|
155
|
-
" );\n",
|
156
|
-
" this.keyboard_manager.register_events(toinsert);\n",
|
157
|
-
" // Render to node\n",
|
158
|
-
" const props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n",
|
159
|
-
" render(props, toinsert[toinsert.length - 1]);\n",
|
160
|
-
" element.append(toinsert);\n",
|
161
|
-
" return toinsert\n",
|
162
|
-
" }\n",
|
163
|
-
"\n",
|
164
|
-
" /* Handle when an output is cleared or removed */\n",
|
165
|
-
" events.on('clear_output.CodeCell', handleClearOutput);\n",
|
166
|
-
" events.on('delete.Cell', handleClearOutput);\n",
|
167
|
-
"\n",
|
168
|
-
" /* Handle when a new output is added */\n",
|
169
|
-
" events.on('output_added.OutputArea', handleAddOutput);\n",
|
170
|
-
"\n",
|
171
|
-
" /**\n",
|
172
|
-
" * Register the mime type and append_mime function with output_area\n",
|
173
|
-
" */\n",
|
174
|
-
" OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n",
|
175
|
-
" /* Is output safe? */\n",
|
176
|
-
" safe: true,\n",
|
177
|
-
" /* Index of renderer in `output_area.display_order` */\n",
|
178
|
-
" index: 0\n",
|
179
|
-
" });\n",
|
180
|
-
" }\n",
|
181
|
-
"\n",
|
182
|
-
" // register the mime type if in Jupyter Notebook environment and previously unregistered\n",
|
183
|
-
" if (root.Jupyter !== undefined) {\n",
|
184
|
-
" const events = require('base/js/events');\n",
|
185
|
-
" const OutputArea = require('notebook/js/outputarea').OutputArea;\n",
|
186
|
-
"\n",
|
187
|
-
" if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n",
|
188
|
-
" register_renderer(events, OutputArea);\n",
|
189
|
-
" }\n",
|
190
|
-
" }\n",
|
191
|
-
" if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n",
|
192
|
-
" root._bokeh_timeout = Date.now() + 5000;\n",
|
193
|
-
" root._bokeh_failed_load = false;\n",
|
194
|
-
" }\n",
|
195
|
-
"\n",
|
196
|
-
" const NB_LOAD_WARNING = {'data': {'text/html':\n",
|
197
|
-
" \"<div style='background-color: #fdd'>\\n\"+\n",
|
198
|
-
" \"<p>\\n\"+\n",
|
199
|
-
" \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n",
|
200
|
-
" \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n",
|
201
|
-
" \"</p>\\n\"+\n",
|
202
|
-
" \"<ul>\\n\"+\n",
|
203
|
-
" \"<li>re-rerun `output_notebook()` to attempt to load from CDN again, or</li>\\n\"+\n",
|
204
|
-
" \"<li>use INLINE resources instead, as so:</li>\\n\"+\n",
|
205
|
-
" \"</ul>\\n\"+\n",
|
206
|
-
" \"<code>\\n\"+\n",
|
207
|
-
" \"from bokeh.resources import INLINE\\n\"+\n",
|
208
|
-
" \"output_notebook(resources=INLINE)\\n\"+\n",
|
209
|
-
" \"</code>\\n\"+\n",
|
210
|
-
" \"</div>\"}};\n",
|
211
|
-
"\n",
|
212
|
-
" function display_loaded() {\n",
|
213
|
-
" const el = document.getElementById(\"1002\");\n",
|
214
|
-
" if (el != null) {\n",
|
215
|
-
" el.textContent = \"BokehJS is loading...\";\n",
|
216
|
-
" }\n",
|
217
|
-
" if (root.Bokeh !== undefined) {\n",
|
218
|
-
" if (el != null) {\n",
|
219
|
-
" el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n",
|
220
|
-
" }\n",
|
221
|
-
" } else if (Date.now() < root._bokeh_timeout) {\n",
|
222
|
-
" setTimeout(display_loaded, 100)\n",
|
223
|
-
" }\n",
|
224
|
-
" }\n",
|
225
|
-
"\n",
|
226
|
-
" function run_callbacks() {\n",
|
227
|
-
" try {\n",
|
228
|
-
" root._bokeh_onload_callbacks.forEach(function(callback) {\n",
|
229
|
-
" if (callback != null)\n",
|
230
|
-
" callback();\n",
|
231
|
-
" });\n",
|
232
|
-
" } finally {\n",
|
233
|
-
" delete root._bokeh_onload_callbacks\n",
|
234
|
-
" }\n",
|
235
|
-
" console.debug(\"Bokeh: all callbacks have finished\");\n",
|
236
|
-
" }\n",
|
237
|
-
"\n",
|
238
|
-
" function load_libs(css_urls, js_urls, callback) {\n",
|
239
|
-
" if (css_urls == null) css_urls = [];\n",
|
240
|
-
" if (js_urls == null) js_urls = [];\n",
|
241
|
-
"\n",
|
242
|
-
" root._bokeh_onload_callbacks.push(callback);\n",
|
243
|
-
" if (root._bokeh_is_loading > 0) {\n",
|
244
|
-
" console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n",
|
245
|
-
" return null;\n",
|
246
|
-
" }\n",
|
247
|
-
" if (js_urls == null || js_urls.length === 0) {\n",
|
248
|
-
" run_callbacks();\n",
|
249
|
-
" return null;\n",
|
250
|
-
" }\n",
|
251
|
-
" console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n",
|
252
|
-
" root._bokeh_is_loading = css_urls.length + js_urls.length;\n",
|
253
|
-
"\n",
|
254
|
-
" function on_load() {\n",
|
255
|
-
" root._bokeh_is_loading--;\n",
|
256
|
-
" if (root._bokeh_is_loading === 0) {\n",
|
257
|
-
" console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n",
|
258
|
-
" run_callbacks()\n",
|
259
|
-
" }\n",
|
260
|
-
" }\n",
|
261
|
-
"\n",
|
262
|
-
" function on_error(url) {\n",
|
263
|
-
" console.error(\"failed to load \" + url);\n",
|
264
|
-
" }\n",
|
265
|
-
"\n",
|
266
|
-
" for (let i = 0; i < css_urls.length; i++) {\n",
|
267
|
-
" const url = css_urls[i];\n",
|
268
|
-
" const element = document.createElement(\"link\");\n",
|
269
|
-
" element.onload = on_load;\n",
|
270
|
-
" element.onerror = on_error.bind(null, url);\n",
|
271
|
-
" element.rel = \"stylesheet\";\n",
|
272
|
-
" element.type = \"text/css\";\n",
|
273
|
-
" element.href = url;\n",
|
274
|
-
" console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n",
|
275
|
-
" document.body.appendChild(element);\n",
|
276
|
-
" }\n",
|
277
|
-
"\n",
|
278
|
-
" for (let i = 0; i < js_urls.length; i++) {\n",
|
279
|
-
" const url = js_urls[i];\n",
|
280
|
-
" const element = document.createElement('script');\n",
|
281
|
-
" element.onload = on_load;\n",
|
282
|
-
" element.onerror = on_error.bind(null, url);\n",
|
283
|
-
" element.async = false;\n",
|
284
|
-
" element.src = url;\n",
|
285
|
-
" console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n",
|
286
|
-
" document.head.appendChild(element);\n",
|
287
|
-
" }\n",
|
288
|
-
" };\n",
|
289
|
-
"\n",
|
290
|
-
" function inject_raw_css(css) {\n",
|
291
|
-
" const element = document.createElement(\"style\");\n",
|
292
|
-
" element.appendChild(document.createTextNode(css));\n",
|
293
|
-
" document.body.appendChild(element);\n",
|
294
|
-
" }\n",
|
295
|
-
"\n",
|
296
|
-
" const js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-2.4.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-2.4.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.4.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.4.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-2.4.3.min.js\"];\n",
|
297
|
-
" const css_urls = [];\n",
|
298
|
-
"\n",
|
299
|
-
" const inline_js = [ function(Bokeh) {\n",
|
300
|
-
" Bokeh.set_log_level(\"info\");\n",
|
301
|
-
" },\n",
|
302
|
-
"function(Bokeh) {\n",
|
303
|
-
" }\n",
|
304
|
-
" ];\n",
|
305
|
-
"\n",
|
306
|
-
" function run_inline_js() {\n",
|
307
|
-
" if (root.Bokeh !== undefined || force === true) {\n",
|
308
|
-
" for (let i = 0; i < inline_js.length; i++) {\n",
|
309
|
-
" inline_js[i].call(root, root.Bokeh);\n",
|
310
|
-
" }\n",
|
311
|
-
"if (force === true) {\n",
|
312
|
-
" display_loaded();\n",
|
313
|
-
" }} else if (Date.now() < root._bokeh_timeout) {\n",
|
314
|
-
" setTimeout(run_inline_js, 100);\n",
|
315
|
-
" } else if (!root._bokeh_failed_load) {\n",
|
316
|
-
" console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n",
|
317
|
-
" root._bokeh_failed_load = true;\n",
|
318
|
-
" } else if (force !== true) {\n",
|
319
|
-
" const cell = $(document.getElementById(\"1002\")).parents('.cell').data().cell;\n",
|
320
|
-
" cell.output_area.append_execute_result(NB_LOAD_WARNING)\n",
|
321
|
-
" }\n",
|
322
|
-
" }\n",
|
323
|
-
"\n",
|
324
|
-
" if (root._bokeh_is_loading === 0) {\n",
|
325
|
-
" console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n",
|
326
|
-
" run_inline_js();\n",
|
327
|
-
" } else {\n",
|
328
|
-
" load_libs(css_urls, js_urls, function() {\n",
|
329
|
-
" console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n",
|
330
|
-
" run_inline_js();\n",
|
331
|
-
" });\n",
|
332
|
-
" }\n",
|
333
|
-
"}(window));"
|
334
|
-
],
|
335
|
-
"application/vnd.bokehjs_load.v0+json": "(function(root) {\n function now() {\n return new Date();\n }\n\n const force = true;\n\n if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n root._bokeh_onload_callbacks = [];\n root._bokeh_is_loading = undefined;\n }\n\n\n if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n const NB_LOAD_WARNING = {'data': {'text/html':\n \"<div style='background-color: #fdd'>\\n\"+\n \"<p>\\n\"+\n \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n \"</p>\\n\"+\n \"<ul>\\n\"+\n \"<li>re-rerun `output_notebook()` to attempt to load from CDN again, or</li>\\n\"+\n \"<li>use INLINE resources instead, as so:</li>\\n\"+\n \"</ul>\\n\"+\n \"<code>\\n\"+\n \"from bokeh.resources import INLINE\\n\"+\n \"output_notebook(resources=INLINE)\\n\"+\n \"</code>\\n\"+\n \"</div>\"}};\n\n function display_loaded() {\n const el = document.getElementById(\"1002\");\n if (el != null) {\n el.textContent = \"BokehJS is loading...\";\n }\n if (root.Bokeh !== undefined) {\n if (el != null) {\n el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n }\n } else if (Date.now() < root._bokeh_timeout) {\n setTimeout(display_loaded, 100)\n }\n }\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) {\n if (callback != null)\n callback();\n });\n } finally {\n delete root._bokeh_onload_callbacks\n }\n console.debug(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(css_urls, js_urls, callback) {\n if (css_urls == null) css_urls = [];\n if (js_urls == null) js_urls = [];\n\n root._bokeh_onload_callbacks.push(callback);\n if (root._bokeh_is_loading > 0) {\n console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n }\n if (js_urls == null || js_urls.length === 0) {\n run_callbacks();\n return null;\n }\n console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n root._bokeh_is_loading = css_urls.length + js_urls.length;\n\n function on_load() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n run_callbacks()\n }\n }\n\n function on_error(url) {\n console.error(\"failed to load \" + url);\n }\n\n for (let i = 0; i < css_urls.length; i++) {\n const url = css_urls[i];\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.rel = \"stylesheet\";\n element.type = \"text/css\";\n element.href = url;\n console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n document.body.appendChild(element);\n }\n\n for (let i = 0; i < js_urls.length; i++) {\n const url = js_urls[i];\n const element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.async = false;\n element.src = url;\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n };\n\n function inject_raw_css(css) {\n const element = document.createElement(\"style\");\n element.appendChild(document.createTextNode(css));\n document.body.appendChild(element);\n }\n\n const js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-2.4.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-2.4.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.4.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.4.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-2.4.3.min.js\"];\n const css_urls = [];\n\n const inline_js = [ function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\nfunction(Bokeh) {\n }\n ];\n\n function run_inline_js() {\n if (root.Bokeh !== undefined || force === true) {\n for (let i = 0; i < inline_js.length; i++) {\n inline_js[i].call(root, root.Bokeh);\n }\nif (force === true) {\n display_loaded();\n }} else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n } else if (force !== true) {\n const cell = $(document.getElementById(\"1002\")).parents('.cell').data().cell;\n cell.output_area.append_execute_result(NB_LOAD_WARNING)\n }\n }\n\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n run_inline_js();\n } else {\n load_libs(css_urls, js_urls, function() {\n console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n run_inline_js();\n });\n }\n}(window));"
|
336
|
-
},
|
337
|
-
"metadata": {},
|
338
|
-
"output_type": "display_data"
|
339
|
-
}
|
340
|
-
],
|
341
|
-
"source": [
|
342
|
-
"output_notebook()"
|
343
|
-
]
|
344
|
-
},
|
345
|
-
{
|
346
|
-
"cell_type": "markdown",
|
347
|
-
"metadata": {},
|
348
|
-
"source": [
|
349
|
-
"# Overview\n",
|
350
|
-
"\n",
|
351
|
-
"Sometimes we want to add visual cues (boundary lines, shaded regions, labels and arrows, etc.) to our plots to call out some feature or other. Bokeh has several annotation types available for uses like this. Typically to add annotations we create the \"low level\" annotation object directly, and add it to our plot using `add_layout`. Let's take a look at some specific examples."
|
352
|
-
]
|
353
|
-
},
|
354
|
-
{
|
355
|
-
"cell_type": "markdown",
|
356
|
-
"metadata": {},
|
357
|
-
"source": [
|
358
|
-
"## Spans\n",
|
359
|
-
"\n",
|
360
|
-
"`Spans` are \"infinite\" vertical or horizonal lines. When creating them, you specify the `dimension` that should be spanned (i.e., `width` or `height`), any visual line properties for the appearance, and the location along the dimension where the line should be drawn. Let's look at an example that adds two horizontal spans to a simple plot:"
|
361
|
-
]
|
362
|
-
},
|
363
|
-
{
|
364
|
-
"cell_type": "code",
|
365
|
-
"execution_count": 3,
|
366
|
-
"metadata": {},
|
367
|
-
"outputs": [
|
368
|
-
{
|
369
|
-
"data": {
|
370
|
-
"text/html": [
|
371
|
-
"\n",
|
372
|
-
" <div class=\"bk-root\" id=\"aba1e1e0-0429-4c8c-aba2-40139c2a260a\" data-root-id=\"1003\"></div>\n"
|
373
|
-
]
|
374
|
-
},
|
375
|
-
"metadata": {},
|
376
|
-
"output_type": "display_data"
|
377
|
-
},
|
378
|
-
{
|
379
|
-
"data": {
|
380
|
-
"application/javascript": [
|
381
|
-
"(function(root) {\n",
|
382
|
-
" function embed_document(root) {\n",
|
383
|
-
" const docs_json = {\"0157e3f8-aa5a-4275-80e5-fb088f9c71f2\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1012\"}],\"center\":[{\"id\":\"1015\"},{\"id\":\"1019\"},{\"id\":\"1040\"},{\"id\":\"1041\"}],\"left\":[{\"id\":\"1016\"}],\"renderers\":[{\"id\":\"1038\"}],\"title\":{\"id\":\"1042\"},\"toolbar\":{\"id\":\"1027\"},\"x_range\":{\"id\":\"1004\"},\"x_scale\":{\"id\":\"1008\"},\"y_range\":{\"id\":\"1006\"},\"y_scale\":{\"id\":\"1010\"}},\"id\":\"1003\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"1050\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"1042\",\"type\":\"Title\"},{\"attributes\":{\"source\":{\"id\":\"1034\"}},\"id\":\"1039\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1025\",\"type\":\"HelpTool\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"line_color\":\"firebrick\",\"line_width\":4,\"location\":-1},\"id\":\"1041\",\"type\":\"Span\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1036\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1013\",\"type\":\"BasicTicker\"},{\"attributes\":{\"axis\":{\"id\":\"1012\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"1015\",\"type\":\"Grid\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1037\",\"type\":\"Line\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1026\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"1017\",\"type\":\"BasicTicker\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1045\"},\"group\":null,\"major_label_policy\":{\"id\":\"1046\"},\"ticker\":{\"id\":\"1017\"}},\"id\":\"1016\",\"type\":\"LinearAxis\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[200]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[200]}},\"selected\":{\"id\":\"1051\"},\"selection_policy\":{\"id\":\"1050\"}},\"id\":\"1034\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"tools\":[{\"id\":\"1020\"},{\"id\":\"1021\"},{\"id\":\"1022\"},{\"id\":\"1023\"},{\"id\":\"1024\"},{\"id\":\"1025\"}]},\"id\":\"1027\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"1023\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"1048\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1035\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1045\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"axis\":{\"id\":\"1016\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1019\",\"type\":\"Grid\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1048\"},\"group\":null,\"major_label_policy\":{\"id\":\"1049\"},\"ticker\":{\"id\":\"1013\"}},\"id\":\"1012\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1046\",\"type\":\"AllLabels\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"line_color\":\"olive\",\"line_width\":4,\"location\":1},\"id\":\"1040\",\"type\":\"Span\"},{\"attributes\":{\"end\":2,\"start\":-2},\"id\":\"1006\",\"type\":\"Range1d\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1034\"},\"glyph\":{\"id\":\"1035\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1037\"},\"nonselection_glyph\":{\"id\":\"1036\"},\"view\":{\"id\":\"1039\"}},\"id\":\"1038\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1010\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1004\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1020\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"1024\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"1049\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1021\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"overlay\":{\"id\":\"1026\"}},\"id\":\"1022\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"1051\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1008\",\"type\":\"LinearScale\"}],\"root_ids\":[\"1003\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.3\"}};\n",
|
384
|
-
" const render_items = [{\"docid\":\"0157e3f8-aa5a-4275-80e5-fb088f9c71f2\",\"root_ids\":[\"1003\"],\"roots\":{\"1003\":\"aba1e1e0-0429-4c8c-aba2-40139c2a260a\"}}];\n",
|
385
|
-
" root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
|
386
|
-
" }\n",
|
387
|
-
" if (root.Bokeh !== undefined) {\n",
|
388
|
-
" embed_document(root);\n",
|
389
|
-
" } else {\n",
|
390
|
-
" let attempts = 0;\n",
|
391
|
-
" const timer = setInterval(function(root) {\n",
|
392
|
-
" if (root.Bokeh !== undefined) {\n",
|
393
|
-
" clearInterval(timer);\n",
|
394
|
-
" embed_document(root);\n",
|
395
|
-
" } else {\n",
|
396
|
-
" attempts++;\n",
|
397
|
-
" if (attempts > 100) {\n",
|
398
|
-
" clearInterval(timer);\n",
|
399
|
-
" console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n",
|
400
|
-
" }\n",
|
401
|
-
" }\n",
|
402
|
-
" }, 10, root)\n",
|
403
|
-
" }\n",
|
404
|
-
"})(window);"
|
405
|
-
],
|
406
|
-
"application/vnd.bokehjs_exec.v0+json": ""
|
407
|
-
},
|
408
|
-
"metadata": {
|
409
|
-
"application/vnd.bokehjs_exec.v0+json": {
|
410
|
-
"id": "1003"
|
411
|
-
}
|
412
|
-
},
|
413
|
-
"output_type": "display_data"
|
414
|
-
}
|
415
|
-
],
|
416
|
-
"source": [
|
417
|
-
"import numpy as np\n",
|
418
|
-
"from bokeh.models.annotations import Span\n",
|
419
|
-
"\n",
|
420
|
-
"x = np.linspace(0, 20, 200)\n",
|
421
|
-
"y = np.sin(x)\n",
|
422
|
-
"\n",
|
423
|
-
"p = figure(y_range=(-2, 2))\n",
|
424
|
-
"p.line(x, y)\n",
|
425
|
-
"\n",
|
426
|
-
"upper = Span(location=1, dimension='width', line_color='olive', line_width=4)\n",
|
427
|
-
"p.add_layout(upper)\n",
|
428
|
-
"\n",
|
429
|
-
"lower = Span(location=-1, dimension='width', line_color='firebrick', line_width=4)\n",
|
430
|
-
"p.add_layout(lower)\n",
|
431
|
-
"\n",
|
432
|
-
"show(p)"
|
433
|
-
]
|
434
|
-
},
|
435
|
-
{
|
436
|
-
"cell_type": "code",
|
437
|
-
"execution_count": 4,
|
438
|
-
"metadata": {},
|
439
|
-
"outputs": [],
|
440
|
-
"source": [
|
441
|
-
"# Exercise: experiment with Span\n"
|
442
|
-
]
|
443
|
-
},
|
444
|
-
{
|
445
|
-
"cell_type": "markdown",
|
446
|
-
"metadata": {},
|
447
|
-
"source": [
|
448
|
-
"## Box Annotations\n",
|
449
|
-
"\n",
|
450
|
-
"Sometimes you might want to call out some region of the plot by drawing a shaded box. This can be done with the `BoxAnnotation`, which is configured with the coordinate properties:\n",
|
451
|
-
"* `top`\n",
|
452
|
-
"* `left`\n",
|
453
|
-
"* `bottom`\n",
|
454
|
-
"* `right`\n",
|
455
|
-
"\n",
|
456
|
-
"as well as any visual line or fill properties to control the appearance. \n",
|
457
|
-
"\n",
|
458
|
-
"\"Infinite\" boxes can be made by leaving any of the coordinates unspecified. E.g., if `top` is not given, the box will always extend to the top of the plot area, regardless of any panning or zooming that happens.\n",
|
459
|
-
"\n",
|
460
|
-
"Let's take a look at an example that adds a few shaded boxes to a plot:"
|
461
|
-
]
|
462
|
-
},
|
463
|
-
{
|
464
|
-
"cell_type": "code",
|
465
|
-
"execution_count": 5,
|
466
|
-
"metadata": {},
|
467
|
-
"outputs": [
|
468
|
-
{
|
469
|
-
"data": {
|
470
|
-
"text/html": [
|
471
|
-
"\n",
|
472
|
-
" <div class=\"bk-root\" id=\"efd7c0a7-224d-469d-9273-6b075b2b061d\" data-root-id=\"1108\"></div>\n"
|
473
|
-
]
|
474
|
-
},
|
475
|
-
"metadata": {},
|
476
|
-
"output_type": "display_data"
|
477
|
-
},
|
478
|
-
{
|
479
|
-
"data": {
|
480
|
-
"application/javascript": [
|
481
|
-
"(function(root) {\n",
|
482
|
-
" function embed_document(root) {\n",
|
483
|
-
" const docs_json = {\"bf1649c1-f997-40b7-a12a-88aa3759af43\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1117\"}],\"center\":[{\"id\":\"1120\"},{\"id\":\"1124\"},{\"id\":\"1145\"},{\"id\":\"1146\"},{\"id\":\"1147\"}],\"left\":[{\"id\":\"1121\"}],\"renderers\":[{\"id\":\"1143\"}],\"title\":{\"id\":\"1159\"},\"toolbar\":{\"id\":\"1132\"},\"x_range\":{\"id\":\"1109\"},\"x_scale\":{\"id\":\"1113\"},\"y_range\":{\"id\":\"1111\"},\"y_scale\":{\"id\":\"1115\"}},\"id\":\"1108\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1141\",\"type\":\"Line\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1142\",\"type\":\"Line\"},{\"attributes\":{\"bottom\":1,\"coordinates\":null,\"fill_alpha\":0.1,\"fill_color\":\"olive\",\"group\":null},\"id\":\"1145\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"1118\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1125\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"1129\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"1126\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"overlay\":{\"id\":\"1131\"}},\"id\":\"1127\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"1128\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"1167\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1168\",\"type\":\"Selection\"},{\"attributes\":{\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1140\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1113\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1130\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"1115\",\"type\":\"LinearScale\"},{\"attributes\":{\"end\":2,\"start\":-2},\"id\":\"1111\",\"type\":\"Range1d\"},{\"attributes\":{},\"id\":\"1163\",\"type\":\"AllLabels\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1165\"},\"group\":null,\"major_label_policy\":{\"id\":\"1166\"},\"ticker\":{\"id\":\"1118\"}},\"id\":\"1117\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1166\",\"type\":\"AllLabels\"},{\"attributes\":{\"tools\":[{\"id\":\"1125\"},{\"id\":\"1126\"},{\"id\":\"1127\"},{\"id\":\"1128\"},{\"id\":\"1129\"},{\"id\":\"1130\"}]},\"id\":\"1132\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"1165\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"1159\",\"type\":\"Title\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1139\"},\"glyph\":{\"id\":\"1140\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1142\"},\"nonselection_glyph\":{\"id\":\"1141\"},\"view\":{\"id\":\"1144\"}},\"id\":\"1143\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"axis\":{\"id\":\"1117\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"1120\",\"type\":\"Grid\"},{\"attributes\":{\"bottom\":-0.3,\"coordinates\":null,\"fill_alpha\":0.1,\"fill_color\":\"navy\",\"group\":null,\"left\":7,\"right\":12,\"top\":0.6},\"id\":\"1147\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"1162\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1131\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"1122\",\"type\":\"BasicTicker\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1162\"},\"group\":null,\"major_label_policy\":{\"id\":\"1163\"},\"ticker\":{\"id\":\"1122\"}},\"id\":\"1121\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1109\",\"type\":\"DataRange1d\"},{\"attributes\":{\"source\":{\"id\":\"1139\"}},\"id\":\"1144\",\"type\":\"CDSView\"},{\"attributes\":{\"axis\":{\"id\":\"1121\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1124\",\"type\":\"Grid\"},{\"attributes\":{\"coordinates\":null,\"fill_alpha\":0.1,\"fill_color\":\"firebrick\",\"group\":null,\"top\":-1},\"id\":\"1146\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[200]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[200]}},\"selected\":{\"id\":\"1168\"},\"selection_policy\":{\"id\":\"1167\"}},\"id\":\"1139\",\"type\":\"ColumnDataSource\"}],\"root_ids\":[\"1108\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.3\"}};\n",
|
484
|
-
" const render_items = [{\"docid\":\"bf1649c1-f997-40b7-a12a-88aa3759af43\",\"root_ids\":[\"1108\"],\"roots\":{\"1108\":\"efd7c0a7-224d-469d-9273-6b075b2b061d\"}}];\n",
|
485
|
-
" root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
|
486
|
-
" }\n",
|
487
|
-
" if (root.Bokeh !== undefined) {\n",
|
488
|
-
" embed_document(root);\n",
|
489
|
-
" } else {\n",
|
490
|
-
" let attempts = 0;\n",
|
491
|
-
" const timer = setInterval(function(root) {\n",
|
492
|
-
" if (root.Bokeh !== undefined) {\n",
|
493
|
-
" clearInterval(timer);\n",
|
494
|
-
" embed_document(root);\n",
|
495
|
-
" } else {\n",
|
496
|
-
" attempts++;\n",
|
497
|
-
" if (attempts > 100) {\n",
|
498
|
-
" clearInterval(timer);\n",
|
499
|
-
" console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n",
|
500
|
-
" }\n",
|
501
|
-
" }\n",
|
502
|
-
" }, 10, root)\n",
|
503
|
-
" }\n",
|
504
|
-
"})(window);"
|
505
|
-
],
|
506
|
-
"application/vnd.bokehjs_exec.v0+json": ""
|
507
|
-
},
|
508
|
-
"metadata": {
|
509
|
-
"application/vnd.bokehjs_exec.v0+json": {
|
510
|
-
"id": "1108"
|
511
|
-
}
|
512
|
-
},
|
513
|
-
"output_type": "display_data"
|
514
|
-
}
|
515
|
-
],
|
516
|
-
"source": [
|
517
|
-
"import numpy as np\n",
|
518
|
-
"from bokeh.models.annotations import BoxAnnotation\n",
|
519
|
-
"\n",
|
520
|
-
"x = np.linspace(0, 20, 200)\n",
|
521
|
-
"y = np.sin(x)\n",
|
522
|
-
"\n",
|
523
|
-
"p = figure(y_range=(-2, 2))\n",
|
524
|
-
"p.line(x, y)\n",
|
525
|
-
"\n",
|
526
|
-
"# region that always fills the top of the plot\n",
|
527
|
-
"upper = BoxAnnotation(bottom=1, fill_alpha=0.1, fill_color='olive')\n",
|
528
|
-
"p.add_layout(upper)\n",
|
529
|
-
"\n",
|
530
|
-
"# region that always fills the bottom of the plot\n",
|
531
|
-
"lower = BoxAnnotation(top=-1, fill_alpha=0.1, fill_color='firebrick')\n",
|
532
|
-
"p.add_layout(lower)\n",
|
533
|
-
"\n",
|
534
|
-
"# a finite region\n",
|
535
|
-
"center = BoxAnnotation(top=0.6, bottom=-0.3, left=7, right=12, fill_alpha=0.1, fill_color='navy')\n",
|
536
|
-
"p.add_layout(center)\n",
|
537
|
-
"\n",
|
538
|
-
"show(p)"
|
539
|
-
]
|
540
|
-
},
|
541
|
-
{
|
542
|
-
"cell_type": "code",
|
543
|
-
"execution_count": 6,
|
544
|
-
"metadata": {},
|
545
|
-
"outputs": [],
|
546
|
-
"source": [
|
547
|
-
"# Exercise: experiment with BoxAnnotation\n"
|
548
|
-
]
|
549
|
-
},
|
550
|
-
{
|
551
|
-
"cell_type": "markdown",
|
552
|
-
"metadata": {},
|
553
|
-
"source": [
|
554
|
-
"## Label\n",
|
555
|
-
"\n",
|
556
|
-
"The `Label` annotation allows you to easily attach single text labels to plots. The position and text to display are configured as `x`, `y`, and `text`:\n",
|
557
|
-
"\n",
|
558
|
-
"```python\n",
|
559
|
-
"Label(x=10, y=5, text=\"Some Label\")\n",
|
560
|
-
"```\n",
|
561
|
-
"\n",
|
562
|
-
"By default the units are in \"data space\" but `x_units` and `y_units` maybe set to `\"screen\"` to position the label relative to the canvas. Labels can also accept `x_offset` and `y_offset` to offset the final position from `x` and `y` by a given screen space distance. \n",
|
563
|
-
"\n",
|
564
|
-
"`Label` objects also have standard text, line (`border_line`) and fill (`background_fill`) properties. The line and fill properties apply to a bounding box around the text:\n",
|
565
|
-
"\n",
|
566
|
-
"```python\n",
|
567
|
-
"Label(x=10, y=5, text=\"Some Label\", text_font_size=\"12pt\", \n",
|
568
|
-
" border_line_color=\"red\", background_fill_color=\"blue\")\n",
|
569
|
-
"```"
|
570
|
-
]
|
571
|
-
},
|
572
|
-
{
|
573
|
-
"cell_type": "code",
|
574
|
-
"execution_count": 7,
|
575
|
-
"metadata": {},
|
576
|
-
"outputs": [
|
577
|
-
{
|
578
|
-
"data": {
|
579
|
-
"text/html": [
|
580
|
-
"\n",
|
581
|
-
" <div class=\"bk-root\" id=\"e40f01e7-99fa-47f5-91e5-26838e77b927\" data-root-id=\"1225\"></div>\n"
|
582
|
-
]
|
583
|
-
},
|
584
|
-
"metadata": {},
|
585
|
-
"output_type": "display_data"
|
586
|
-
},
|
587
|
-
{
|
588
|
-
"data": {
|
589
|
-
"application/javascript": [
|
590
|
-
"(function(root) {\n",
|
591
|
-
" function embed_document(root) {\n",
|
592
|
-
" const docs_json = {\"85095390-7882-4290-84cd-f5990d1facc4\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1234\"}],\"center\":[{\"id\":\"1237\"},{\"id\":\"1241\"},{\"id\":\"1262\"}],\"left\":[{\"id\":\"1238\"}],\"renderers\":[{\"id\":\"1260\"}],\"title\":{\"id\":\"1285\"},\"toolbar\":{\"id\":\"1249\"},\"x_range\":{\"id\":\"1226\"},\"x_scale\":{\"id\":\"1230\"},\"y_range\":{\"id\":\"1228\"},\"y_scale\":{\"id\":\"1232\"}},\"id\":\"1225\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"source\":{\"id\":\"1256\"}},\"id\":\"1261\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1246\",\"type\":\"ResetTool\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1248\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"end\":10},\"id\":\"1228\",\"type\":\"Range1d\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"text\":\"Second Point\",\"text_baseline\":\"middle\",\"x\":5,\"x_offset\":12,\"y\":7},\"id\":\"1262\",\"type\":\"Label\"},{\"attributes\":{\"overlay\":{\"id\":\"1248\"}},\"id\":\"1244\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"1243\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"1232\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1242\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"1235\",\"type\":\"BasicTicker\"},{\"attributes\":{\"axis\":{\"id\":\"1238\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1241\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1288\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1289\",\"type\":\"AllLabels\"},{\"attributes\":{\"axis\":{\"id\":\"1234\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"1237\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1294\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1245\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"1239\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1293\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1291\"},\"group\":null,\"major_label_policy\":{\"id\":\"1292\"},\"ticker\":{\"id\":\"1235\"}},\"id\":\"1234\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1292\",\"type\":\"AllLabels\"},{\"attributes\":{\"end\":10},\"id\":\"1226\",\"type\":\"Range1d\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1288\"},\"group\":null,\"major_label_policy\":{\"id\":\"1289\"},\"ticker\":{\"id\":\"1239\"}},\"id\":\"1238\",\"type\":\"LinearAxis\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"olive\"},\"hatch_alpha\":{\"value\":0.2},\"hatch_color\":{\"value\":\"olive\"},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"olive\"},\"size\":{\"value\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1259\",\"type\":\"Circle\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"olive\"},\"hatch_alpha\":{\"value\":0.1},\"hatch_color\":{\"value\":\"olive\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"olive\"},\"size\":{\"value\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1258\",\"type\":\"Circle\"},{\"attributes\":{},\"id\":\"1247\",\"type\":\"HelpTool\"},{\"attributes\":{\"fill_color\":{\"value\":\"olive\"},\"hatch_color\":{\"value\":\"olive\"},\"line_color\":{\"value\":\"olive\"},\"size\":{\"value\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1257\",\"type\":\"Circle\"},{\"attributes\":{},\"id\":\"1291\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"1285\",\"type\":\"Title\"},{\"attributes\":{\"tools\":[{\"id\":\"1242\"},{\"id\":\"1243\"},{\"id\":\"1244\"},{\"id\":\"1245\"},{\"id\":\"1246\"},{\"id\":\"1247\"}]},\"id\":\"1249\",\"type\":\"Toolbar\"},{\"attributes\":{\"data\":{\"x\":[2,5,8],\"y\":[4,7,6]},\"selected\":{\"id\":\"1294\"},\"selection_policy\":{\"id\":\"1293\"}},\"id\":\"1256\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1230\",\"type\":\"LinearScale\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1256\"},\"glyph\":{\"id\":\"1257\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1259\"},\"nonselection_glyph\":{\"id\":\"1258\"},\"view\":{\"id\":\"1261\"}},\"id\":\"1260\",\"type\":\"GlyphRenderer\"}],\"root_ids\":[\"1225\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.3\"}};\n",
|
593
|
-
" const render_items = [{\"docid\":\"85095390-7882-4290-84cd-f5990d1facc4\",\"root_ids\":[\"1225\"],\"roots\":{\"1225\":\"e40f01e7-99fa-47f5-91e5-26838e77b927\"}}];\n",
|
594
|
-
" root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
|
595
|
-
" }\n",
|
596
|
-
" if (root.Bokeh !== undefined) {\n",
|
597
|
-
" embed_document(root);\n",
|
598
|
-
" } else {\n",
|
599
|
-
" let attempts = 0;\n",
|
600
|
-
" const timer = setInterval(function(root) {\n",
|
601
|
-
" if (root.Bokeh !== undefined) {\n",
|
602
|
-
" clearInterval(timer);\n",
|
603
|
-
" embed_document(root);\n",
|
604
|
-
" } else {\n",
|
605
|
-
" attempts++;\n",
|
606
|
-
" if (attempts > 100) {\n",
|
607
|
-
" clearInterval(timer);\n",
|
608
|
-
" console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n",
|
609
|
-
" }\n",
|
610
|
-
" }\n",
|
611
|
-
" }, 10, root)\n",
|
612
|
-
" }\n",
|
613
|
-
"})(window);"
|
614
|
-
],
|
615
|
-
"application/vnd.bokehjs_exec.v0+json": ""
|
616
|
-
},
|
617
|
-
"metadata": {
|
618
|
-
"application/vnd.bokehjs_exec.v0+json": {
|
619
|
-
"id": "1225"
|
620
|
-
}
|
621
|
-
},
|
622
|
-
"output_type": "display_data"
|
623
|
-
}
|
624
|
-
],
|
625
|
-
"source": [
|
626
|
-
"from bokeh.models.annotations import Label\n",
|
627
|
-
"from bokeh.plotting import figure\n",
|
628
|
-
"\n",
|
629
|
-
"p = figure(x_range=(0,10), y_range=(0,10))\n",
|
630
|
-
"p.circle([2, 5, 8], [4, 7, 6], color=\"olive\", size=10)\n",
|
631
|
-
"\n",
|
632
|
-
"label = Label(x=5, y=7, x_offset=12, text=\"Second Point\", text_baseline=\"middle\")\n",
|
633
|
-
"p.add_layout(label)\n",
|
634
|
-
"\n",
|
635
|
-
"show(p)"
|
636
|
-
]
|
637
|
-
},
|
638
|
-
{
|
639
|
-
"cell_type": "code",
|
640
|
-
"execution_count": 8,
|
641
|
-
"metadata": {},
|
642
|
-
"outputs": [],
|
643
|
-
"source": [
|
644
|
-
"# EXERCISE: experiment with Label\n"
|
645
|
-
]
|
646
|
-
},
|
647
|
-
{
|
648
|
-
"cell_type": "markdown",
|
649
|
-
"metadata": {},
|
650
|
-
"source": [
|
651
|
-
"## LabelSet\n",
|
652
|
-
"\n",
|
653
|
-
"The `LabelSet` annotation allows you to create many labels at once, for instance if you want to label an entire set of scatter markers. They are similar to `Label`, but they can also \n",
|
654
|
-
"accept a `ColumnDataSource` as the `source` property, and then `x` and `y` may refer to columns in the data source, e.g. `x=\"col2\"` (but may also still be fixed values, e.g. `x=10`)."
|
655
|
-
]
|
656
|
-
},
|
657
|
-
{
|
658
|
-
"cell_type": "code",
|
659
|
-
"execution_count": 9,
|
660
|
-
"metadata": {},
|
661
|
-
"outputs": [
|
662
|
-
{
|
663
|
-
"data": {
|
664
|
-
"text/html": [
|
665
|
-
"\n",
|
666
|
-
" <div class=\"bk-root\" id=\"35ec7786-dd63-4450-8274-645a5a464654\" data-root-id=\"1352\"></div>\n"
|
667
|
-
]
|
668
|
-
},
|
669
|
-
"metadata": {},
|
670
|
-
"output_type": "display_data"
|
671
|
-
},
|
672
|
-
{
|
673
|
-
"data": {
|
674
|
-
"application/javascript": [
|
675
|
-
"(function(root) {\n",
|
676
|
-
" function embed_document(root) {\n",
|
677
|
-
" const docs_json = {\"e35dc403-f39d-4496-8957-8f203c4fda07\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1361\"}],\"center\":[{\"id\":\"1364\"},{\"id\":\"1368\"},{\"id\":\"1389\"}],\"left\":[{\"id\":\"1365\"}],\"renderers\":[{\"id\":\"1387\"}],\"title\":{\"id\":\"1424\"},\"toolbar\":{\"id\":\"1376\"},\"x_range\":{\"id\":\"1353\"},\"x_scale\":{\"id\":\"1357\"},\"y_range\":{\"id\":\"1355\"},\"y_scale\":{\"id\":\"1359\"}},\"id\":\"1352\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1351\"},\"glyph\":{\"id\":\"1384\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1386\"},\"nonselection_glyph\":{\"id\":\"1385\"},\"view\":{\"id\":\"1388\"}},\"id\":\"1387\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1373\",\"type\":\"ResetTool\"},{\"attributes\":{\"overlay\":{\"id\":\"1375\"}},\"id\":\"1371\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"1372\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"1362\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1357\",\"type\":\"LinearScale\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"level\":\"glyph\",\"source\":{\"id\":\"1351\"},\"text\":{\"field\":\"names\"},\"x\":{\"field\":\"temp\"},\"x_offset\":{\"value\":5},\"y\":{\"field\":\"pressure\"},\"y_offset\":{\"value\":5}},\"id\":\"1389\",\"type\":\"LabelSet\"},{\"attributes\":{},\"id\":\"1374\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"1359\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1428\",\"type\":\"AllLabels\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"1424\",\"type\":\"Title\"},{\"attributes\":{\"axis_label\":\"Temperature (C)\",\"coordinates\":null,\"formatter\":{\"id\":\"1430\"},\"group\":null,\"major_label_policy\":{\"id\":\"1431\"},\"ticker\":{\"id\":\"1362\"}},\"id\":\"1361\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1430\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"axis\":{\"id\":\"1361\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"1364\",\"type\":\"Grid\"},{\"attributes\":{\"tools\":[{\"id\":\"1369\"},{\"id\":\"1370\"},{\"id\":\"1371\"},{\"id\":\"1372\"},{\"id\":\"1373\"},{\"id\":\"1374\"}]},\"id\":\"1376\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"1366\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1431\",\"type\":\"AllLabels\"},{\"attributes\":{\"axis_label\":\"Pressure (lbs)\",\"coordinates\":null,\"formatter\":{\"id\":\"1427\"},\"group\":null,\"major_label_policy\":{\"id\":\"1428\"},\"ticker\":{\"id\":\"1366\"}},\"id\":\"1365\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1427\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1375\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"axis\":{\"id\":\"1365\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1368\",\"type\":\"Grid\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"#1f77b4\"},\"hatch_alpha\":{\"value\":0.2},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"#1f77b4\"},\"size\":{\"value\":8},\"x\":{\"field\":\"temp\"},\"y\":{\"field\":\"pressure\"}},\"id\":\"1386\",\"type\":\"Scatter\"},{\"attributes\":{\"data\":{\"names\":[\"A\",\"B\",\"C\",\"D\",\"E\",\"F\"],\"pressure\":[165,189,220,141,260,174],\"temp\":[166,171,172,168,174,162]},\"selected\":{\"id\":\"1433\"},\"selection_policy\":{\"id\":\"1432\"}},\"id\":\"1351\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#1f77b4\"},\"hatch_alpha\":{\"value\":0.1},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"size\":{\"value\":8},\"x\":{\"field\":\"temp\"},\"y\":{\"field\":\"pressure\"}},\"id\":\"1385\",\"type\":\"Scatter\"},{\"attributes\":{\"end\":175,\"start\":160},\"id\":\"1353\",\"type\":\"Range1d\"},{\"attributes\":{},\"id\":\"1432\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1355\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1433\",\"type\":\"Selection\"},{\"attributes\":{\"source\":{\"id\":\"1351\"}},\"id\":\"1388\",\"type\":\"CDSView\"},{\"attributes\":{\"fill_color\":{\"value\":\"#1f77b4\"},\"line_color\":{\"value\":\"#1f77b4\"},\"size\":{\"value\":8},\"x\":{\"field\":\"temp\"},\"y\":{\"field\":\"pressure\"}},\"id\":\"1384\",\"type\":\"Scatter\"},{\"attributes\":{},\"id\":\"1369\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"1370\",\"type\":\"WheelZoomTool\"}],\"root_ids\":[\"1352\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.3\"}};\n",
|
678
|
-
" const render_items = [{\"docid\":\"e35dc403-f39d-4496-8957-8f203c4fda07\",\"root_ids\":[\"1352\"],\"roots\":{\"1352\":\"35ec7786-dd63-4450-8274-645a5a464654\"}}];\n",
|
679
|
-
" root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
|
680
|
-
" }\n",
|
681
|
-
" if (root.Bokeh !== undefined) {\n",
|
682
|
-
" embed_document(root);\n",
|
683
|
-
" } else {\n",
|
684
|
-
" let attempts = 0;\n",
|
685
|
-
" const timer = setInterval(function(root) {\n",
|
686
|
-
" if (root.Bokeh !== undefined) {\n",
|
687
|
-
" clearInterval(timer);\n",
|
688
|
-
" embed_document(root);\n",
|
689
|
-
" } else {\n",
|
690
|
-
" attempts++;\n",
|
691
|
-
" if (attempts > 100) {\n",
|
692
|
-
" clearInterval(timer);\n",
|
693
|
-
" console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n",
|
694
|
-
" }\n",
|
695
|
-
" }\n",
|
696
|
-
" }, 10, root)\n",
|
697
|
-
" }\n",
|
698
|
-
"})(window);"
|
699
|
-
],
|
700
|
-
"application/vnd.bokehjs_exec.v0+json": ""
|
701
|
-
},
|
702
|
-
"metadata": {
|
703
|
-
"application/vnd.bokehjs_exec.v0+json": {
|
704
|
-
"id": "1352"
|
705
|
-
}
|
706
|
-
},
|
707
|
-
"output_type": "display_data"
|
708
|
-
}
|
709
|
-
],
|
710
|
-
"source": [
|
711
|
-
"from bokeh.plotting import figure\n",
|
712
|
-
"from bokeh.models import ColumnDataSource, LabelSet\n",
|
713
|
-
"\n",
|
714
|
-
"\n",
|
715
|
-
"source = ColumnDataSource(data=dict(\n",
|
716
|
-
" temp=[166, 171, 172, 168, 174, 162],\n",
|
717
|
-
" pressure=[165, 189, 220, 141, 260, 174],\n",
|
718
|
-
" names=['A', 'B', 'C', 'D', 'E', 'F']))\n",
|
719
|
-
"\n",
|
720
|
-
"p = figure(x_range=(160, 175))\n",
|
721
|
-
"p.scatter(x='temp', y='pressure', size=8, source=source)\n",
|
722
|
-
"p.xaxis.axis_label = 'Temperature (C)'\n",
|
723
|
-
"p.yaxis.axis_label = 'Pressure (lbs)'\n",
|
724
|
-
"\n",
|
725
|
-
"labels = LabelSet(x='temp', y='pressure', text='names', level='glyph',\n",
|
726
|
-
" x_offset=5, y_offset=5, source=source, render_mode='canvas')\n",
|
727
|
-
"\n",
|
728
|
-
"\n",
|
729
|
-
"p.add_layout(labels)\n",
|
730
|
-
"\n",
|
731
|
-
"show(p)"
|
732
|
-
]
|
733
|
-
},
|
734
|
-
{
|
735
|
-
"cell_type": "code",
|
736
|
-
"execution_count": 10,
|
737
|
-
"metadata": {},
|
738
|
-
"outputs": [],
|
739
|
-
"source": [
|
740
|
-
"# EXERCISE: experiment with LabelSet\n"
|
741
|
-
]
|
742
|
-
},
|
743
|
-
{
|
744
|
-
"cell_type": "markdown",
|
745
|
-
"metadata": {},
|
746
|
-
"source": [
|
747
|
-
"## Arrows\n",
|
748
|
-
"\n",
|
749
|
-
"The `Arrow` annotation allows you to \"point\" at different things on your plot, and can be especially useful in conjuction with labels. \n",
|
750
|
-
"\n",
|
751
|
-
"For example, to create an arrow that points from `(0,0)` to `(1,1)`:\n",
|
752
|
-
"\n",
|
753
|
-
"```python\n",
|
754
|
-
"p.add_layout(Arrow(x_start=0, y_start=0, x_end=1, y_end=0))\n",
|
755
|
-
"```\n",
|
756
|
-
"\n",
|
757
|
-
"This arrow will have the default [`OpenHead`](https://bokeh.pydata.org/en/latest/docs/reference/models/arrow_heads.html#bokeh.models.arrow_heads.OpenHead) arrow head at the end of the arrow. Other kinds of arrow heads include [`NormalHead`](https://bokeh.pydata.org/en/latest/docs/reference/models/arrow_heads.html#bokeh.models.arrow_heads.NormalHead) and [`VeeHead`](https://bokeh.pydata.org/en/latest/docs/reference/models/arrow_heads.html#bokeh.models.arrow_heads.VeeHead). The arrow head type can be controlled by setting the `start` and `end` properties of `Arrow` objects:\n",
|
758
|
-
"\n",
|
759
|
-
"```python\n",
|
760
|
-
"p.add_layout(Arrow(start=OpenHead(), end=VeeHead(), \n",
|
761
|
-
" x_start=0, y_start=0, x_end=1, y_end=0))\n",
|
762
|
-
"```\n",
|
763
|
-
"\n",
|
764
|
-
"This will create a double-ended arrow with an \"open\" head at the start, and a \"vee\" head at the end. Arrowheads have the standard set of line and fill properties to control their appearance. As an example\n",
|
765
|
-
"\n",
|
766
|
-
"```python\n",
|
767
|
-
"OpenHead(line_color=\"firebrick\", line_width=4)\n",
|
768
|
-
"```\n",
|
769
|
-
"\n",
|
770
|
-
"The code and plot below shows several of these configurations together."
|
771
|
-
]
|
772
|
-
},
|
773
|
-
{
|
774
|
-
"cell_type": "code",
|
775
|
-
"execution_count": 11,
|
776
|
-
"metadata": {},
|
777
|
-
"outputs": [
|
778
|
-
{
|
779
|
-
"data": {
|
780
|
-
"text/html": [
|
781
|
-
"\n",
|
782
|
-
" <div class=\"bk-root\" id=\"67b23fdb-a064-4cb5-8f17-46c186bfb989\" data-root-id=\"1490\"></div>\n"
|
783
|
-
]
|
784
|
-
},
|
785
|
-
"metadata": {},
|
786
|
-
"output_type": "display_data"
|
787
|
-
},
|
788
|
-
{
|
789
|
-
"data": {
|
790
|
-
"application/javascript": [
|
791
|
-
"(function(root) {\n",
|
792
|
-
" function embed_document(root) {\n",
|
793
|
-
" const docs_json = {\"2785fc7c-b470-45fe-9655-ae0305ccd0b0\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1499\"}],\"center\":[{\"id\":\"1502\"},{\"id\":\"1506\"},{\"id\":\"1528\"},{\"id\":\"1531\"},{\"id\":\"1534\"}],\"left\":[{\"id\":\"1503\"}],\"renderers\":[{\"id\":\"1525\"}],\"title\":{\"id\":\"1580\"},\"toolbar\":{\"id\":\"1514\"},\"x_range\":{\"id\":\"1491\"},\"x_scale\":{\"id\":\"1495\"},\"y_range\":{\"id\":\"1493\"},\"y_scale\":{\"id\":\"1497\"}},\"id\":\"1490\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"1507\",\"type\":\"PanTool\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1521\"},\"glyph\":{\"id\":\"1522\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1524\"},\"nonselection_glyph\":{\"id\":\"1523\"},\"view\":{\"id\":\"1526\"}},\"id\":\"1525\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1511\",\"type\":\"ResetTool\"},{\"attributes\":{\"data\":{},\"selected\":{\"id\":\"1597\"},\"selection_policy\":{\"id\":\"1596\"}},\"id\":\"1589\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1493\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1508\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"coordinates\":null,\"end\":{\"id\":\"1530\"},\"group\":null,\"source\":{\"id\":\"1589\"},\"start\":null,\"x_end\":{\"value\":0.5},\"x_start\":{\"value\":1},\"y_end\":{\"value\":0.7},\"y_start\":{\"value\":0}},\"id\":\"1531\",\"type\":\"Arrow\"},{\"attributes\":{\"overlay\":{\"id\":\"1513\"}},\"id\":\"1509\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"1510\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"1592\",\"type\":\"Selection\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"field\":\"fill_color\"},\"hatch_alpha\":{\"value\":0.1},\"hatch_color\":{\"field\":\"hatch_color\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"field\":\"line_color\"},\"radius\":{\"value\":0.1},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1523\",\"type\":\"Circle\"},{\"attributes\":{},\"id\":\"1500\",\"type\":\"BasicTicker\"},{\"attributes\":{\"data\":{},\"selected\":{\"id\":\"1599\"},\"selection_policy\":{\"id\":\"1598\"}},\"id\":\"1590\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1495\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1512\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"1591\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1497\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1586\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1599\",\"type\":\"Selection\"},{\"attributes\":{\"coordinates\":null,\"end\":{\"id\":\"1527\"},\"group\":null,\"source\":{\"id\":\"1588\"},\"start\":null,\"x_end\":{\"value\":1},\"x_start\":{\"value\":0},\"y_end\":{\"value\":0},\"y_start\":{\"value\":0}},\"id\":\"1528\",\"type\":\"Arrow\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1586\"},\"group\":null,\"major_label_policy\":{\"id\":\"1587\"},\"ticker\":{\"id\":\"1500\"}},\"id\":\"1499\",\"type\":\"LinearAxis\"},{\"attributes\":{\"fill_color\":{\"value\":\"orange\"}},\"id\":\"1530\",\"type\":\"NormalHead\"},{\"attributes\":{},\"id\":\"1595\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1584\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1597\",\"type\":\"Selection\"},{\"attributes\":{\"axis\":{\"id\":\"1499\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"1502\",\"type\":\"Grid\"},{\"attributes\":{\"data\":{},\"selected\":{\"id\":\"1595\"},\"selection_policy\":{\"id\":\"1594\"}},\"id\":\"1588\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1504\",\"type\":\"BasicTicker\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1583\"},\"group\":null,\"major_label_policy\":{\"id\":\"1584\"},\"ticker\":{\"id\":\"1504\"}},\"id\":\"1503\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1596\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"1580\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"1583\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"field\":\"fill_color\"},\"hatch_color\":{\"field\":\"hatch_color\"},\"line_color\":{\"field\":\"line_color\"},\"radius\":{\"value\":0.1},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1522\",\"type\":\"Circle\"},{\"attributes\":{},\"id\":\"1598\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"source\":{\"id\":\"1521\"}},\"id\":\"1526\",\"type\":\"CDSView\"},{\"attributes\":{\"axis\":{\"id\":\"1503\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1506\",\"type\":\"Grid\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"field\":\"fill_color\"},\"hatch_alpha\":{\"value\":0.2},\"hatch_color\":{\"field\":\"hatch_color\"},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"field\":\"line_color\"},\"radius\":{\"value\":0.1},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1524\",\"type\":\"Circle\"},{\"attributes\":{\"data\":{\"fill_color\":[\"navy\",\"yellow\",\"red\"],\"hatch_color\":[\"navy\",\"yellow\",\"red\"],\"line_color\":[\"navy\",\"yellow\",\"red\"],\"x\":[0,1,0.5],\"y\":[0,0,0.7]},\"selected\":{\"id\":\"1592\"},\"selection_policy\":{\"id\":\"1591\"}},\"id\":\"1521\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1587\",\"type\":\"AllLabels\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1513\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"line_color\":{\"value\":\"firebrick\"},\"line_width\":{\"value\":4}},\"id\":\"1527\",\"type\":\"OpenHead\"},{\"attributes\":{},\"id\":\"1491\",\"type\":\"DataRange1d\"},{\"attributes\":{\"tools\":[{\"id\":\"1507\"},{\"id\":\"1508\"},{\"id\":\"1509\"},{\"id\":\"1510\"},{\"id\":\"1511\"},{\"id\":\"1512\"}]},\"id\":\"1514\",\"type\":\"Toolbar\"},{\"attributes\":{\"size\":{\"value\":35}},\"id\":\"1533\",\"type\":\"VeeHead\"},{\"attributes\":{},\"id\":\"1594\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"coordinates\":null,\"end\":{\"id\":\"1533\"},\"group\":null,\"line_color\":{\"value\":\"red\"},\"source\":{\"id\":\"1590\"},\"start\":null,\"x_end\":{\"value\":0},\"x_start\":{\"value\":0.5},\"y_end\":{\"value\":0},\"y_start\":{\"value\":0.7}},\"id\":\"1534\",\"type\":\"Arrow\"}],\"root_ids\":[\"1490\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.3\"}};\n",
|
794
|
-
" const render_items = [{\"docid\":\"2785fc7c-b470-45fe-9655-ae0305ccd0b0\",\"root_ids\":[\"1490\"],\"roots\":{\"1490\":\"67b23fdb-a064-4cb5-8f17-46c186bfb989\"}}];\n",
|
795
|
-
" root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
|
796
|
-
" }\n",
|
797
|
-
" if (root.Bokeh !== undefined) {\n",
|
798
|
-
" embed_document(root);\n",
|
799
|
-
" } else {\n",
|
800
|
-
" let attempts = 0;\n",
|
801
|
-
" const timer = setInterval(function(root) {\n",
|
802
|
-
" if (root.Bokeh !== undefined) {\n",
|
803
|
-
" clearInterval(timer);\n",
|
804
|
-
" embed_document(root);\n",
|
805
|
-
" } else {\n",
|
806
|
-
" attempts++;\n",
|
807
|
-
" if (attempts > 100) {\n",
|
808
|
-
" clearInterval(timer);\n",
|
809
|
-
" console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n",
|
810
|
-
" }\n",
|
811
|
-
" }\n",
|
812
|
-
" }, 10, root)\n",
|
813
|
-
" }\n",
|
814
|
-
"})(window);"
|
815
|
-
],
|
816
|
-
"application/vnd.bokehjs_exec.v0+json": ""
|
817
|
-
},
|
818
|
-
"metadata": {
|
819
|
-
"application/vnd.bokehjs_exec.v0+json": {
|
820
|
-
"id": "1490"
|
821
|
-
}
|
822
|
-
},
|
823
|
-
"output_type": "display_data"
|
824
|
-
}
|
825
|
-
],
|
826
|
-
"source": [
|
827
|
-
"from bokeh.models.annotations import Arrow\n",
|
828
|
-
"from bokeh.models.arrow_heads import OpenHead, NormalHead, VeeHead\n",
|
829
|
-
"\n",
|
830
|
-
"p = figure(plot_width=600, plot_height=600)\n",
|
831
|
-
"\n",
|
832
|
-
"p.circle(x=[0, 1, 0.5], y=[0, 0, 0.7], radius=0.1,\n",
|
833
|
-
" color=[\"navy\", \"yellow\", \"red\"], fill_alpha=0.1)\n",
|
834
|
-
"\n",
|
835
|
-
"p.add_layout(Arrow(end=OpenHead(line_color=\"firebrick\", line_width=4),\n",
|
836
|
-
" x_start=0, y_start=0, x_end=1, y_end=0))\n",
|
837
|
-
"\n",
|
838
|
-
"p.add_layout(Arrow(end=NormalHead(fill_color=\"orange\"),\n",
|
839
|
-
" x_start=1, y_start=0, x_end=0.5, y_end=0.7))\n",
|
840
|
-
"\n",
|
841
|
-
"p.add_layout(Arrow(end=VeeHead(size=35), line_color=\"red\",\n",
|
842
|
-
" x_start=0.5, y_start=0.7, x_end=0, y_end=0))\n",
|
843
|
-
"\n",
|
844
|
-
"show(p)"
|
845
|
-
]
|
846
|
-
},
|
847
|
-
{
|
848
|
-
"cell_type": "code",
|
849
|
-
"execution_count": 12,
|
850
|
-
"metadata": {},
|
851
|
-
"outputs": [],
|
852
|
-
"source": [
|
853
|
-
"# EXERCISE: experiment with arrows and arrow heads\n"
|
854
|
-
]
|
855
|
-
},
|
856
|
-
{
|
857
|
-
"cell_type": "markdown",
|
858
|
-
"metadata": {},
|
859
|
-
"source": [
|
860
|
-
"## Legends\n",
|
861
|
-
"\n",
|
862
|
-
"When plots have multiple glyphs, it is desirable to include a legend to help users interpret what they see. Bokeh can generate legends easily based on the glyphs that are added. "
|
863
|
-
]
|
864
|
-
},
|
865
|
-
{
|
866
|
-
"cell_type": "markdown",
|
867
|
-
"metadata": {},
|
868
|
-
"source": [
|
869
|
-
"### Simple Legends\n",
|
870
|
-
"\n",
|
871
|
-
"In the simplest case, you can simply pass a string as the `legend_label` argument to a glyph function:\n",
|
872
|
-
"```python\n",
|
873
|
-
"p.circle(x, y, legend_label=\"sin(x)\")\n",
|
874
|
-
"``` \n",
|
875
|
-
"In this case Bokeh will automatically create a legend that shows a representation of that glyph, labeled by the test you provided. A full example is below."
|
876
|
-
]
|
877
|
-
},
|
878
|
-
{
|
879
|
-
"cell_type": "code",
|
880
|
-
"execution_count": 13,
|
881
|
-
"metadata": {},
|
882
|
-
"outputs": [
|
883
|
-
{
|
884
|
-
"data": {
|
885
|
-
"text/html": [
|
886
|
-
"\n",
|
887
|
-
" <div class=\"bk-root\" id=\"59bb29bf-a9d0-44fb-af06-2cd3f3669c7a\" data-root-id=\"1700\"></div>\n"
|
888
|
-
]
|
889
|
-
},
|
890
|
-
"metadata": {},
|
891
|
-
"output_type": "display_data"
|
892
|
-
},
|
893
|
-
{
|
894
|
-
"data": {
|
895
|
-
"application/javascript": [
|
896
|
-
"(function(root) {\n",
|
897
|
-
" function embed_document(root) {\n",
|
898
|
-
" const docs_json = {\"16cf62cf-ba50-4a9b-8575-3c42da0e163d\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1709\"}],\"center\":[{\"id\":\"1712\"},{\"id\":\"1716\"},{\"id\":\"1748\"}],\"height\":400,\"left\":[{\"id\":\"1713\"}],\"renderers\":[{\"id\":\"1735\"},{\"id\":\"1754\"}],\"title\":{\"id\":\"1737\"},\"toolbar\":{\"id\":\"1724\"},\"x_range\":{\"id\":\"1701\"},\"x_scale\":{\"id\":\"1705\"},\"y_range\":{\"id\":\"1703\"},\"y_scale\":{\"id\":\"1707\"}},\"id\":\"1700\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"tools\":[{\"id\":\"1717\"},{\"id\":\"1718\"},{\"id\":\"1719\"},{\"id\":\"1720\"},{\"id\":\"1721\"},{\"id\":\"1722\"}]},\"id\":\"1724\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"1745\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1723\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"1714\",\"type\":\"BasicTicker\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"1749\"},{\"id\":\"1769\"}]},\"id\":\"1748\",\"type\":\"Legend\"},{\"attributes\":{},\"id\":\"1744\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1743\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"label\":{\"value\":\"2*sin(x)\"},\"renderers\":[{\"id\":\"1754\"}]},\"id\":\"1769\",\"type\":\"LegendItem\"},{\"attributes\":{\"axis\":{\"id\":\"1709\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"1712\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1766\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"orange\",\"line_dash\":[4,4],\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1753\",\"type\":\"Line\"},{\"attributes\":{\"overlay\":{\"id\":\"1723\"}},\"id\":\"1719\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"1707\",\"type\":\"LinearScale\"},{\"attributes\":{\"axis\":{\"id\":\"1713\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1716\",\"type\":\"Grid\"},{\"attributes\":{\"source\":{\"id\":\"1731\"}},\"id\":\"1736\",\"type\":\"CDSView\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1731\"},\"glyph\":{\"id\":\"1732\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1734\"},\"nonselection_glyph\":{\"id\":\"1733\"},\"view\":{\"id\":\"1736\"}},\"id\":\"1735\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAAACRGkt8Vz/AP5EaS3xXP9A/2qdwOgNf2D+RGkt8Vz/gPzXhXVstT+Q/2qdwOgNf6D9+boMZ2W7sP5EaS3xXP/A/433Ua0JH8j814V1bLU/0P4dE50oYV/Y/2qdwOgNf+D8sC/op7mb6P35ugxnZbvw/0NEMCcR2/j+RGkt8Vz8AQDrMD/RMQwFA433Ua0JHAkCML5njN0sDQDXhXVstTwRA3pIi0yJTBUCHROdKGFcGQDD2q8INWwdA2qdwOgNfCECDWTWy+GIJQCwL+inuZgpA1by+oeNqC0B+boMZ2W4MQCcgSJHOcg1A0NEMCcR2DkB5g9GAuXoPQJEaS3xXPxBAZnMtOFLBEEA6zA/0TEMRQA8l8q9HxRFA433Ua0JHEkC41rYnPckSQIwvmeM3SxNAYYh7nzLNE0A14V1bLU8UQAo6QBco0RRA3pIi0yJTFUCz6wSPHdUVQIdE50oYVxZAXJ3JBhPZFkAw9qvCDVsXQAVPjn4I3RdA2qdwOgNfGECuAFP2/eAYQINZNbL4YhlAV7IXbvPkGUAsC/op7mYaQABk3OXo6BpA1by+oeNqG0CpFaFd3uwbQH5ugxnZbhxAUsdl1dPwHEAnIEiRznIdQPt4Kk3J9B1A0NEMCcR2HkCkKu/EvvgeQHmD0YC5eh9ATdyzPLT8H0CRGkt8Vz8gQPtGPNpUgCBAZnMtOFLBIEDQnx6WTwIhQDrMD/RMQyFApPgAUkqEIUAPJfKvR8UhQHlR4w1FBiJA433Ua0JHIkBNqsXJP4giQLjWtic9ySJAIgOohToKI0CML5njN0sjQPZbikE1jCNAYYh7nzLNI0DLtGz9Lw4kQDXhXVstTyRAoA1PuSqQJEAKOkAXKNEkQHRmMXUlEiVA3pIi0yJTJUBJvxMxIJQlQLPrBI8d1SVAHRj27BoWJkCHROdKGFcmQPJw2KgVmCZAXJ3JBhPZJkDGybpkEBonQDD2q8INWydAmyKdIAucJ0AFT45+CN0nQG97f9wFHihA2qdwOgNfKEBE1GGYAKAoQK4AU/b94ChAGC1EVPshKUA=\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[100]},\"y\":{\"__ndarray__\":\"AAAAAAAAAADwgwJ4LjTAP5qI2QHPEtA/+5MNU1HJ1z8ZTT7q2B3fP0aFmgwa+eI/ABg/lCAV5j+IQCEcMdboP3fOhmLzMOs/EyzujrQb7T/9Izwlj47uPxccgYyLg+8/g6xao7j27z9mZrL8O+bvP7+X94FZUu8/xVNiW3I97j9RB8Ai+6vsP5FWKYlppOo/oSg6uxkv6D/Sh2bxK1blPyZGRbpaJeI/8qg+VZVT3T/4C4p0qOPVP+UppLIiM8w/3FNHxZdVuD/J23zJpD6gv+3ENsZjOcS/wo12/ecH0r/dgWKM2KjZv2MTsJELcOC/83ixWvXH47+358MBZM7mv5eCD4nhdum/rExY6Hq267+TIxAn7YPtvwSssILL1+6/70I4BJ6s77/vOc8G+P7vvzTGy1KGze+/3176khQZ77/C8a4NiuTtvzGcHq/dNOy/l0FFlgER6r+EGZN4xoHnvx8WPFK3keS/Cli7+O1M4b+HQNqEwoHbv9kfIiFb+NO/gKyggGI5yL8EhrXMjDywvyGGtcyMPLA/jqyggGI5yD/gHyIhW/jTP4BA2oTCgds/DVi7+O1M4T8cFjxSt5HkP4cZk3jGgec/lUFFlgER6j8ynB6v3TTsP8Hxrg2K5O0/4F76khQZ7z80xstShs3vP+85zwb4/u8/8EI4BJ6s7z8DrLCCy9fuP5UjECftg+0/p0xY6Hq26z+Vgg+J4XbpP7fnwwFkzuY/9nixWvXH4z9dE7CRC3DgP9eBYozYqNk/w412/ecH0j/+xDbGYznEP0/bfMmkPqA/+FNHxZdVuL/UKaSyIjPMv+gLinSo49W/+Kg+VZVT3b8lRkW6WiXiv8+HZvErVuW/pig6uxkv6L+TVimJaaTqv1EHwCL7q+y/xFNiW3I97r/Al/eBWVLvv2Zmsvw75u+/g6xao7j2778YHIGMi4Pvv/sjPCWPju6/EyzujrQb7b94zoZi8zDrv4xAIRwx1ui//Bc/lCAV5r9GhZoMGvnivx5NPurYHd+/65MNU1HJ17+SiNkBzxLQv/GDAnguNMC/B1wUMyamwbw=\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[100]}},\"selected\":{\"id\":\"1746\"},\"selection_policy\":{\"id\":\"1745\"}},\"id\":\"1731\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"source\":{\"id\":\"1750\"}},\"id\":\"1755\",\"type\":\"CDSView\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"#1f77b4\"},\"hatch_alpha\":{\"value\":0.2},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1734\",\"type\":\"Circle\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAAACRGkt8Vz/AP5EaS3xXP9A/2qdwOgNf2D+RGkt8Vz/gPzXhXVstT+Q/2qdwOgNf6D9+boMZ2W7sP5EaS3xXP/A/433Ua0JH8j814V1bLU/0P4dE50oYV/Y/2qdwOgNf+D8sC/op7mb6P35ugxnZbvw/0NEMCcR2/j+RGkt8Vz8AQDrMD/RMQwFA433Ua0JHAkCML5njN0sDQDXhXVstTwRA3pIi0yJTBUCHROdKGFcGQDD2q8INWwdA2qdwOgNfCECDWTWy+GIJQCwL+inuZgpA1by+oeNqC0B+boMZ2W4MQCcgSJHOcg1A0NEMCcR2DkB5g9GAuXoPQJEaS3xXPxBAZnMtOFLBEEA6zA/0TEMRQA8l8q9HxRFA433Ua0JHEkC41rYnPckSQIwvmeM3SxNAYYh7nzLNE0A14V1bLU8UQAo6QBco0RRA3pIi0yJTFUCz6wSPHdUVQIdE50oYVxZAXJ3JBhPZFkAw9qvCDVsXQAVPjn4I3RdA2qdwOgNfGECuAFP2/eAYQINZNbL4YhlAV7IXbvPkGUAsC/op7mYaQABk3OXo6BpA1by+oeNqG0CpFaFd3uwbQH5ugxnZbhxAUsdl1dPwHEAnIEiRznIdQPt4Kk3J9B1A0NEMCcR2HkCkKu/EvvgeQHmD0YC5eh9ATdyzPLT8H0CRGkt8Vz8gQPtGPNpUgCBAZnMtOFLBIEDQnx6WTwIhQDrMD/RMQyFApPgAUkqEIUAPJfKvR8UhQHlR4w1FBiJA433Ua0JHIkBNqsXJP4giQLjWtic9ySJAIgOohToKI0CML5njN0sjQPZbikE1jCNAYYh7nzLNI0DLtGz9Lw4kQDXhXVstTyRAoA1PuSqQJEAKOkAXKNEkQHRmMXUlEiVA3pIi0yJTJUBJvxMxIJQlQLPrBI8d1SVAHRj27BoWJkCHROdKGFcmQPJw2KgVmCZAXJ3JBhPZJkDGybpkEBonQDD2q8INWydAmyKdIAucJ0AFT45+CN0nQG97f9wFHihA2qdwOgNfKEBE1GGYAKAoQK4AU/b94ChAGC1EVPshKUA=\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[100]},\"y\":{\"__ndarray__\":\"AAAAAAAAAADwgwJ4LjTQP5qI2QHPEuA/+5MNU1HJ5z8ZTT7q2B3vP0aFmgwa+fI/ABg/lCAV9j+IQCEcMdb4P3fOhmLzMPs/EyzujrQb/T/9Izwlj47+PxccgYyLg/8/g6xao7j2/z9mZrL8O+b/P7+X94FZUv8/xVNiW3I9/j9RB8Ai+6v8P5FWKYlppPo/oSg6uxkv+D/Sh2bxK1b1PyZGRbpaJfI/8qg+VZVT7T/4C4p0qOPlP+UppLIiM9w/3FNHxZdVyD/J23zJpD6wv+3ENsZjOdS/wo12/ecH4r/dgWKM2Kjpv2MTsJELcPC/83ixWvXH87+358MBZM72v5eCD4nhdvm/rExY6Hq2+7+TIxAn7YP9vwSssILL1/6/70I4BJ6s/7/vOc8G+P7/vzTGy1KGzf+/3176khQZ/7/C8a4NiuT9vzGcHq/dNPy/l0FFlgER+r+EGZN4xoH3vx8WPFK3kfS/Cli7+O1M8b+HQNqEwoHrv9kfIiFb+OO/gKyggGI52L8EhrXMjDzAvyGGtcyMPMA/jqyggGI52D/gHyIhW/jjP4BA2oTCges/DVi7+O1M8T8cFjxSt5H0P4cZk3jGgfc/lUFFlgER+j8ynB6v3TT8P8Hxrg2K5P0/4F76khQZ/z80xstShs3/P+85zwb4/v8/8EI4BJ6s/z8DrLCCy9f+P5UjECftg/0/p0xY6Hq2+z+Vgg+J4Xb5P7fnwwFkzvY/9nixWvXH8z9dE7CRC3DwP9eBYozYqOk/w412/ecH4j/+xDbGYznUP0/bfMmkPrA/+FNHxZdVyL/UKaSyIjPcv+gLinSo4+W/+Kg+VZVT7b8lRkW6WiXyv8+HZvErVvW/pig6uxkv+L+TVimJaaT6v1EHwCL7q/y/xFNiW3I9/r/Al/eBWVL/v2Zmsvw75v+/g6xao7j2/78YHIGMi4P/v/sjPCWPjv6/EyzujrQb/b94zoZi8zD7v4xAIRwx1vi//Bc/lCAV9r9GhZoMGvnyvx5NPurYHe+/65MNU1HJ57+SiNkBzxLgv/GDAnguNNC/B1wUMyam0bw=\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[100]}},\"selected\":{\"id\":\"1767\"},\"selection_policy\":{\"id\":\"1766\"}},\"id\":\"1750\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1720\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"1701\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1740\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1750\"},\"glyph\":{\"id\":\"1751\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1753\"},\"nonselection_glyph\":{\"id\":\"1752\"},\"view\":{\"id\":\"1755\"}},\"id\":\"1754\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"1737\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"1746\",\"type\":\"Selection\"},{\"attributes\":{\"fill_color\":{\"value\":\"#1f77b4\"},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1732\",\"type\":\"Circle\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1740\"},\"group\":null,\"major_label_policy\":{\"id\":\"1741\"},\"ticker\":{\"id\":\"1714\"}},\"id\":\"1713\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1741\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1703\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1721\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"1705\",\"type\":\"LinearScale\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"orange\",\"line_dash\":[4,4],\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1752\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1718\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"1722\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"1710\",\"type\":\"BasicTicker\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#1f77b4\"},\"hatch_alpha\":{\"value\":0.1},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1733\",\"type\":\"Circle\"},{\"attributes\":{\"label\":{\"value\":\"sin(x)\"},\"renderers\":[{\"id\":\"1735\"}]},\"id\":\"1749\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"1767\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1717\",\"type\":\"PanTool\"},{\"attributes\":{\"line_color\":\"orange\",\"line_dash\":[4,4],\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1751\",\"type\":\"Line\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1743\"},\"group\":null,\"major_label_policy\":{\"id\":\"1744\"},\"ticker\":{\"id\":\"1710\"}},\"id\":\"1709\",\"type\":\"LinearAxis\"}],\"root_ids\":[\"1700\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.3\"}};\n",
|
899
|
-
" const render_items = [{\"docid\":\"16cf62cf-ba50-4a9b-8575-3c42da0e163d\",\"root_ids\":[\"1700\"],\"roots\":{\"1700\":\"59bb29bf-a9d0-44fb-af06-2cd3f3669c7a\"}}];\n",
|
900
|
-
" root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
|
901
|
-
" }\n",
|
902
|
-
" if (root.Bokeh !== undefined) {\n",
|
903
|
-
" embed_document(root);\n",
|
904
|
-
" } else {\n",
|
905
|
-
" let attempts = 0;\n",
|
906
|
-
" const timer = setInterval(function(root) {\n",
|
907
|
-
" if (root.Bokeh !== undefined) {\n",
|
908
|
-
" clearInterval(timer);\n",
|
909
|
-
" embed_document(root);\n",
|
910
|
-
" } else {\n",
|
911
|
-
" attempts++;\n",
|
912
|
-
" if (attempts > 100) {\n",
|
913
|
-
" clearInterval(timer);\n",
|
914
|
-
" console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n",
|
915
|
-
" }\n",
|
916
|
-
" }\n",
|
917
|
-
" }, 10, root)\n",
|
918
|
-
" }\n",
|
919
|
-
"})(window);"
|
920
|
-
],
|
921
|
-
"application/vnd.bokehjs_exec.v0+json": ""
|
922
|
-
},
|
923
|
-
"metadata": {
|
924
|
-
"application/vnd.bokehjs_exec.v0+json": {
|
925
|
-
"id": "1700"
|
926
|
-
}
|
927
|
-
},
|
928
|
-
"output_type": "display_data"
|
929
|
-
}
|
930
|
-
],
|
931
|
-
"source": [
|
932
|
-
"import numpy as np\n",
|
933
|
-
"\n",
|
934
|
-
"x = np.linspace(0, 4*np.pi, 100)\n",
|
935
|
-
"y = np.sin(x)\n",
|
936
|
-
"\n",
|
937
|
-
"p = figure(height=400)\n",
|
938
|
-
"\n",
|
939
|
-
"p.circle(x, y, legend_label=\"sin(x)\")\n",
|
940
|
-
"p.line(x, 2*y, legend_label=\"2*sin(x)\", line_dash=[4, 4], line_color=\"orange\", line_width=2)\n",
|
941
|
-
"\n",
|
942
|
-
"show(p)"
|
943
|
-
]
|
944
|
-
},
|
945
|
-
{
|
946
|
-
"cell_type": "markdown",
|
947
|
-
"metadata": {},
|
948
|
-
"source": [
|
949
|
-
"### Compound legends\n",
|
950
|
-
"\n",
|
951
|
-
"In the example above, we provided a different legend label to each glyph method. Sometimes, two (or more) different glyphs are used with a single data source. In this case, you can make compound legends by specifying the same legend argument to multiple glyph methods when creating a plot, for example, if you plot a `sin` curve with both a line and a marker, you may give them the same label to cause them to show up together in the legend:\n",
|
952
|
-
"\n",
|
953
|
-
"```python\n",
|
954
|
-
"p.circle(x, y, legend_label=\"sin(x)\")\n",
|
955
|
-
"p.line(x, y, legend_label=\"sin(x)\", line_dash=[4, 4], line_color=\"orange\", line_width=2)\n",
|
956
|
-
"```\n"
|
957
|
-
]
|
958
|
-
},
|
959
|
-
{
|
960
|
-
"cell_type": "code",
|
961
|
-
"execution_count": 14,
|
962
|
-
"metadata": {},
|
963
|
-
"outputs": [],
|
964
|
-
"source": [
|
965
|
-
"# EXERCISE: \n",
|
966
|
-
"# (1) Making a compound legend \n",
|
967
|
-
"# (2) Position the legend using p.legend.location. Possible values are listed at:\n",
|
968
|
-
"# https://bokeh.pydata.org/en/latest/docs/reference/core/enums.html#bokeh.core.enums.Anchor\n",
|
969
|
-
"\n"
|
970
|
-
]
|
971
|
-
},
|
972
|
-
{
|
973
|
-
"cell_type": "markdown",
|
974
|
-
"metadata": {},
|
975
|
-
"source": [
|
976
|
-
"## Color bars\n",
|
977
|
-
"\n",
|
978
|
-
"Color bars are especially useful if we vary the color of a glyph according to some color mapping. Bokeh color bars are configured with a color mapper and added to plots with the `add_layout` method:\n",
|
979
|
-
"```python\n",
|
980
|
-
"color_mapper = LinearColorMapper(palette=\"Viridis256\", low=data_low, high=data_high)\n",
|
981
|
-
"color_bar = ColorBar(color_mapper=color_mapper, location=(0,0))\n",
|
982
|
-
"p.add_layout(color_bar, 'right')\n",
|
983
|
-
"```\n",
|
984
|
-
"The example below shows a complete example that also uses the color mapper to transform the glyph color."
|
985
|
-
]
|
986
|
-
},
|
987
|
-
{
|
988
|
-
"cell_type": "code",
|
989
|
-
"execution_count": 15,
|
990
|
-
"metadata": {},
|
991
|
-
"outputs": [
|
992
|
-
{
|
993
|
-
"data": {
|
994
|
-
"text/html": [
|
995
|
-
"\n",
|
996
|
-
" <div class=\"bk-root\" id=\"f9fc27e8-5443-468d-a655-daf321fb289e\" data-root-id=\"1914\"></div>\n"
|
997
|
-
]
|
998
|
-
},
|
999
|
-
"metadata": {},
|
1000
|
-
"output_type": "display_data"
|
1001
|
-
},
|
1002
|
-
{
|
1003
|
-
"data": {
|
1004
|
-
"application/javascript": [
|
1005
|
-
"(function(root) {\n",
|
1006
|
-
" function embed_document(root) {\n",
|
1007
|
-
" const docs_json = {\"1ea3963c-d3f5-4fd6-acb9-a302de1df32e\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1923\"}],\"center\":[{\"id\":\"1926\"},{\"id\":\"1930\"}],\"left\":[{\"id\":\"1927\"}],\"renderers\":[{\"id\":\"1937\"}],\"right\":[{\"id\":\"1939\"}],\"title\":{\"id\":\"2017\"},\"toolbar\":{\"id\":\"1931\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"1915\"},\"x_scale\":{\"id\":\"1919\"},\"y_range\":{\"id\":\"1917\"},\"y_scale\":{\"id\":\"1921\"}},\"id\":\"1914\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"2024\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1931\",\"type\":\"Toolbar\"},{\"attributes\":{\"high\":5140,\"low\":1613,\"palette\":[\"#440154\",\"#440255\",\"#440357\",\"#450558\",\"#45065A\",\"#45085B\",\"#46095C\",\"#460B5E\",\"#460C5F\",\"#460E61\",\"#470F62\",\"#471163\",\"#471265\",\"#471466\",\"#471567\",\"#471669\",\"#47186A\",\"#48196B\",\"#481A6C\",\"#481C6E\",\"#481D6F\",\"#481E70\",\"#482071\",\"#482172\",\"#482273\",\"#482374\",\"#472575\",\"#472676\",\"#472777\",\"#472878\",\"#472A79\",\"#472B7A\",\"#472C7B\",\"#462D7C\",\"#462F7C\",\"#46307D\",\"#46317E\",\"#45327F\",\"#45347F\",\"#453580\",\"#453681\",\"#443781\",\"#443982\",\"#433A83\",\"#433B83\",\"#433C84\",\"#423D84\",\"#423E85\",\"#424085\",\"#414186\",\"#414286\",\"#404387\",\"#404487\",\"#3F4587\",\"#3F4788\",\"#3E4888\",\"#3E4989\",\"#3D4A89\",\"#3D4B89\",\"#3D4C89\",\"#3C4D8A\",\"#3C4E8A\",\"#3B508A\",\"#3B518A\",\"#3A528B\",\"#3A538B\",\"#39548B\",\"#39558B\",\"#38568B\",\"#38578C\",\"#37588C\",\"#37598C\",\"#365A8C\",\"#365B8C\",\"#355C8C\",\"#355D8C\",\"#345E8D\",\"#345F8D\",\"#33608D\",\"#33618D\",\"#32628D\",\"#32638D\",\"#31648D\",\"#31658D\",\"#31668D\",\"#30678D\",\"#30688D\",\"#2F698D\",\"#2F6A8D\",\"#2E6B8E\",\"#2E6C8E\",\"#2E6D8E\",\"#2D6E8E\",\"#2D6F8E\",\"#2C708E\",\"#2C718E\",\"#2C728E\",\"#2B738E\",\"#2B748E\",\"#2A758E\",\"#2A768E\",\"#2A778E\",\"#29788E\",\"#29798E\",\"#287A8E\",\"#287A8E\",\"#287B8E\",\"#277C8E\",\"#277D8E\",\"#277E8E\",\"#267F8E\",\"#26808E\",\"#26818E\",\"#25828E\",\"#25838D\",\"#24848D\",\"#24858D\",\"#24868D\",\"#23878D\",\"#23888D\",\"#23898D\",\"#22898D\",\"#228A8D\",\"#228B8D\",\"#218C8D\",\"#218D8C\",\"#218E8C\",\"#208F8C\",\"#20908C\",\"#20918C\",\"#1F928C\",\"#1F938B\",\"#1F948B\",\"#1F958B\",\"#1F968B\",\"#1E978A\",\"#1E988A\",\"#1E998A\",\"#1E998A\",\"#1E9A89\",\"#1E9B89\",\"#1E9C89\",\"#1E9D88\",\"#1E9E88\",\"#1E9F88\",\"#1EA087\",\"#1FA187\",\"#1FA286\",\"#1FA386\",\"#20A485\",\"#20A585\",\"#21A685\",\"#21A784\",\"#22A784\",\"#23A883\",\"#23A982\",\"#24AA82\",\"#25AB81\",\"#26AC81\",\"#27AD80\",\"#28AE7F\",\"#29AF7F\",\"#2AB07E\",\"#2BB17D\",\"#2CB17D\",\"#2EB27C\",\"#2FB37B\",\"#30B47A\",\"#32B57A\",\"#33B679\",\"#35B778\",\"#36B877\",\"#38B976\",\"#39B976\",\"#3BBA75\",\"#3DBB74\",\"#3EBC73\",\"#40BD72\",\"#42BE71\",\"#44BE70\",\"#45BF6F\",\"#47C06E\",\"#49C16D\",\"#4BC26C\",\"#4DC26B\",\"#4FC369\",\"#51C468\",\"#53C567\",\"#55C666\",\"#57C665\",\"#59C764\",\"#5BC862\",\"#5EC961\",\"#60C960\",\"#62CA5F\",\"#64CB5D\",\"#67CC5C\",\"#69CC5B\",\"#6BCD59\",\"#6DCE58\",\"#70CE56\",\"#72CF55\",\"#74D054\",\"#77D052\",\"#79D151\",\"#7CD24F\",\"#7ED24E\",\"#81D34C\",\"#83D34B\",\"#86D449\",\"#88D547\",\"#8BD546\",\"#8DD644\",\"#90D643\",\"#92D741\",\"#95D73F\",\"#97D83E\",\"#9AD83C\",\"#9DD93A\",\"#9FD938\",\"#A2DA37\",\"#A5DA35\",\"#A7DB33\",\"#AADB32\",\"#ADDC30\",\"#AFDC2E\",\"#B2DD2C\",\"#B5DD2B\",\"#B7DD29\",\"#BADE27\",\"#BDDE26\",\"#BFDF24\",\"#C2DF22\",\"#C5DF21\",\"#C7E01F\",\"#CAE01E\",\"#CDE01D\",\"#CFE11C\",\"#D2E11B\",\"#D4E11A\",\"#D7E219\",\"#DAE218\",\"#DCE218\",\"#DFE318\",\"#E1E318\",\"#E4E318\",\"#E7E419\",\"#E9E419\",\"#ECE41A\",\"#EEE51B\",\"#F1E51C\",\"#F3E51E\",\"#F6E61F\",\"#F8E621\",\"#FAE622\",\"#FDE724\"]},\"id\":\"1913\",\"type\":\"LinearColorMapper\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"2017\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"2021\",\"type\":\"AllLabels\"},{\"attributes\":{\"axis\":{\"id\":\"1927\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1930\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1928\",\"type\":\"BasicTicker\"},{\"attributes\":{\"data\":{\"accel\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[392]},\"cyl\":[8,8,8,8,8,8,8,8,8,8,8,8,8,8,4,6,6,6,4,4,4,4,4,4,6,8,8,8,8,4,4,4,6,6,6,6,6,8,8,8,8,8,8,8,6,4,6,6,4,4,4,4,4,4,4,4,4,4,4,4,4,8,8,8,8,8,8,8,8,8,3,8,8,8,8,4,4,4,4,4,4,4,4,4,8,8,8,8,8,8,8,8,8,8,8,8,6,6,6,6,6,4,8,8,8,8,6,4,4,4,3,4,6,4,8,8,4,4,4,4,8,4,6,8,6,6,6,4,4,4,4,6,6,6,8,8,8,8,8,4,4,4,4,4,4,4,4,4,4,4,6,6,6,6,8,8,8,8,6,6,6,6,6,8,8,4,4,6,4,4,4,4,6,4,6,4,4,4,4,4,4,4,4,4,4,8,8,8,8,6,6,6,6,4,4,4,4,6,6,6,6,4,4,4,4,4,8,4,6,6,8,8,8,8,4,4,4,4,4,8,8,8,8,6,6,6,6,8,8,8,8,4,4,4,4,4,4,4,4,6,4,3,4,4,4,4,4,8,8,8,6,6,6,4,6,6,6,6,6,6,8,6,8,8,4,4,4,4,4,4,4,4,5,6,4,6,4,4,6,6,4,6,6,8,8,8,8,8,8,8,8,4,4,4,4,5,8,4,8,4,4,4,4,4,6,6,4,4,4,4,4,4,4,4,6,4,4,4,4,4,4,4,4,4,4,5,4,4,4,4,6,3,4,4,4,4,4,6,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,6,6,6,6,8,6,6,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,6,6,4,6,4,4,4,4,4,4,4,4],\"displ\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[392]},\"hp\":[130,165,150,150,140,198,220,215,225,190,170,160,150,225,95,95,97,85,88,46,87,90,95,113,90,215,200,210,193,88,90,95,100,105,100,88,100,165,175,153,150,180,170,175,110,72,100,88,86,90,70,76,65,69,60,70,95,80,54,90,86,165,175,150,153,150,208,155,160,190,97,150,130,140,150,112,76,87,69,86,92,97,80,88,175,150,145,137,150,198,150,158,150,215,225,175,105,100,100,88,95,46,150,167,170,180,100,88,72,94,90,85,107,90,145,230,49,75,91,112,150,110,122,180,95,100,100,67,80,65,75,100,110,105,140,150,150,140,150,83,67,78,52,61,75,75,75,97,93,67,95,105,72,72,170,145,150,148,110,105,110,95,110,110,129,75,83,100,78,96,71,97,97,70,90,95,88,98,115,53,86,81,92,79,83,140,150,120,152,100,105,81,90,52,60,70,53,100,78,110,95,71,70,75,72,102,150,88,108,120,180,145,130,150,68,80,58,96,70,145,110,145,130,110,105,100,98,180,170,190,149,78,88,75,89,63,83,67,78,97,110,110,48,66,52,70,60,110,140,139,105,95,85,88,100,90,105,85,110,120,145,165,139,140,68,95,97,75,95,105,85,97,103,125,115,133,71,68,115,85,88,90,110,130,129,138,135,155,142,125,150,71,65,80,80,77,125,71,90,70,70,65,69,90,115,115,90,76,60,70,65,90,88,90,90,78,90,75,92,75,65,105,65,48,48,67,67,67,67,62,132,100,88,72,84,84,92,110,84,58,64,60,67,65,62,68,63,65,65,74,75,75,100,74,80,76,116,120,110,105,88,85,88,88,88,85,84,90,92,74,68,68,63,70,88,75,70,67,67,67,110,85,92,112,96,84,90,86,52,84,79,82],\"index\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391],\"mpg\":{\"__ndarray__\":\"AAAAAAAAMkAAAAAAAAAuQAAAAAAAADJAAAAAAAAAMEAAAAAAAAAxQAAAAAAAAC5AAAAAAAAALEAAAAAAAAAsQAAAAAAAACxAAAAAAAAALkAAAAAAAAAuQAAAAAAAACxAAAAAAAAALkAAAAAAAAAsQAAAAAAAADhAAAAAAAAANkAAAAAAAAAyQAAAAAAAADVAAAAAAAAAO0AAAAAAAAA6QAAAAAAAADlAAAAAAAAAOEAAAAAAAAA5QAAAAAAAADpAAAAAAAAANUAAAAAAAAAkQAAAAAAAACRAAAAAAAAAJkAAAAAAAAAiQAAAAAAAADtAAAAAAAAAPEAAAAAAAAA5QAAAAAAAADNAAAAAAAAAMEAAAAAAAAAxQAAAAAAAADNAAAAAAAAAMkAAAAAAAAAsQAAAAAAAACxAAAAAAAAALEAAAAAAAAAsQAAAAAAAAChAAAAAAAAAKkAAAAAAAAAqQAAAAAAAADJAAAAAAAAANkAAAAAAAAAzQAAAAAAAADJAAAAAAAAAN0AAAAAAAAA8QAAAAAAAAD5AAAAAAAAAPkAAAAAAAAA/QAAAAAAAgEFAAAAAAAAAO0AAAAAAAAA6QAAAAAAAADhAAAAAAAAAOUAAAAAAAAA3QAAAAAAAADRAAAAAAAAANUAAAAAAAAAqQAAAAAAAACxAAAAAAAAALkAAAAAAAAAsQAAAAAAAADFAAAAAAAAAJkAAAAAAAAAqQAAAAAAAAChAAAAAAAAAKkAAAAAAAAAzQAAAAAAAAC5AAAAAAAAAKkAAAAAAAAAqQAAAAAAAACxAAAAAAAAAMkAAAAAAAAA2QAAAAAAAADVAAAAAAAAAOkAAAAAAAAA2QAAAAAAAADxAAAAAAAAAN0AAAAAAAAA8QAAAAAAAADtAAAAAAAAAKkAAAAAAAAAsQAAAAAAAACpAAAAAAAAALEAAAAAAAAAuQAAAAAAAAChAAAAAAAAAKkAAAAAAAAAqQAAAAAAAACxAAAAAAAAAKkAAAAAAAAAoQAAAAAAAACpAAAAAAAAAMkAAAAAAAAAwQAAAAAAAADJAAAAAAAAAMkAAAAAAAAA3QAAAAAAAADpAAAAAAAAAJkAAAAAAAAAoQAAAAAAAACpAAAAAAAAAKEAAAAAAAAAyQAAAAAAAADRAAAAAAAAANUAAAAAAAAA2QAAAAAAAADJAAAAAAAAAM0AAAAAA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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[392]},\"name\":[\"chevrolet chevelle malibu\",\"buick skylark 320\",\"plymouth satellite\",\"amc rebel sst\",\"ford torino\",\"ford galaxie 500\",\"chevrolet impala\",\"plymouth fury iii\",\"pontiac catalina\",\"amc ambassador dpl\",\"dodge challenger se\",\"plymouth 'cuda 340\",\"chevrolet monte carlo\",\"buick estate wagon (sw)\",\"toyota corona mark ii\",\"plymouth duster\",\"amc hornet\",\"ford maverick\",\"datsun pl510\",\"volkswagen 1131 deluxe sedan\",\"peugeot 504\",\"audi 100 ls\",\"saab 99e\",\"bmw 2002\",\"amc gremlin\",\"ford f250\",\"chevy c20\",\"dodge d200\",\"hi 1200d\",\"datsun pl510\",\"chevrolet vega 2300\",\"toyota corona\",\"amc gremlin\",\"plymouth satellite custom\",\"chevrolet chevelle malibu\",\"ford torino 500\",\"amc matador\",\"chevrolet impala\",\"pontiac catalina brougham\",\"ford galaxie 500\",\"plymouth fury iii\",\"dodge monaco (sw)\",\"ford country squire (sw)\",\"pontiac safari (sw)\",\"amc hornet sportabout (sw)\",\"chevrolet vega (sw)\",\"pontiac firebird\",\"ford mustang\",\"mercury capri 2000\",\"opel 1900\",\"peugeot 304\",\"fiat 124b\",\"toyota corolla 1200\",\"datsun 1200\",\"volkswagen model 111\",\"plymouth cricket\",\"toyota corona hardtop\",\"dodge colt hardtop\",\"volkswagen type 3\",\"chevrolet vega\",\"ford pinto runabout\",\"chevrolet impala\",\"pontiac catalina\",\"plymouth fury iii\",\"ford galaxie 500\",\"amc ambassador sst\",\"mercury marquis\",\"buick lesabre custom\",\"oldsmobile delta 88 royale\",\"chrysler newport royal\",\"mazda rx2 coupe\",\"amc matador (sw)\",\"chevrolet chevelle concours (sw)\",\"ford gran torino (sw)\",\"plymouth satellite custom (sw)\",\"volvo 145e (sw)\",\"volkswagen 411 (sw)\",\"peugeot 504 (sw)\",\"renault 12 (sw)\",\"ford pinto (sw)\",\"datsun 510 (sw)\",\"toyouta corona mark ii (sw)\",\"dodge colt (sw)\",\"toyota corolla 1600 (sw)\",\"buick century 350\",\"amc matador\",\"chevrolet malibu\",\"ford gran torino\",\"dodge coronet custom\",\"mercury marquis brougham\",\"chevrolet caprice classic\",\"ford ltd\",\"plymouth fury gran sedan\",\"chrysler new yorker brougham\",\"buick electra 225 custom\",\"amc ambassador brougham\",\"plymouth valiant\",\"chevrolet nova custom\",\"amc hornet\",\"ford maverick\",\"plymouth duster\",\"volkswagen super beetle\",\"chevrolet impala\",\"ford country\",\"plymouth custom suburb\",\"oldsmobile vista cruiser\",\"amc gremlin\",\"toyota carina\",\"chevrolet vega\",\"datsun 610\",\"maxda rx3\",\"ford pinto\",\"mercury capri v6\",\"fiat 124 sport coupe\",\"chevrolet monte carlo s\",\"pontiac grand prix\",\"fiat 128\",\"opel manta\",\"audi 100ls\",\"volvo 144ea\",\"dodge dart custom\",\"saab 99le\",\"toyota mark ii\",\"oldsmobile omega\",\"plymouth duster\",\"amc hornet\",\"chevrolet nova\",\"datsun b210\",\"ford pinto\",\"toyota corolla 1200\",\"chevrolet vega\",\"chevrolet chevelle malibu classic\",\"amc matador\",\"plymouth satellite sebring\",\"ford gran torino\",\"buick century luxus (sw)\",\"dodge coronet custom (sw)\",\"ford gran torino (sw)\",\"amc matador (sw)\",\"audi fox\",\"volkswagen dasher\",\"opel manta\",\"toyota corona\",\"datsun 710\",\"dodge colt\",\"fiat 128\",\"fiat 124 tc\",\"honda civic\",\"subaru\",\"fiat x1.9\",\"plymouth valiant custom\",\"chevrolet nova\",\"mercury monarch\",\"ford maverick\",\"pontiac catalina\",\"chevrolet bel air\",\"plymouth grand fury\",\"ford ltd\",\"buick century\",\"chevroelt chevelle malibu\",\"amc matador\",\"plymouth fury\",\"buick skyhawk\",\"chevrolet monza 2+2\",\"ford mustang ii\",\"toyota corolla\",\"ford pinto\",\"amc gremlin\",\"pontiac astro\",\"toyota corona\",\"volkswagen dasher\",\"datsun 710\",\"ford pinto\",\"volkswagen rabbit\",\"amc pacer\",\"audi 100ls\",\"peugeot 504\",\"volvo 244dl\",\"saab 99le\",\"honda civic cvcc\",\"fiat 131\",\"opel 1900\",\"capri ii\",\"dodge colt\",\"renault 12tl\",\"chevrolet chevelle malibu classic\",\"dodge coronet brougham\",\"amc matador\",\"ford gran torino\",\"plymouth valiant\",\"chevrolet nova\",\"ford maverick\",\"amc hornet\",\"chevrolet chevette\",\"chevrolet woody\",\"vw rabbit\",\"honda civic\",\"dodge aspen se\",\"ford granada ghia\",\"pontiac ventura sj\",\"amc pacer d/l\",\"volkswagen rabbit\",\"datsun b-210\",\"toyota corolla\",\"ford pinto\",\"volvo 245\",\"plymouth volare premier v8\",\"peugeot 504\",\"toyota mark ii\",\"mercedes-benz 280s\",\"cadillac seville\",\"chevy c10\",\"ford f108\",\"dodge d100\",\"honda accord cvcc\",\"buick opel isuzu deluxe\",\"renault 5 gtl\",\"plymouth arrow gs\",\"datsun f-10 hatchback\",\"chevrolet caprice classic\",\"oldsmobile cutlass supreme\",\"dodge monaco brougham\",\"mercury cougar brougham\",\"chevrolet concours\",\"buick skylark\",\"plymouth volare custom\",\"ford granada\",\"pontiac grand prix lj\",\"chevrolet monte carlo landau\",\"chrysler cordoba\",\"ford thunderbird\",\"volkswagen rabbit custom\",\"pontiac sunbird coupe\",\"toyota corolla liftback\",\"ford mustang ii 2+2\",\"chevrolet chevette\",\"dodge colt m/m\",\"subaru dl\",\"volkswagen dasher\",\"datsun 810\",\"bmw 320i\",\"mazda rx-4\",\"volkswagen rabbit custom diesel\",\"ford fiesta\",\"mazda glc deluxe\",\"datsun b210 gx\",\"honda civic cvcc\",\"oldsmobile cutlass salon brougham\",\"dodge diplomat\",\"mercury monarch ghia\",\"pontiac phoenix lj\",\"chevrolet malibu\",\"ford fairmont (auto)\",\"ford fairmont (man)\",\"plymouth volare\",\"amc concord\",\"buick century special\",\"mercury zephyr\",\"dodge aspen\",\"amc concord d/l\",\"chevrolet monte carlo landau\",\"buick regal sport coupe (turbo)\",\"ford futura\",\"dodge magnum xe\",\"chevrolet chevette\",\"toyota corona\",\"datsun 510\",\"dodge omni\",\"toyota celica gt liftback\",\"plymouth sapporo\",\"oldsmobile starfire sx\",\"datsun 200-sx\",\"audi 5000\",\"volvo 264gl\",\"saab 99gle\",\"peugeot 604sl\",\"volkswagen scirocco\",\"honda accord lx\",\"pontiac lemans v6\",\"mercury zephyr 6\",\"ford fairmont 4\",\"amc concord dl 6\",\"dodge aspen 6\",\"chevrolet caprice classic\",\"ford ltd landau\",\"mercury grand marquis\",\"dodge st. regis\",\"buick estate wagon (sw)\",\"ford country squire (sw)\",\"chevrolet malibu classic (sw)\",\"chrysler lebaron town @ country (sw)\",\"vw rabbit custom\",\"maxda glc deluxe\",\"dodge colt hatchback custom\",\"amc spirit dl\",\"mercedes benz 300d\",\"cadillac eldorado\",\"peugeot 504\",\"oldsmobile cutlass salon brougham\",\"plymouth horizon\",\"plymouth horizon tc3\",\"datsun 210\",\"fiat strada custom\",\"buick skylark limited\",\"chevrolet citation\",\"oldsmobile omega brougham\",\"pontiac phoenix\",\"vw rabbit\",\"toyota corolla tercel\",\"chevrolet chevette\",\"datsun 310\",\"chevrolet citation\",\"ford fairmont\",\"amc concord\",\"dodge aspen\",\"audi 4000\",\"toyota corona liftback\",\"mazda 626\",\"datsun 510 hatchback\",\"toyota corolla\",\"mazda glc\",\"dodge colt\",\"datsun 210\",\"vw rabbit c (diesel)\",\"vw dasher (diesel)\",\"audi 5000s (diesel)\",\"mercedes-benz 240d\",\"honda civic 1500 gl\",\"subaru dl\",\"vokswagen rabbit\",\"datsun 280-zx\",\"mazda rx-7 gs\",\"triumph tr7 coupe\",\"honda accord\",\"plymouth reliant\",\"buick skylark\",\"dodge aries wagon (sw)\",\"chevrolet citation\",\"plymouth reliant\",\"toyota starlet\",\"plymouth champ\",\"honda civic 1300\",\"subaru\",\"datsun 210 mpg\",\"toyota tercel\",\"mazda glc 4\",\"plymouth horizon 4\",\"ford escort 4w\",\"ford escort 2h\",\"volkswagen jetta\",\"honda prelude\",\"toyota corolla\",\"datsun 200sx\",\"mazda 626\",\"peugeot 505s turbo diesel\",\"volvo diesel\",\"toyota cressida\",\"datsun 810 maxima\",\"buick century\",\"oldsmobile cutlass ls\",\"ford granada gl\",\"chrysler lebaron salon\",\"chevrolet cavalier\",\"chevrolet cavalier wagon\",\"chevrolet cavalier 2-door\",\"pontiac j2000 se hatchback\",\"dodge aries se\",\"pontiac phoenix\",\"ford fairmont futura\",\"volkswagen rabbit l\",\"mazda glc custom l\",\"mazda glc custom\",\"plymouth horizon miser\",\"mercury lynx l\",\"nissan stanza xe\",\"honda accord\",\"toyota corolla\",\"honda civic\",\"honda civic (auto)\",\"datsun 310 gx\",\"buick century limited\",\"oldsmobile cutlass ciera (diesel)\",\"chrysler lebaron medallion\",\"ford granada l\",\"toyota celica gt\",\"dodge charger 2.2\",\"chevrolet camaro\",\"ford mustang gl\",\"vw pickup\",\"dodge rampage\",\"ford ranger\",\"chevy s-10\"],\"origin\":[1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,3,2,2,2,2,2,1,1,1,1,1,3,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,3,3,2,1,3,1,2,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,2,2,2,2,1,3,3,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,3,1,3,3,1,1,2,1,1,2,2,2,2,1,2,3,1,1,1,1,3,1,3,1,1,1,1,1,1,1,1,1,2,2,2,3,3,1,2,2,3,3,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,3,2,3,1,2,1,2,2,2,2,3,2,2,1,1,2,1,1,1,1,1,1,1,1,1,1,2,3,1,1,1,1,2,3,3,1,2,1,2,3,2,1,1,1,1,3,1,2,1,3,1,1,1,1,1,1,1,1,1,1,1,1,2,1,3,1,1,1,3,2,3,2,3,2,1,3,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,1,3,1,1,3,2,2,2,2,2,3,1,1,1,1,1,1,1,1,1,1,1,1,1,2,3,1,1,2,1,2,1,1,1,3,2,1,1,1,1,2,3,1,3,1,1,1,1,2,3,3,3,3,3,1,3,2,2,2,2,3,3,2,3,3,2,3,1,1,1,1,1,3,1,3,3,3,3,3,1,1,1,2,3,3,3,3,2,2,3,3,1,1,1,1,1,1,1,1,1,1,1,2,3,3,1,1,3,3,3,3,3,3,1,1,1,1,3,1,1,1,2,1,1,1],\"weight\":[3504,3693,3436,3433,3449,4341,4354,4312,4425,3850,3563,3609,3761,3086,2372,2833,2774,2587,2130,1835,2672,2430,2375,2234,2648,4615,4376,4382,4732,2130,2264,2228,2634,3439,3329,3302,3288,4209,4464,4154,4096,4955,4746,5140,2962,2408,3282,3139,2220,2123,2074,2065,1773,1613,1834,1955,2278,2126,2254,2408,2226,4274,4385,4135,4129,3672,4633,4502,4456,4422,2330,3892,4098,4294,4077,2933,2511,2979,2189,2395,2288,2506,2164,2100,4100,3672,3988,4042,3777,4952,4464,4363,4237,4735,4951,3821,3121,3278,2945,3021,2904,1950,4997,4906,4654,4499,2789,2279,2401,2379,2124,2310,2472,2265,4082,4278,1867,2158,2582,2868,3399,2660,2807,3664,3102,2901,3336,1950,2451,1836,2542,3781,3632,3613,4141,4699,4457,4638,4257,2219,1963,2300,1649,2003,2125,2108,2246,2489,2391,2000,3264,3459,3432,3158,4668,4440,4498,4657,3907,3897,3730,3785,3039,3221,3169,2171,2639,2914,2592,2702,2223,2545,2984,1937,3211,2694,2957,2945,2671,1795,2464,2220,2572,2255,2202,4215,4190,3962,4215,3233,3353,3012,3085,2035,2164,1937,1795,3651,3574,3645,3193,1825,1990,2155,2565,3150,3940,3270,2930,3820,4380,4055,3870,3755,2045,2155,1825,2300,1945,3880,4060,4140,4295,3520,3425,3630,3525,4220,4165,4325,4335,1940,2740,2265,2755,2051,2075,1985,2190,2815,2600,2720,1985,1800,1985,2070,1800,3365,3735,3570,3535,3155,2965,2720,3430,3210,3380,3070,3620,3410,3425,3445,3205,4080,2155,2560,2300,2230,2515,2745,2855,2405,2830,3140,2795,3410,1990,2135,3245,2990,2890,3265,3360,3840,3725,3955,3830,4360,4054,3605,3940,1925,1975,1915,2670,3530,3900,3190,3420,2200,2150,2020,2130,2670,2595,2700,2556,2144,1968,2120,2019,2678,2870,3003,3381,2188,2711,2542,2434,2265,2110,2800,2110,2085,2335,2950,3250,1850,2145,1845,2910,2420,2500,2290,2490,2635,2620,2725,2385,1755,1875,1760,2065,1975,2050,1985,2215,2045,2380,2190,2210,2350,2615,2635,3230,3160,2900,2930,3415,3725,3060,3465,2605,2640,2395,2575,2525,2735,2865,1980,2025,1970,2125,2125,2160,2205,2245,1965,1965,1995,2945,3015,2585,2835,2665,2370,2950,2790,2130,2295,2625,2720],\"yr\":[70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82]},\"selected\":{\"id\":\"2027\"},\"selection_policy\":{\"id\":\"2026\"}},\"id\":\"1932\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1921\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1924\",\"type\":\"BasicTicker\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1932\"},\"glyph\":{\"id\":\"1934\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1936\"},\"nonselection_glyph\":{\"id\":\"1935\"},\"view\":{\"id\":\"1938\"}},\"id\":\"1937\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"axis_label\":\"Horsepower\",\"coordinates\":null,\"formatter\":{\"id\":\"2024\"},\"group\":null,\"major_label_policy\":{\"id\":\"2025\"},\"ticker\":{\"id\":\"1924\"}},\"id\":\"1923\",\"type\":\"LinearAxis\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"field\":\"weight\",\"transform\":{\"id\":\"1913\"}},\"hatch_alpha\":{\"value\":0.2},\"hatch_color\":{\"field\":\"weight\",\"transform\":{\"id\":\"1913\"}},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"field\":\"weight\",\"transform\":{\"id\":\"1913\"}},\"size\":{\"value\":20},\"x\":{\"field\":\"hp\"},\"y\":{\"field\":\"mpg\"}},\"id\":\"1936\",\"type\":\"Circle\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.6},\"fill_color\":{\"field\":\"weight\",\"transform\":{\"id\":\"1913\"}},\"hatch_alpha\":{\"value\":0.6},\"hatch_color\":{\"field\":\"weight\",\"transform\":{\"id\":\"1913\"}},\"line_alpha\":{\"value\":0.6},\"line_color\":{\"field\":\"weight\",\"transform\":{\"id\":\"1913\"}},\"size\":{\"value\":20},\"x\":{\"field\":\"hp\"},\"y\":{\"field\":\"mpg\"}},\"id\":\"1934\",\"type\":\"Circle\"},{\"attributes\":{},\"id\":\"2027\",\"type\":\"Selection\"},{\"attributes\":{\"axis\":{\"id\":\"1923\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"1926\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1919\",\"type\":\"LinearScale\"},{\"attributes\":{\"axis_label\":\"MPG\",\"coordinates\":null,\"formatter\":{\"id\":\"2020\"},\"group\":null,\"major_label_policy\":{\"id\":\"2021\"},\"ticker\":{\"id\":\"1928\"}},\"id\":\"1927\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"2022\",\"type\":\"NoOverlap\"},{\"attributes\":{},\"id\":\"1917\",\"type\":\"DataRange1d\"},{\"attributes\":{\"color_mapper\":{\"id\":\"1913\"},\"coordinates\":null,\"group\":null,\"label_standoff\":12,\"location\":[0,0],\"major_label_policy\":{\"id\":\"2022\"},\"title\":\"Weight\"},\"id\":\"1939\",\"type\":\"ColorBar\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"field\":\"weight\",\"transform\":{\"id\":\"1913\"}},\"hatch_alpha\":{\"value\":0.1},\"hatch_color\":{\"field\":\"weight\",\"transform\":{\"id\":\"1913\"}},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"field\":\"weight\",\"transform\":{\"id\":\"1913\"}},\"size\":{\"value\":20},\"x\":{\"field\":\"hp\"},\"y\":{\"field\":\"mpg\"}},\"id\":\"1935\",\"type\":\"Circle\"},{\"attributes\":{},\"id\":\"2020\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"2025\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"2026\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1915\",\"type\":\"DataRange1d\"},{\"attributes\":{\"source\":{\"id\":\"1932\"}},\"id\":\"1938\",\"type\":\"CDSView\"}],\"root_ids\":[\"1914\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.3\"}};\n",
|
1008
|
-
" const render_items = [{\"docid\":\"1ea3963c-d3f5-4fd6-acb9-a302de1df32e\",\"root_ids\":[\"1914\"],\"roots\":{\"1914\":\"f9fc27e8-5443-468d-a655-daf321fb289e\"}}];\n",
|
1009
|
-
" root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
|
1010
|
-
" }\n",
|
1011
|
-
" if (root.Bokeh !== undefined) {\n",
|
1012
|
-
" embed_document(root);\n",
|
1013
|
-
" } else {\n",
|
1014
|
-
" let attempts = 0;\n",
|
1015
|
-
" const timer = setInterval(function(root) {\n",
|
1016
|
-
" if (root.Bokeh !== undefined) {\n",
|
1017
|
-
" clearInterval(timer);\n",
|
1018
|
-
" embed_document(root);\n",
|
1019
|
-
" } else {\n",
|
1020
|
-
" attempts++;\n",
|
1021
|
-
" if (attempts > 100) {\n",
|
1022
|
-
" clearInterval(timer);\n",
|
1023
|
-
" console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n",
|
1024
|
-
" }\n",
|
1025
|
-
" }\n",
|
1026
|
-
" }, 10, root)\n",
|
1027
|
-
" }\n",
|
1028
|
-
"})(window);"
|
1029
|
-
],
|
1030
|
-
"application/vnd.bokehjs_exec.v0+json": ""
|
1031
|
-
},
|
1032
|
-
"metadata": {
|
1033
|
-
"application/vnd.bokehjs_exec.v0+json": {
|
1034
|
-
"id": "1914"
|
1035
|
-
}
|
1036
|
-
},
|
1037
|
-
"output_type": "display_data"
|
1038
|
-
}
|
1039
|
-
],
|
1040
|
-
"source": [
|
1041
|
-
"from bokeh.sampledata.autompg import autompg\n",
|
1042
|
-
"from bokeh.models import LinearColorMapper, ColorBar\n",
|
1043
|
-
"from bokeh.transform import transform\n",
|
1044
|
-
"\n",
|
1045
|
-
"source = ColumnDataSource(autompg)\n",
|
1046
|
-
"color_mapper = LinearColorMapper(palette=\"Viridis256\", low=autompg.weight.min(), high=autompg.weight.max())\n",
|
1047
|
-
"\n",
|
1048
|
-
"p = figure(x_axis_label='Horsepower', y_axis_label='MPG', tools='', toolbar_location=None)\n",
|
1049
|
-
"p.circle(x='hp', y='mpg', color=transform('weight', color_mapper), size=20, alpha=0.6, source=autompg)\n",
|
1050
|
-
"\n",
|
1051
|
-
"color_bar = ColorBar(color_mapper=color_mapper, label_standoff=12, location=(0,0), title='Weight')\n",
|
1052
|
-
"p.add_layout(color_bar, 'right')\n",
|
1053
|
-
"\n",
|
1054
|
-
"show(p)"
|
1055
|
-
]
|
1056
|
-
},
|
1057
|
-
{
|
1058
|
-
"cell_type": "code",
|
1059
|
-
"execution_count": 16,
|
1060
|
-
"metadata": {},
|
1061
|
-
"outputs": [],
|
1062
|
-
"source": [
|
1063
|
-
"# Exercise: Experiment with Colorbar\n"
|
1064
|
-
]
|
1065
|
-
},
|
1066
|
-
{
|
1067
|
-
"cell_type": "markdown",
|
1068
|
-
"metadata": {},
|
1069
|
-
"source": [
|
1070
|
-
"# Next Section"
|
1071
|
-
]
|
1072
|
-
},
|
1073
|
-
{
|
1074
|
-
"cell_type": "markdown",
|
1075
|
-
"metadata": {},
|
1076
|
-
"source": [
|
1077
|
-
"Click on this link to go to the next notebook: [05 - Presentation and Layouts](05%20-%20Presentation%20Layouts.ipynb).\n",
|
1078
|
-
"\n",
|
1079
|
-
"To go back to the overview, click [here](00%20-%20Introduction%20and%20Setup.ipynb)."
|
1080
|
-
]
|
1081
|
-
}
|
1082
|
-
],
|
1083
|
-
"metadata": {
|
1084
|
-
"anaconda-cloud": {},
|
1085
|
-
"kernelspec": {
|
1086
|
-
"display_name": "Python 3",
|
1087
|
-
"language": "python",
|
1088
|
-
"name": "python3"
|
1089
|
-
},
|
1090
|
-
"language_info": {
|
1091
|
-
"codemirror_mode": {
|
1092
|
-
"name": "ipython",
|
1093
|
-
"version": 3
|
1094
|
-
},
|
1095
|
-
"file_extension": ".py",
|
1096
|
-
"mimetype": "text/x-python",
|
1097
|
-
"name": "python",
|
1098
|
-
"nbconvert_exporter": "python",
|
1099
|
-
"pygments_lexer": "ipython3",
|
1100
|
-
"version": "3.7.9"
|
1101
|
-
}
|
1102
|
-
},
|
1103
|
-
"nbformat": 4,
|
1104
|
-
"nbformat_minor": 4
|
1105
|
-
}
|