j1-template 2022.5.0.rc4 → 2022.5.1.rc1
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/_includes/themes/j1/procedures/global/date-german.proc +67 -0
- data/assets/data/banner.html +2 -2
- data/assets/data/menu.html +1 -1
- data/assets/data/mmenu.html +36 -36
- data/assets/themes/j1/adapter/js/attic.js +114 -62
- data/assets/themes/j1/adapter/js/cookieConsent.js +42 -25
- data/assets/themes/j1/adapter/js/masterslider.js +2 -2
- data/assets/themes/j1/adapter/js/mmenu.js +2 -2
- data/assets/themes/j1/core/css/themes/unolight/bootstrap.css +28 -3
- data/assets/themes/j1/core/css/themes/unolight/bootstrap.min.css +1 -1
- data/assets/themes/j1/modules/backstretch/js/backstretch.js +5 -5
- data/assets/themes/j1/modules/backstretch/js/backstretch.min.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/assets/themes/j1/modules/mmenuLight/README.md +22 -0
- data/assets/themes/j1/modules/mmenuLight/css/mmenu-light.css +224 -243
- data/assets/themes/j1/modules/mmenuLight/css/mmenu-light.min.css +3 -3
- data/assets/themes/j1/modules/mmenuLight/css/theme/uno/mmenu.css +95 -55
- data/assets/themes/j1/modules/mmenuLight/css/theme/uno/mmenu.min.css +1 -1
- data/assets/themes/j1/modules/mmenuLight/js/mmenu.js +57 -440
- data/assets/themes/j1/modules/mmenuLight/js/mmenu.min.js +4 -15
- data/assets/themes/j1/modules/{twemoji/js/picker → themeSwitcher}/LICENSE +21 -21
- data/assets/themes/j1/modules/themeSwitcher/README.md +166 -0
- data/assets/themes/j1/modules/themeSwitcher/js/switcher.js +2 -2
- data/assets/themes/j1/modules/themeSwitcher/js/switcher.min.js +1 -1
- 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 +2 -2
- 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/cookies.yml +1 -1
- 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 +68 -12
- 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/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 +142 -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 +66 -3
- 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 +22 -372
- data/assets/themes/j1/modules/twemoji/css/picker/twemoji-picker.css +0 -153
- data/assets/themes/j1/modules/twemoji/css/picker/twemoji-picker.min.css +0 -19
- data/assets/themes/j1/modules/twemoji/js/picker/twemoji-picker.js +0 -304
- data/assets/themes/j1/modules/twemoji/js/picker/twemoji-picker.min.js +0 -322
- data/assets/themes/j1/modules/twemoji/js/twemoji.js +0 -580
- data/assets/themes/j1/modules/twemoji/js/twemoji.min.js +0 -19
- 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,1405 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"cells": [
|
3
|
-
{
|
4
|
-
"cell_type": "markdown",
|
5
|
-
"metadata": {
|
6
|
-
"Collapsed": "false"
|
7
|
-
},
|
8
|
-
"source": [
|
9
|
-
"## 2. Styles and Themes\n",
|
10
|
-
"\n",
|
11
|
-
"In this chapter you learn how to configure various visual aspects of our plots,\n",
|
12
|
-
"and how to find out more about what an be configured. "
|
13
|
-
]
|
14
|
-
},
|
15
|
-
{
|
16
|
-
"cell_type": "code",
|
17
|
-
"execution_count": 1,
|
18
|
-
"metadata": {
|
19
|
-
"Collapsed": "false"
|
20
|
-
},
|
21
|
-
"outputs": [],
|
22
|
-
"source": [
|
23
|
-
"from bokeh.io import output_notebook, show\n",
|
24
|
-
"from bokeh.plotting import figure"
|
25
|
-
]
|
26
|
-
},
|
27
|
-
{
|
28
|
-
"cell_type": "code",
|
29
|
-
"execution_count": 2,
|
30
|
-
"metadata": {
|
31
|
-
"jupyter": {
|
32
|
-
"outputs_hidden": true
|
33
|
-
}
|
34
|
-
},
|
35
|
-
"outputs": [
|
36
|
-
{
|
37
|
-
"name": "stdout",
|
38
|
-
"output_type": "stream",
|
39
|
-
"text": [
|
40
|
-
"Using data directory: C:\\Users\\jadams\\.bokeh\\data\n",
|
41
|
-
"Skipping 'CGM.csv' (checksum match)\n",
|
42
|
-
"Skipping 'US_Counties.zip' (checksum match)\n",
|
43
|
-
"Skipping 'us_cities.json' (checksum match)\n",
|
44
|
-
"Skipping 'unemployment09.csv' (checksum match)\n",
|
45
|
-
"Skipping 'AAPL.csv' (checksum match)\n",
|
46
|
-
"Skipping 'FB.csv' (checksum match)\n",
|
47
|
-
"Skipping 'GOOG.csv' (checksum match)\n",
|
48
|
-
"Skipping 'IBM.csv' (checksum match)\n",
|
49
|
-
"Skipping 'MSFT.csv' (checksum match)\n",
|
50
|
-
"Skipping 'WPP2012_SA_DB03_POPULATION_QUINQUENNIAL.zip' (checksum match)\n",
|
51
|
-
"Skipping 'gapminder_fertility.csv' (checksum match)\n",
|
52
|
-
"Skipping 'gapminder_population.csv' (checksum match)\n",
|
53
|
-
"Skipping 'gapminder_life_expectancy.csv' (checksum match)\n",
|
54
|
-
"Skipping 'gapminder_regions.csv' (checksum match)\n",
|
55
|
-
"Skipping 'world_cities.zip' (checksum match)\n",
|
56
|
-
"Skipping 'airports.json' (checksum match)\n",
|
57
|
-
"Skipping 'movies.db.zip' (checksum match)\n",
|
58
|
-
"Skipping 'airports.csv' (checksum match)\n",
|
59
|
-
"Skipping 'routes.csv' (checksum match)\n",
|
60
|
-
"Skipping 'haarcascade_frontalface_default.xml' (checksum match)\n"
|
61
|
-
]
|
62
|
-
},
|
63
|
-
{
|
64
|
-
"data": {
|
65
|
-
"text/html": [
|
66
|
-
"<div class=\"bk-root\">\n",
|
67
|
-
" <a href=\"https://bokeh.org\" target=\"_blank\" class=\"bk-logo bk-logo-small bk-logo-notebook\"></a>\n",
|
68
|
-
" <span id=\"1002\">Loading BokehJS ...</span>\n",
|
69
|
-
" </div>\n"
|
70
|
-
]
|
71
|
-
},
|
72
|
-
"metadata": {},
|
73
|
-
"output_type": "display_data"
|
74
|
-
},
|
75
|
-
{
|
76
|
-
"data": {
|
77
|
-
"application/javascript": [
|
78
|
-
"(function(root) {\n",
|
79
|
-
" function now() {\n",
|
80
|
-
" return new Date();\n",
|
81
|
-
" }\n",
|
82
|
-
"\n",
|
83
|
-
" const force = true;\n",
|
84
|
-
"\n",
|
85
|
-
" if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n",
|
86
|
-
" root._bokeh_onload_callbacks = [];\n",
|
87
|
-
" root._bokeh_is_loading = undefined;\n",
|
88
|
-
" }\n",
|
89
|
-
"\n",
|
90
|
-
"const JS_MIME_TYPE = 'application/javascript';\n",
|
91
|
-
" const HTML_MIME_TYPE = 'text/html';\n",
|
92
|
-
" const EXEC_MIME_TYPE = 'application/vnd.bokehjs_exec.v0+json';\n",
|
93
|
-
" const CLASS_NAME = 'output_bokeh rendered_html';\n",
|
94
|
-
"\n",
|
95
|
-
" /**\n",
|
96
|
-
" * Render data to the DOM node\n",
|
97
|
-
" */\n",
|
98
|
-
" function render(props, node) {\n",
|
99
|
-
" const script = document.createElement(\"script\");\n",
|
100
|
-
" node.appendChild(script);\n",
|
101
|
-
" }\n",
|
102
|
-
"\n",
|
103
|
-
" /**\n",
|
104
|
-
" * Handle when an output is cleared or removed\n",
|
105
|
-
" */\n",
|
106
|
-
" function handleClearOutput(event, handle) {\n",
|
107
|
-
" const cell = handle.cell;\n",
|
108
|
-
"\n",
|
109
|
-
" const id = cell.output_area._bokeh_element_id;\n",
|
110
|
-
" const server_id = cell.output_area._bokeh_server_id;\n",
|
111
|
-
" // Clean up Bokeh references\n",
|
112
|
-
" if (id != null && id in Bokeh.index) {\n",
|
113
|
-
" Bokeh.index[id].model.document.clear();\n",
|
114
|
-
" delete Bokeh.index[id];\n",
|
115
|
-
" }\n",
|
116
|
-
"\n",
|
117
|
-
" if (server_id !== undefined) {\n",
|
118
|
-
" // Clean up Bokeh references\n",
|
119
|
-
" const cmd_clean = \"from bokeh.io.state import curstate; print(curstate().uuid_to_server['\" + server_id + \"'].get_sessions()[0].document.roots[0]._id)\";\n",
|
120
|
-
" cell.notebook.kernel.execute(cmd_clean, {\n",
|
121
|
-
" iopub: {\n",
|
122
|
-
" output: function(msg) {\n",
|
123
|
-
" const id = msg.content.text.trim();\n",
|
124
|
-
" if (id in Bokeh.index) {\n",
|
125
|
-
" Bokeh.index[id].model.document.clear();\n",
|
126
|
-
" delete Bokeh.index[id];\n",
|
127
|
-
" }\n",
|
128
|
-
" }\n",
|
129
|
-
" }\n",
|
130
|
-
" });\n",
|
131
|
-
" // Destroy server and session\n",
|
132
|
-
" const cmd_destroy = \"import bokeh.io.notebook as ion; ion.destroy_server('\" + server_id + \"')\";\n",
|
133
|
-
" cell.notebook.kernel.execute(cmd_destroy);\n",
|
134
|
-
" }\n",
|
135
|
-
" }\n",
|
136
|
-
"\n",
|
137
|
-
" /**\n",
|
138
|
-
" * Handle when a new output is added\n",
|
139
|
-
" */\n",
|
140
|
-
" function handleAddOutput(event, handle) {\n",
|
141
|
-
" const output_area = handle.output_area;\n",
|
142
|
-
" const output = handle.output;\n",
|
143
|
-
"\n",
|
144
|
-
" // limit handleAddOutput to display_data with EXEC_MIME_TYPE content only\n",
|
145
|
-
" if ((output.output_type != \"display_data\") || (!Object.prototype.hasOwnProperty.call(output.data, EXEC_MIME_TYPE))) {\n",
|
146
|
-
" return\n",
|
147
|
-
" }\n",
|
148
|
-
"\n",
|
149
|
-
" const toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n",
|
150
|
-
"\n",
|
151
|
-
" if (output.metadata[EXEC_MIME_TYPE][\"id\"] !== undefined) {\n",
|
152
|
-
" toinsert[toinsert.length - 1].firstChild.textContent = output.data[JS_MIME_TYPE];\n",
|
153
|
-
" // store reference to embed id on output_area\n",
|
154
|
-
" output_area._bokeh_element_id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n",
|
155
|
-
" }\n",
|
156
|
-
" if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n",
|
157
|
-
" const bk_div = document.createElement(\"div\");\n",
|
158
|
-
" bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n",
|
159
|
-
" const script_attrs = bk_div.children[0].attributes;\n",
|
160
|
-
" for (let i = 0; i < script_attrs.length; i++) {\n",
|
161
|
-
" toinsert[toinsert.length - 1].firstChild.setAttribute(script_attrs[i].name, script_attrs[i].value);\n",
|
162
|
-
" toinsert[toinsert.length - 1].firstChild.textContent = bk_div.children[0].textContent\n",
|
163
|
-
" }\n",
|
164
|
-
" // store reference to server id on output_area\n",
|
165
|
-
" output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n",
|
166
|
-
" }\n",
|
167
|
-
" }\n",
|
168
|
-
"\n",
|
169
|
-
" function register_renderer(events, OutputArea) {\n",
|
170
|
-
"\n",
|
171
|
-
" function append_mime(data, metadata, element) {\n",
|
172
|
-
" // create a DOM node to render to\n",
|
173
|
-
" const toinsert = this.create_output_subarea(\n",
|
174
|
-
" metadata,\n",
|
175
|
-
" CLASS_NAME,\n",
|
176
|
-
" EXEC_MIME_TYPE\n",
|
177
|
-
" );\n",
|
178
|
-
" this.keyboard_manager.register_events(toinsert);\n",
|
179
|
-
" // Render to node\n",
|
180
|
-
" const props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n",
|
181
|
-
" render(props, toinsert[toinsert.length - 1]);\n",
|
182
|
-
" element.append(toinsert);\n",
|
183
|
-
" return toinsert\n",
|
184
|
-
" }\n",
|
185
|
-
"\n",
|
186
|
-
" /* Handle when an output is cleared or removed */\n",
|
187
|
-
" events.on('clear_output.CodeCell', handleClearOutput);\n",
|
188
|
-
" events.on('delete.Cell', handleClearOutput);\n",
|
189
|
-
"\n",
|
190
|
-
" /* Handle when a new output is added */\n",
|
191
|
-
" events.on('output_added.OutputArea', handleAddOutput);\n",
|
192
|
-
"\n",
|
193
|
-
" /**\n",
|
194
|
-
" * Register the mime type and append_mime function with output_area\n",
|
195
|
-
" */\n",
|
196
|
-
" OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n",
|
197
|
-
" /* Is output safe? */\n",
|
198
|
-
" safe: true,\n",
|
199
|
-
" /* Index of renderer in `output_area.display_order` */\n",
|
200
|
-
" index: 0\n",
|
201
|
-
" });\n",
|
202
|
-
" }\n",
|
203
|
-
"\n",
|
204
|
-
" // register the mime type if in Jupyter Notebook environment and previously unregistered\n",
|
205
|
-
" if (root.Jupyter !== undefined) {\n",
|
206
|
-
" const events = require('base/js/events');\n",
|
207
|
-
" const OutputArea = require('notebook/js/outputarea').OutputArea;\n",
|
208
|
-
"\n",
|
209
|
-
" if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n",
|
210
|
-
" register_renderer(events, OutputArea);\n",
|
211
|
-
" }\n",
|
212
|
-
" }\n",
|
213
|
-
" if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n",
|
214
|
-
" root._bokeh_timeout = Date.now() + 5000;\n",
|
215
|
-
" root._bokeh_failed_load = false;\n",
|
216
|
-
" }\n",
|
217
|
-
"\n",
|
218
|
-
" const NB_LOAD_WARNING = {'data': {'text/html':\n",
|
219
|
-
" \"<div style='background-color: #fdd'>\\n\"+\n",
|
220
|
-
" \"<p>\\n\"+\n",
|
221
|
-
" \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n",
|
222
|
-
" \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n",
|
223
|
-
" \"</p>\\n\"+\n",
|
224
|
-
" \"<ul>\\n\"+\n",
|
225
|
-
" \"<li>re-rerun `output_notebook()` to attempt to load from CDN again, or</li>\\n\"+\n",
|
226
|
-
" \"<li>use INLINE resources instead, as so:</li>\\n\"+\n",
|
227
|
-
" \"</ul>\\n\"+\n",
|
228
|
-
" \"<code>\\n\"+\n",
|
229
|
-
" \"from bokeh.resources import INLINE\\n\"+\n",
|
230
|
-
" \"output_notebook(resources=INLINE)\\n\"+\n",
|
231
|
-
" \"</code>\\n\"+\n",
|
232
|
-
" \"</div>\"}};\n",
|
233
|
-
"\n",
|
234
|
-
" function display_loaded() {\n",
|
235
|
-
" const el = document.getElementById(\"1002\");\n",
|
236
|
-
" if (el != null) {\n",
|
237
|
-
" el.textContent = \"BokehJS is loading...\";\n",
|
238
|
-
" }\n",
|
239
|
-
" if (root.Bokeh !== undefined) {\n",
|
240
|
-
" if (el != null) {\n",
|
241
|
-
" el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n",
|
242
|
-
" }\n",
|
243
|
-
" } else if (Date.now() < root._bokeh_timeout) {\n",
|
244
|
-
" setTimeout(display_loaded, 100)\n",
|
245
|
-
" }\n",
|
246
|
-
" }\n",
|
247
|
-
"\n",
|
248
|
-
" function run_callbacks() {\n",
|
249
|
-
" try {\n",
|
250
|
-
" root._bokeh_onload_callbacks.forEach(function(callback) {\n",
|
251
|
-
" if (callback != null)\n",
|
252
|
-
" callback();\n",
|
253
|
-
" });\n",
|
254
|
-
" } finally {\n",
|
255
|
-
" delete root._bokeh_onload_callbacks\n",
|
256
|
-
" }\n",
|
257
|
-
" console.debug(\"Bokeh: all callbacks have finished\");\n",
|
258
|
-
" }\n",
|
259
|
-
"\n",
|
260
|
-
" function load_libs(css_urls, js_urls, callback) {\n",
|
261
|
-
" if (css_urls == null) css_urls = [];\n",
|
262
|
-
" if (js_urls == null) js_urls = [];\n",
|
263
|
-
"\n",
|
264
|
-
" root._bokeh_onload_callbacks.push(callback);\n",
|
265
|
-
" if (root._bokeh_is_loading > 0) {\n",
|
266
|
-
" console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n",
|
267
|
-
" return null;\n",
|
268
|
-
" }\n",
|
269
|
-
" if (js_urls == null || js_urls.length === 0) {\n",
|
270
|
-
" run_callbacks();\n",
|
271
|
-
" return null;\n",
|
272
|
-
" }\n",
|
273
|
-
" console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n",
|
274
|
-
" root._bokeh_is_loading = css_urls.length + js_urls.length;\n",
|
275
|
-
"\n",
|
276
|
-
" function on_load() {\n",
|
277
|
-
" root._bokeh_is_loading--;\n",
|
278
|
-
" if (root._bokeh_is_loading === 0) {\n",
|
279
|
-
" console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n",
|
280
|
-
" run_callbacks()\n",
|
281
|
-
" }\n",
|
282
|
-
" }\n",
|
283
|
-
"\n",
|
284
|
-
" function on_error(url) {\n",
|
285
|
-
" console.error(\"failed to load \" + url);\n",
|
286
|
-
" }\n",
|
287
|
-
"\n",
|
288
|
-
" for (let i = 0; i < css_urls.length; i++) {\n",
|
289
|
-
" const url = css_urls[i];\n",
|
290
|
-
" const element = document.createElement(\"link\");\n",
|
291
|
-
" element.onload = on_load;\n",
|
292
|
-
" element.onerror = on_error.bind(null, url);\n",
|
293
|
-
" element.rel = \"stylesheet\";\n",
|
294
|
-
" element.type = \"text/css\";\n",
|
295
|
-
" element.href = url;\n",
|
296
|
-
" console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n",
|
297
|
-
" document.body.appendChild(element);\n",
|
298
|
-
" }\n",
|
299
|
-
"\n",
|
300
|
-
" for (let i = 0; i < js_urls.length; i++) {\n",
|
301
|
-
" const url = js_urls[i];\n",
|
302
|
-
" const element = document.createElement('script');\n",
|
303
|
-
" element.onload = on_load;\n",
|
304
|
-
" element.onerror = on_error.bind(null, url);\n",
|
305
|
-
" element.async = false;\n",
|
306
|
-
" element.src = url;\n",
|
307
|
-
" console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n",
|
308
|
-
" document.head.appendChild(element);\n",
|
309
|
-
" }\n",
|
310
|
-
" };\n",
|
311
|
-
"\n",
|
312
|
-
" function inject_raw_css(css) {\n",
|
313
|
-
" const element = document.createElement(\"style\");\n",
|
314
|
-
" element.appendChild(document.createTextNode(css));\n",
|
315
|
-
" document.body.appendChild(element);\n",
|
316
|
-
" }\n",
|
317
|
-
"\n",
|
318
|
-
" 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",
|
319
|
-
" const css_urls = [];\n",
|
320
|
-
"\n",
|
321
|
-
" const inline_js = [ function(Bokeh) {\n",
|
322
|
-
" Bokeh.set_log_level(\"info\");\n",
|
323
|
-
" },\n",
|
324
|
-
"function(Bokeh) {\n",
|
325
|
-
" }\n",
|
326
|
-
" ];\n",
|
327
|
-
"\n",
|
328
|
-
" function run_inline_js() {\n",
|
329
|
-
" if (root.Bokeh !== undefined || force === true) {\n",
|
330
|
-
" for (let i = 0; i < inline_js.length; i++) {\n",
|
331
|
-
" inline_js[i].call(root, root.Bokeh);\n",
|
332
|
-
" }\n",
|
333
|
-
"if (force === true) {\n",
|
334
|
-
" display_loaded();\n",
|
335
|
-
" }} else if (Date.now() < root._bokeh_timeout) {\n",
|
336
|
-
" setTimeout(run_inline_js, 100);\n",
|
337
|
-
" } else if (!root._bokeh_failed_load) {\n",
|
338
|
-
" console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n",
|
339
|
-
" root._bokeh_failed_load = true;\n",
|
340
|
-
" } else if (force !== true) {\n",
|
341
|
-
" const cell = $(document.getElementById(\"1002\")).parents('.cell').data().cell;\n",
|
342
|
-
" cell.output_area.append_execute_result(NB_LOAD_WARNING)\n",
|
343
|
-
" }\n",
|
344
|
-
" }\n",
|
345
|
-
"\n",
|
346
|
-
" if (root._bokeh_is_loading === 0) {\n",
|
347
|
-
" console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n",
|
348
|
-
" run_inline_js();\n",
|
349
|
-
" } else {\n",
|
350
|
-
" load_libs(css_urls, js_urls, function() {\n",
|
351
|
-
" console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n",
|
352
|
-
" run_inline_js();\n",
|
353
|
-
" });\n",
|
354
|
-
" }\n",
|
355
|
-
"}(window));"
|
356
|
-
],
|
357
|
-
"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));"
|
358
|
-
},
|
359
|
-
"metadata": {},
|
360
|
-
"output_type": "display_data"
|
361
|
-
}
|
362
|
-
],
|
363
|
-
"source": [
|
364
|
-
"#nbi:hide_in\n",
|
365
|
-
"import bokeh.sampledata\n",
|
366
|
-
"\n",
|
367
|
-
"#nbi:hide_out\n",
|
368
|
-
"bokeh.sampledata.download()\n",
|
369
|
-
"\n",
|
370
|
-
"# Make all outputs INLINE for default (why a hell this is needed !!!)\n",
|
371
|
-
"output_notebook()"
|
372
|
-
]
|
373
|
-
},
|
374
|
-
{
|
375
|
-
"cell_type": "markdown",
|
376
|
-
"metadata": {
|
377
|
-
"Collapsed": "false"
|
378
|
-
},
|
379
|
-
"source": [
|
380
|
-
"### Colors\n",
|
381
|
-
"\n",
|
382
|
-
"Before getting started, it's useful to describe how colors and properties are specified in Bokeh.\n",
|
383
|
-
"There are many places where you may specify colors. Bokeh can accept colors in a variety of different ways:\n",
|
384
|
-
"\n",
|
385
|
-
"* any of the [140 named HTML/CSS colors](https://www.w3schools.com/colors/colors_names.asp), e.g ``'green'``, ``'indigo'``\n",
|
386
|
-
"* an RGB(A) hex value, e.g., ``'#FF0000'``, ``'#44444444'``\n",
|
387
|
-
"* a 3-tuple of integers *(r,g,b)* between 0 and 255\n",
|
388
|
-
"* a 4-tuple of *(r,g,b,a)* where *r*, *g*, *b* are integers between 0 and 255 and *a* is a floating point value between 0 and 1\n",
|
389
|
-
"\n",
|
390
|
-
"\n",
|
391
|
-
"### Properties\n",
|
392
|
-
"\n",
|
393
|
-
"Regardless of how a Bokeh plot is created, styling the visual aspects of the plot can always be accomplished by setting attributes on the Bokeh objects that comprise the resulting plot. Visual properties come in three kinds: line, fill, and text properties. For full information with code and examples see the [Styling Visual Properties](https://bokeh.pydata.org/en/latest/docs/user_guide/styling.html) section of the user guide. \n",
|
394
|
-
"\n",
|
395
|
-
"#### Line Properties\n",
|
396
|
-
"\n",
|
397
|
-
"Set the visual appearance of lines. The most common are ``line_color``, ``line_alpha``, ``line_width`` and ``line_dash``.\n",
|
398
|
-
"\n",
|
399
|
-
"#### Fill Properties\n",
|
400
|
-
"\n",
|
401
|
-
"Set the visual appearance of filled areas: ``fill_color`` and ``fill_alpha``.\n",
|
402
|
-
"\n",
|
403
|
-
"#### Text Properties\n",
|
404
|
-
"\n",
|
405
|
-
"Set the visual appearance of lines of text. The most common are ``text_font``, ``text_font_size``, ``text_color``, and ``text_alpha``.\n",
|
406
|
-
"\n",
|
407
|
-
"Sometimes a prefix is used with property names, e.g. to distinguish between different line properties on the same object, or to give a more meaningful name. For example, to set the line width of the plot outline, you would say ``myplot.outline_line_width = 2``. "
|
408
|
-
]
|
409
|
-
},
|
410
|
-
{
|
411
|
-
"cell_type": "markdown",
|
412
|
-
"metadata": {
|
413
|
-
"Collapsed": "false"
|
414
|
-
},
|
415
|
-
"source": [
|
416
|
-
"### Plots\n",
|
417
|
-
"\n",
|
418
|
-
"Many top-level attributes of plots (outline, border, etc.) can be configured. See the [Plots](https://bokeh.pydata.org/en/latest/docs/user_guide/styling.html#plots) section of the styling guide for full information. \n",
|
419
|
-
"\n",
|
420
|
-
"Here is an example that tweaks the plot outline:"
|
421
|
-
]
|
422
|
-
},
|
423
|
-
{
|
424
|
-
"cell_type": "code",
|
425
|
-
"execution_count": 3,
|
426
|
-
"metadata": {
|
427
|
-
"Collapsed": "false"
|
428
|
-
},
|
429
|
-
"outputs": [
|
430
|
-
{
|
431
|
-
"data": {
|
432
|
-
"text/html": [
|
433
|
-
"\n",
|
434
|
-
" <div class=\"bk-root\" id=\"364c4c19-39d9-4aca-8391-dce1a3216aed\" data-root-id=\"1003\"></div>\n"
|
435
|
-
]
|
436
|
-
},
|
437
|
-
"metadata": {},
|
438
|
-
"output_type": "display_data"
|
439
|
-
},
|
440
|
-
{
|
441
|
-
"data": {
|
442
|
-
"application/javascript": [
|
443
|
-
"(function(root) {\n",
|
444
|
-
" function embed_document(root) {\n",
|
445
|
-
" const docs_json = {\"a45ed3c2-e048-444c-a406-a6d81da66dba\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1012\"}],\"center\":[{\"id\":\"1015\"},{\"id\":\"1019\"}],\"height\":400,\"left\":[{\"id\":\"1016\"}],\"outline_line_alpha\":0.3,\"outline_line_color\":\"navy\",\"outline_line_width\":7,\"renderers\":[{\"id\":\"1038\"}],\"title\":{\"id\":\"1040\"},\"toolbar\":{\"id\":\"1027\"},\"width\":800,\"x_range\":{\"id\":\"1004\"},\"x_scale\":{\"id\":\"1008\"},\"y_range\":{\"id\":\"1006\"},\"y_scale\":{\"id\":\"1010\"}},\"id\":\"1003\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"fill_color\":{\"value\":\"#1f77b4\"},\"line_color\":{\"value\":\"#1f77b4\"},\"size\":{\"value\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1035\",\"type\":\"Circle\"},{\"attributes\":{\"tools\":[{\"id\":\"1020\"},{\"id\":\"1021\"},{\"id\":\"1022\"},{\"id\":\"1023\"},{\"id\":\"1024\"},{\"id\":\"1025\"}]},\"id\":\"1027\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"1044\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1048\",\"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\":\"1026\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"1020\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"1004\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1024\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"1021\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"1006\",\"type\":\"DataRange1d\"},{\"attributes\":{\"overlay\":{\"id\":\"1026\"}},\"id\":\"1022\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"1023\",\"type\":\"SaveTool\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"1040\",\"type\":\"Title\"},{\"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\":\"1013\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1008\",\"type\":\"LinearScale\"},{\"attributes\":{\"source\":{\"id\":\"1034\"}},\"id\":\"1039\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1025\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"1010\",\"type\":\"LinearScale\"},{\"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\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1037\",\"type\":\"Circle\"},{\"attributes\":{},\"id\":\"1049\",\"type\":\"Selection\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1046\"},\"group\":null,\"major_label_policy\":{\"id\":\"1047\"},\"ticker\":{\"id\":\"1013\"}},\"id\":\"1012\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1047\",\"type\":\"AllLabels\"},{\"attributes\":{\"axis\":{\"id\":\"1012\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"1015\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1017\",\"type\":\"BasicTicker\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1043\"},\"group\":null,\"major_label_policy\":{\"id\":\"1044\"},\"ticker\":{\"id\":\"1017\"}},\"id\":\"1016\",\"type\":\"LinearAxis\"},{\"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\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1036\",\"type\":\"Circle\"},{\"attributes\":{\"axis\":{\"id\":\"1016\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1019\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1046\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"data\":{\"x\":[1,2,3,4,5],\"y\":[2,5,8,2,7]},\"selected\":{\"id\":\"1049\"},\"selection_policy\":{\"id\":\"1048\"}},\"id\":\"1034\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1043\",\"type\":\"BasicTickFormatter\"}],\"root_ids\":[\"1003\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.3\"}};\n",
|
446
|
-
" const render_items = [{\"docid\":\"a45ed3c2-e048-444c-a406-a6d81da66dba\",\"root_ids\":[\"1003\"],\"roots\":{\"1003\":\"364c4c19-39d9-4aca-8391-dce1a3216aed\"}}];\n",
|
447
|
-
" root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
|
448
|
-
" }\n",
|
449
|
-
" if (root.Bokeh !== undefined) {\n",
|
450
|
-
" embed_document(root);\n",
|
451
|
-
" } else {\n",
|
452
|
-
" let attempts = 0;\n",
|
453
|
-
" const timer = setInterval(function(root) {\n",
|
454
|
-
" if (root.Bokeh !== undefined) {\n",
|
455
|
-
" clearInterval(timer);\n",
|
456
|
-
" embed_document(root);\n",
|
457
|
-
" } else {\n",
|
458
|
-
" attempts++;\n",
|
459
|
-
" if (attempts > 100) {\n",
|
460
|
-
" clearInterval(timer);\n",
|
461
|
-
" console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n",
|
462
|
-
" }\n",
|
463
|
-
" }\n",
|
464
|
-
" }, 10, root)\n",
|
465
|
-
" }\n",
|
466
|
-
"})(window);"
|
467
|
-
],
|
468
|
-
"application/vnd.bokehjs_exec.v0+json": ""
|
469
|
-
},
|
470
|
-
"metadata": {
|
471
|
-
"application/vnd.bokehjs_exec.v0+json": {
|
472
|
-
"id": "1003"
|
473
|
-
}
|
474
|
-
},
|
475
|
-
"output_type": "display_data"
|
476
|
-
}
|
477
|
-
],
|
478
|
-
"source": [
|
479
|
-
"# create a new plot using figure\n",
|
480
|
-
"p = figure(\n",
|
481
|
-
" plot_height=400,\n",
|
482
|
-
" plot_width=800,\n",
|
483
|
-
")\n",
|
484
|
-
"\n",
|
485
|
-
"p.outline_line_width = 7\n",
|
486
|
-
"p.outline_line_alpha = 0.3\n",
|
487
|
-
"p.outline_line_color = \"navy\"\n",
|
488
|
-
"\n",
|
489
|
-
"p.circle([1,2,3,4,5], [2,5,8,2,7], size=10)\n",
|
490
|
-
"\n",
|
491
|
-
"# show the results\n",
|
492
|
-
"show(p)"
|
493
|
-
]
|
494
|
-
},
|
495
|
-
{
|
496
|
-
"cell_type": "markdown",
|
497
|
-
"metadata": {
|
498
|
-
"Collapsed": "false"
|
499
|
-
},
|
500
|
-
"source": [
|
501
|
-
"### Glyphs\n",
|
502
|
-
"\n",
|
503
|
-
"It's also possible to style the visual properties of glyphs (see the [Glyphs](https://docs.bokeh.org/en/latest/docs/user_guide/styling.html#glyphs) section of the styling guide for more information). When using `bokeh.plotting` this is often done when calling the glyph methods:\n",
|
504
|
-
"```python\n",
|
505
|
-
"p.circle(line_color=\"red\", fill_alpha=0.2, ...)\n",
|
506
|
-
"```\n",
|
507
|
-
"But it is also possible to set these properties directly on glyph objects. Glyph objects are found on `GlyphRenderer` objects, which are returned by the `Plot.add_glyph` and `bokeh.plotting` glyph methods like `circle`, `rect`, etc. Let's look at an example:"
|
508
|
-
]
|
509
|
-
},
|
510
|
-
{
|
511
|
-
"cell_type": "code",
|
512
|
-
"execution_count": 4,
|
513
|
-
"metadata": {
|
514
|
-
"Collapsed": "false"
|
515
|
-
},
|
516
|
-
"outputs": [
|
517
|
-
{
|
518
|
-
"data": {
|
519
|
-
"text/html": [
|
520
|
-
"\n",
|
521
|
-
" <div class=\"bk-root\" id=\"3030d42e-2f3a-4891-9c56-6e76dcf09b11\" data-root-id=\"1106\"></div>\n"
|
522
|
-
]
|
523
|
-
},
|
524
|
-
"metadata": {},
|
525
|
-
"output_type": "display_data"
|
526
|
-
},
|
527
|
-
{
|
528
|
-
"data": {
|
529
|
-
"application/javascript": [
|
530
|
-
"(function(root) {\n",
|
531
|
-
" function embed_document(root) {\n",
|
532
|
-
" const docs_json = {\"933f230c-461e-431c-b70f-5e84bc462ac0\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1115\"}],\"center\":[{\"id\":\"1118\"},{\"id\":\"1122\"}],\"height\":400,\"left\":[{\"id\":\"1119\"}],\"renderers\":[{\"id\":\"1141\"}],\"title\":{\"id\":\"1154\"},\"toolbar\":{\"id\":\"1130\"},\"width\":800,\"x_range\":{\"id\":\"1107\"},\"x_scale\":{\"id\":\"1111\"},\"y_range\":{\"id\":\"1109\"},\"y_scale\":{\"id\":\"1113\"}},\"id\":\"1106\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"1107\",\"type\":\"DataRange1d\"},{\"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\":\"1139\",\"type\":\"Circle\"},{\"attributes\":{},\"id\":\"1160\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"axis\":{\"id\":\"1119\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1122\",\"type\":\"Grid\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"#1f77b4\"},\"line_color\":{\"value\":\"firebrick\"},\"line_dash\":{\"value\":[5,1]},\"line_width\":{\"value\":2},\"size\":{\"value\":50},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1138\",\"type\":\"Circle\"},{\"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\":\"1140\",\"type\":\"Circle\"},{\"attributes\":{},\"id\":\"1128\",\"type\":\"HelpTool\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"1154\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"1161\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1157\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1109\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1158\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1116\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1162\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1163\",\"type\":\"Selection\"},{\"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\":\"1129\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"1113\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1111\",\"type\":\"LinearScale\"},{\"attributes\":{\"tools\":[{\"id\":\"1123\"},{\"id\":\"1124\"},{\"id\":\"1125\"},{\"id\":\"1126\"},{\"id\":\"1127\"},{\"id\":\"1128\"}]},\"id\":\"1130\",\"type\":\"Toolbar\"},{\"attributes\":{\"overlay\":{\"id\":\"1129\"}},\"id\":\"1125\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"axis\":{\"id\":\"1115\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"1118\",\"type\":\"Grid\"},{\"attributes\":{\"source\":{\"id\":\"1137\"}},\"id\":\"1142\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1124\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1160\"},\"group\":null,\"major_label_policy\":{\"id\":\"1161\"},\"ticker\":{\"id\":\"1116\"}},\"id\":\"1115\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1126\",\"type\":\"SaveTool\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1157\"},\"group\":null,\"major_label_policy\":{\"id\":\"1158\"},\"ticker\":{\"id\":\"1120\"}},\"id\":\"1119\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1127\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"1120\",\"type\":\"BasicTicker\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1137\"},\"glyph\":{\"id\":\"1138\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1140\"},\"nonselection_glyph\":{\"id\":\"1139\"},\"view\":{\"id\":\"1142\"}},\"id\":\"1141\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"data\":{\"x\":[1,2,3,4,5],\"y\":[2,5,8,2,7]},\"selected\":{\"id\":\"1163\"},\"selection_policy\":{\"id\":\"1162\"}},\"id\":\"1137\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1123\",\"type\":\"PanTool\"}],\"root_ids\":[\"1106\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.3\"}};\n",
|
533
|
-
" const render_items = [{\"docid\":\"933f230c-461e-431c-b70f-5e84bc462ac0\",\"root_ids\":[\"1106\"],\"roots\":{\"1106\":\"3030d42e-2f3a-4891-9c56-6e76dcf09b11\"}}];\n",
|
534
|
-
" root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
|
535
|
-
" }\n",
|
536
|
-
" if (root.Bokeh !== undefined) {\n",
|
537
|
-
" embed_document(root);\n",
|
538
|
-
" } else {\n",
|
539
|
-
" let attempts = 0;\n",
|
540
|
-
" const timer = setInterval(function(root) {\n",
|
541
|
-
" if (root.Bokeh !== undefined) {\n",
|
542
|
-
" clearInterval(timer);\n",
|
543
|
-
" embed_document(root);\n",
|
544
|
-
" } else {\n",
|
545
|
-
" attempts++;\n",
|
546
|
-
" if (attempts > 100) {\n",
|
547
|
-
" clearInterval(timer);\n",
|
548
|
-
" console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n",
|
549
|
-
" }\n",
|
550
|
-
" }\n",
|
551
|
-
" }, 10, root)\n",
|
552
|
-
" }\n",
|
553
|
-
"})(window);"
|
554
|
-
],
|
555
|
-
"application/vnd.bokehjs_exec.v0+json": ""
|
556
|
-
},
|
557
|
-
"metadata": {
|
558
|
-
"application/vnd.bokehjs_exec.v0+json": {
|
559
|
-
"id": "1106"
|
560
|
-
}
|
561
|
-
},
|
562
|
-
"output_type": "display_data"
|
563
|
-
}
|
564
|
-
],
|
565
|
-
"source": [
|
566
|
-
"# create a new plot using figure\n",
|
567
|
-
"p = figure(\n",
|
568
|
-
" plot_height=400,\n",
|
569
|
-
" plot_width=800,\n",
|
570
|
-
")\n",
|
571
|
-
"\n",
|
572
|
-
"# keep a reference to the returned GlyphRenderer\n",
|
573
|
-
"r = p.circle(\n",
|
574
|
-
" [1,2,3,4,5],\n",
|
575
|
-
" [2,5,8,2,7]\n",
|
576
|
-
")\n",
|
577
|
-
"\n",
|
578
|
-
"r.glyph.size = 50\n",
|
579
|
-
"r.glyph.fill_alpha = 0.2\n",
|
580
|
-
"r.glyph.line_color = \"firebrick\"\n",
|
581
|
-
"r.glyph.line_dash = [5, 1]\n",
|
582
|
-
"r.glyph.line_width = 2\n",
|
583
|
-
"\n",
|
584
|
-
"# show the results\n",
|
585
|
-
"show(p)"
|
586
|
-
]
|
587
|
-
},
|
588
|
-
{
|
589
|
-
"cell_type": "markdown",
|
590
|
-
"metadata": {
|
591
|
-
"Collapsed": "false"
|
592
|
-
},
|
593
|
-
"source": [
|
594
|
-
"#### Selection and non-selection visuals\n",
|
595
|
-
"\n",
|
596
|
-
"You can also control how glyphs look when there are selections involved. The set of \"selected\" points is displayed according to the optional `.selection_glyph` property of a `GlyphRenderer`:\n",
|
597
|
-
"```python\n",
|
598
|
-
"r.selection_glyph = Circle(fill_alpha=1, fill_color=\"firebrick\", line_color=None) \n",
|
599
|
-
"```\n",
|
600
|
-
"When there is a non-empty selection, the set of \"unselected\" points is displayed according to the optional `.nonselection_glyph` property of a `GlyphRenderer`:\n",
|
601
|
-
"```python\n",
|
602
|
-
"r.nonselection_glyph = Circle(fill_alpha=0.2, fill_color=\"grey\", line_color=None) \n",
|
603
|
-
"```\n",
|
604
|
-
"\n",
|
605
|
-
"When using the `bokeh.plotting` interface, it is easier to pass these visual properties to the glyph methods as shown below. The glyph method will create the selection or nonselection glyphs and attach them to the renderer for you. "
|
606
|
-
]
|
607
|
-
},
|
608
|
-
{
|
609
|
-
"cell_type": "code",
|
610
|
-
"execution_count": 5,
|
611
|
-
"metadata": {
|
612
|
-
"Collapsed": "false"
|
613
|
-
},
|
614
|
-
"outputs": [
|
615
|
-
{
|
616
|
-
"data": {
|
617
|
-
"text/html": [
|
618
|
-
"\n",
|
619
|
-
" <div class=\"bk-root\" id=\"0361fe81-0a58-444f-86ec-20b629ec1cc4\" data-root-id=\"1220\"></div>\n"
|
620
|
-
]
|
621
|
-
},
|
622
|
-
"metadata": {},
|
623
|
-
"output_type": "display_data"
|
624
|
-
},
|
625
|
-
{
|
626
|
-
"data": {
|
627
|
-
"application/javascript": [
|
628
|
-
"(function(root) {\n",
|
629
|
-
" function embed_document(root) {\n",
|
630
|
-
" const docs_json = {\"cdec5a83-254c-4bad-b1db-7aa97b71ca34\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1231\"}],\"center\":[{\"id\":\"1234\"},{\"id\":\"1238\"}],\"height\":400,\"left\":[{\"id\":\"1235\"}],\"renderers\":[{\"id\":\"1247\"}],\"title\":{\"id\":\"1221\"},\"toolbar\":{\"id\":\"1240\"},\"width\":800,\"x_range\":{\"id\":\"1223\"},\"x_scale\":{\"id\":\"1227\"},\"y_range\":{\"id\":\"1225\"},\"y_scale\":{\"id\":\"1229\"}},\"id\":\"1220\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"1274\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1277\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1278\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"text\":\"Select a circle\"},\"id\":\"1221\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"1276\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1225\",\"type\":\"DataRange1d\"},{\"attributes\":{\"tools\":[{\"id\":\"1239\"}]},\"id\":\"1240\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"1279\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1273\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1232\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1227\",\"type\":\"LinearScale\"},{\"attributes\":{\"source\":{\"id\":\"1242\"}},\"id\":\"1248\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1229\",\"type\":\"LinearScale\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1242\"},\"glyph\":{\"id\":\"1243\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1246\"},\"nonselection_glyph\":{\"id\":\"1244\"},\"selection_glyph\":{\"id\":\"1245\"},\"view\":{\"id\":\"1248\"}},\"id\":\"1247\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1276\"},\"group\":null,\"major_label_policy\":{\"id\":\"1277\"},\"ticker\":{\"id\":\"1232\"}},\"id\":\"1231\",\"type\":\"LinearAxis\"},{\"attributes\":{\"fill_color\":{\"value\":\"#1f77b4\"},\"line_color\":{\"value\":\"#1f77b4\"},\"size\":{\"value\":50},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1243\",\"type\":\"Circle\"},{\"attributes\":{\"axis\":{\"id\":\"1231\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"1234\",\"type\":\"Grid\"},{\"attributes\":{\"fill_color\":{\"value\":\"firebrick\"},\"hatch_color\":{\"value\":\"firebrick\"},\"line_color\":{\"value\":\"firebrick\"},\"size\":{\"value\":50},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1245\",\"type\":\"Circle\"},{\"attributes\":{},\"id\":\"1236\",\"type\":\"BasicTicker\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1273\"},\"group\":null,\"major_label_policy\":{\"id\":\"1274\"},\"ticker\":{\"id\":\"1236\"}},\"id\":\"1235\",\"type\":\"LinearAxis\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"grey\"},\"hatch_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"firebrick\"},\"size\":{\"value\":50},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1244\",\"type\":\"Circle\"},{\"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\":50},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1246\",\"type\":\"Circle\"},{\"attributes\":{\"axis\":{\"id\":\"1235\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1238\",\"type\":\"Grid\"},{\"attributes\":{\"data\":{\"x\":[1,2,3,4,5],\"y\":[2,5,8,2,7]},\"selected\":{\"id\":\"1279\"},\"selection_policy\":{\"id\":\"1278\"}},\"id\":\"1242\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"callback\":null},\"id\":\"1239\",\"type\":\"TapTool\"},{\"attributes\":{},\"id\":\"1223\",\"type\":\"DataRange1d\"}],\"root_ids\":[\"1220\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.3\"}};\n",
|
631
|
-
" const render_items = [{\"docid\":\"cdec5a83-254c-4bad-b1db-7aa97b71ca34\",\"root_ids\":[\"1220\"],\"roots\":{\"1220\":\"0361fe81-0a58-444f-86ec-20b629ec1cc4\"}}];\n",
|
632
|
-
" root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
|
633
|
-
" }\n",
|
634
|
-
" if (root.Bokeh !== undefined) {\n",
|
635
|
-
" embed_document(root);\n",
|
636
|
-
" } else {\n",
|
637
|
-
" let attempts = 0;\n",
|
638
|
-
" const timer = setInterval(function(root) {\n",
|
639
|
-
" if (root.Bokeh !== undefined) {\n",
|
640
|
-
" clearInterval(timer);\n",
|
641
|
-
" embed_document(root);\n",
|
642
|
-
" } else {\n",
|
643
|
-
" attempts++;\n",
|
644
|
-
" if (attempts > 100) {\n",
|
645
|
-
" clearInterval(timer);\n",
|
646
|
-
" console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n",
|
647
|
-
" }\n",
|
648
|
-
" }\n",
|
649
|
-
" }, 10, root)\n",
|
650
|
-
" }\n",
|
651
|
-
"})(window);"
|
652
|
-
],
|
653
|
-
"application/vnd.bokehjs_exec.v0+json": ""
|
654
|
-
},
|
655
|
-
"metadata": {
|
656
|
-
"application/vnd.bokehjs_exec.v0+json": {
|
657
|
-
"id": "1220"
|
658
|
-
}
|
659
|
-
},
|
660
|
-
"output_type": "display_data"
|
661
|
-
}
|
662
|
-
],
|
663
|
-
"source": [
|
664
|
-
"# create a new plot using figure\n",
|
665
|
-
"p = figure(\n",
|
666
|
-
" plot_height=400,\n",
|
667
|
-
" plot_width=800,\n",
|
668
|
-
" tools=\"tap\",\n",
|
669
|
-
" title=\"Select a circle\"\n",
|
670
|
-
")\n",
|
671
|
-
"\n",
|
672
|
-
"renderer = p.circle(\n",
|
673
|
-
" [1, 2, 3, 4, 5],\n",
|
674
|
-
" [2, 5, 8, 2, 7],\n",
|
675
|
-
" size=50,\n",
|
676
|
-
" # set visual properties for selected glyphs\n",
|
677
|
-
" selection_color=\"firebrick\",\n",
|
678
|
-
" # set visual properties for non-selected glyphs\n",
|
679
|
-
" nonselection_fill_alpha=0.2,\n",
|
680
|
-
" nonselection_fill_color=\"grey\",\n",
|
681
|
-
" nonselection_line_color=\"firebrick\",\n",
|
682
|
-
" nonselection_line_alpha=1.0\n",
|
683
|
-
")\n",
|
684
|
-
"\n",
|
685
|
-
"show(p)"
|
686
|
-
]
|
687
|
-
},
|
688
|
-
{
|
689
|
-
"cell_type": "markdown",
|
690
|
-
"metadata": {
|
691
|
-
"Collapsed": "false"
|
692
|
-
},
|
693
|
-
"source": [
|
694
|
-
"It is also possible to specify the visual appearance of glyphs when they are \"inspected\", e.g. by a hover tool. This is accomplished by setting an optional `hover_glyph` on the glyph renderer:\n",
|
695
|
-
"```python\n",
|
696
|
-
"r.hover_glyph = Circle(fill_alpha=1, fill_color=\"firebrick\", line_color=None) \n",
|
697
|
-
"```\n",
|
698
|
-
"Or if using `bokeh.plotting` glyph methods, by passing `hover_fill_alpha`, etc. to the glyph method. Lets look at an example that works together with a `HoverTool` configured for \"hline\" hit-testing."
|
699
|
-
]
|
700
|
-
},
|
701
|
-
{
|
702
|
-
"cell_type": "code",
|
703
|
-
"execution_count": 6,
|
704
|
-
"metadata": {
|
705
|
-
"Collapsed": "false"
|
706
|
-
},
|
707
|
-
"outputs": [
|
708
|
-
{
|
709
|
-
"data": {
|
710
|
-
"text/html": [
|
711
|
-
"\n",
|
712
|
-
" <div class=\"bk-root\" id=\"55d5b544-b88c-4857-9409-dfe7ff547125\" data-root-id=\"1325\"></div>\n"
|
713
|
-
]
|
714
|
-
},
|
715
|
-
"metadata": {},
|
716
|
-
"output_type": "display_data"
|
717
|
-
},
|
718
|
-
{
|
719
|
-
"data": {
|
720
|
-
"application/javascript": [
|
721
|
-
"(function(root) {\n",
|
722
|
-
" function embed_document(root) {\n",
|
723
|
-
" const docs_json = {\"8fe97e7e-0d37-43aa-b33f-ca34e8d58cbf\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1336\"}],\"center\":[{\"id\":\"1339\"},{\"id\":\"1343\"}],\"height\":400,\"left\":[{\"id\":\"1340\"}],\"renderers\":[{\"id\":\"1362\"},{\"id\":\"1369\"}],\"title\":{\"id\":\"1326\"},\"toolbar\":{\"id\":\"1351\"},\"width\":800,\"x_range\":{\"id\":\"1328\"},\"x_scale\":{\"id\":\"1332\"},\"y_range\":{\"id\":\"1330\"},\"y_scale\":{\"id\":\"1334\"}},\"id\":\"1325\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"overlay\":{\"id\":\"1350\"}},\"id\":\"1346\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"days\":[1,4,7,10,13,16,19,22,25,28]},\"id\":\"1420\",\"type\":\"DaysTicker\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"text\":\"Hover over points\"},\"id\":\"1326\",\"type\":\"Title\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1364\"},\"glyph\":{\"id\":\"1365\"},\"group\":null,\"hover_glyph\":{\"id\":\"1367\"},\"muted_glyph\":{\"id\":\"1368\"},\"nonselection_glyph\":{\"id\":\"1366\"},\"view\":{\"id\":\"1370\"}},\"id\":\"1369\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1328\",\"type\":\"DataRange1d\"},{\"attributes\":{\"source\":{\"id\":\"1364\"}},\"id\":\"1370\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1347\",\"type\":\"SaveTool\"},{\"attributes\":{\"num_minor_ticks\":5,\"tickers\":[{\"id\":\"1416\"},{\"id\":\"1417\"},{\"id\":\"1418\"},{\"id\":\"1419\"},{\"id\":\"1420\"},{\"id\":\"1421\"},{\"id\":\"1422\"},{\"id\":\"1423\"},{\"id\":\"1424\"},{\"id\":\"1425\"},{\"id\":\"1426\"},{\"id\":\"1427\"}]},\"id\":\"1337\",\"type\":\"DatetimeTicker\"},{\"attributes\":{},\"id\":\"1406\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"months\":[0,1,2,3,4,5,6,7,8,9,10,11]},\"id\":\"1423\",\"type\":\"MonthsTicker\"},{\"attributes\":{\"days\":[1,8,15,22]},\"id\":\"1421\",\"type\":\"DaysTicker\"},{\"attributes\":{},\"id\":\"1345\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"1349\",\"type\":\"HelpTool\"},{\"attributes\":{\"days\":[1,15]},\"id\":\"1422\",\"type\":\"DaysTicker\"},{\"attributes\":{},\"id\":\"1332\",\"type\":\"LinearScale\"},{\"attributes\":{\"base\":60,\"mantissas\":[1,2,5,10,15,20,30],\"max_interval\":1800000.0,\"min_interval\":1000.0,\"num_minor_ticks\":0},\"id\":\"1417\",\"type\":\"AdaptiveTicker\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1409\"},\"group\":null,\"major_label_policy\":{\"id\":\"1410\"},\"ticker\":{\"id\":\"1337\"}},\"id\":\"1336\",\"type\":\"DatetimeAxis\"},{\"attributes\":{},\"id\":\"1334\",\"type\":\"LinearScale\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"gray\",\"line_dash\":[4,4],\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1360\",\"type\":\"Line\"},{\"attributes\":{\"months\":[0,2,4,6,8,10]},\"id\":\"1424\",\"type\":\"MonthsTicker\"},{\"attributes\":{},\"id\":\"1407\",\"type\":\"AllLabels\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.05},\"fill_color\":{\"value\":\"grey\"},\"line_color\":{\"value\":null},\"size\":{\"value\":20},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1365\",\"type\":\"Circle\"},{\"attributes\":{\"months\":[0,4,8]},\"id\":\"1425\",\"type\":\"MonthsTicker\"},{\"attributes\":{},\"id\":\"1410\",\"type\":\"AllLabels\"},{\"attributes\":{\"axis\":{\"id\":\"1336\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"1339\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1409\",\"type\":\"DatetimeTickFormatter\"},{\"attributes\":{},\"id\":\"1341\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1411\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"mantissas\":[1,2,5],\"max_interval\":500.0,\"num_minor_ticks\":0},\"id\":\"1416\",\"type\":\"AdaptiveTicker\"},{\"attributes\":{\"months\":[0,6]},\"id\":\"1426\",\"type\":\"MonthsTicker\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1406\"},\"group\":null,\"major_label_policy\":{\"id\":\"1407\"},\"ticker\":{\"id\":\"1341\"}},\"id\":\"1340\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1412\",\"type\":\"Selection\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"AADyke23ckIAADDb7bdyQgAAbiTut3JCAACsbe63ckIAAOq27rdyQgAAKADvt3JCAABmSe+3ckIAAKSS77dyQgAA4tvvt3JCAAAgJfC3ckIAAF5u8LdyQgAAnLfwt3JCAADaAPG3ckIAABhK8bdyQgAAVpPxt3JCAACU3PG3ckIAANIl8rdyQgAAEG/yt3JCAABOuPK3ckIAAIwB87dyQgAAykrzt3JCAAAIlPO3ckIAAEbd87dyQgAAhCb0t3JCAADCb/S3ckIAAAC59LdyQgAAPgL1t3JCAAB8S/W3ckIAALqU9bdyQgAA+N31t3JCAAA2J/a3ckIAAHRw9rdyQgAAsrn2t3JCAADwAve3ckIAAC5M97dyQgAAbJX3t3JCAACq3ve3ckIAAOgn+LdyQgAAJnH4t3JCAABkuvi3ckIAAKID+bdyQgAA4Ez5t3JCAAAelvm3ckIAAFzf+bdyQgAAmij6t3JCAADYcfq3ckIAABa7+rdyQgAAVAT7t3JCAACSTfu3ckIAANCW+7dyQgAADuD7t3JCAABMKfy3ckIAAIpy/LdyQgAAyLv8t3JCAAAGBf23ckIAAERO/bdyQgAAgpf9t3JCAADA4P23ckIAAP4p/rdyQgAAPHP+t3JCAAB6vP63ckIAALgF/7dyQgAA9k7/t3JCAAA0mP+3ckIAAHLh/7dyQgAAsCoAuHJCAADucwC4ckIAACy9ALhyQgAAagYBuHJCAACoTwG4ckIAAOaYAbhyQgAAJOIBuHJCAABiKwK4ckIAAKB0ArhyQgAA3r0CuHJCAAAcBwO4ckIAAFpQA7hyQgAAmJkDuHJCAADW4gO4ckIAABQsBLhyQgAAUnUEuHJCAACQvgS4ckIAAM4HBbhyQgAADFEFuHJCAABKmgW4ckIAAIjjBbhyQgAAxiwGuHJCAAAEdga4ckIAAEK/BrhyQgAAgAgHuHJCAAC+UQe4ckIAAPyaB7hyQgAAOuQHuHJCAAB4LQi4ckIAALZ2CLhyQgAA9L8IuHJCAAAyCQm4ckIAAHBSCbhyQgAArpsJuHJCAADs5Am4ckIAACouCrhyQgAAaHcKuHJCAACmwAq4ckIAAOQJC7hyQgAAIlMLuHJCAABgnAu4ckIAAJ7lC7hyQgAA3C4MuHJCAAAaeAy4ckIAAFjBDLhyQgAAlgoNuHJCAADUUw24ckIAABKdDbhyQgAAUOYNuHJCAACOLw64ckIAAMx4DrhyQgAACsIOuHJCAABICw+4ckIAAIZUD7hyQgAAxJ0PuHJCAAAC5w+4ckIAAEAwELhyQgAAfnkQuHJCAAC8whC4ckIAAPoLEbhyQgAAOFURuHJCAAB2nhG4ckIAALTnEbhyQgAA8jASuHJCAAAwehK4ckIAAG7DErhyQgAArAwTuHJCAADqVRO4ckIAACifE7hyQgAAZugTuHJCAACkMRS4ckIAAOJ6FLhyQgAAIMQUuHJCAABeDRW4ckIAAJxWFbhyQgAA2p8VuHJCAAAY6RW4ckIAAFYyFrhyQgAAlHsWuHJCAADSxBa4ckIAABAOF7hyQgAATlcXuHJCAACMoBe4ckIAAMrpF7hyQgAACDMYuHJCAABGfBi4ckIAAITFGLhyQgAAwg4ZuHJCAAAAWBm4ckIAAD6hGbhyQgAAfOoZuHJCAAC6Mxq4ckIAAPh8GrhyQgAANsYauHJCAAB0Dxu4ckIAALJYG7hyQgAA8KEbuHJCAAAu6xu4ckIAAGw0HLhyQgAAqn0cuHJCAADoxhy4ckIAACYQHbhyQgAAZFkduHJCAACioh24ckIAAODrHbhyQgAAHjUeuHJCAABcfh64ckIAAJrHHrhyQgAA2BAfuHJCAAAWWh+4ckIAAFSjH7hyQgAAkuwfuHJCAADQNSC4ckIAAA5/ILhyQgAATMgguHJCAACKESG4ckIAAMhaIbhyQgAABqQhuHJCAABE7SG4ckIAAII2IrhyQgAAwH8iuHJCAAD+yCK4ckIAADwSI7hyQgAAelsjuHJCAAC4pCO4ckIAAPbtI7hyQgAANDckuHJCAABygCS4ckIAALDJJLhyQgAA7hIluHJCAAAsXCW4ckIAAGqlJbhyQgAAqO4luHJCAADmNya4ckIAACSBJrhyQgAAYsomuHJCAACgEye4ckIAAN5cJ7hyQgAAHKYnuHJCAABa7ye4ckIAAJg4KLhyQgAA1oEouHJCAAAUyyi4ckIAAFIUKbhyQgAAkF0puHJCAADOpim4ckIAAAzwKbhyQgAASjkquHJCAACIgiq4ckIAAMbLKrhyQgAABBUruHJCAABCXiu4ckIAAICnK7hyQgAAvvAruHJCAAD8OSy4ckIAADqDLLhyQgAAeMwsuHJCAAC2FS24ckIAAPReLbhyQgAAMqgtuHJCAABw8S24ckIAAK46LrhyQgAA7IMuuHJCAAAqzS64ckIAAGgWL7hyQgAApl8vuHJCAADkqC+4ckIAACLyL7hyQgAAYDswuHJCAACehDC4ckIAANzNMLhyQgAAGhcxuHJCAABYYDG4ckIAAJapMbhyQgAA1PIxuHJCAAASPDK4ckIAAFCFMrhyQgAAjs4yuHJCAADMFzO4ckIAAAphM7hyQgAASKozuHJCAACG8zO4ckIAAMQ8NLhyQgAAAoY0uHJCAABAzzS4ckIAAH4YNbhyQgAAvGE1uHJCAAD6qjW4ckIAADj0NbhyQgAAdj02uHJCAAC0hja4ckIAAPLPNrhyQgAAMBk3uHJCAABuYje4ckIAAKyrN7hyQgAA6vQ3uHJCAAAoPji4ckIAAGaHOLhyQgAApNA4uHJCAADiGTm4ckIAACBjObhyQgAAXqw5uHJCAACc9Tm4ckIAANo+OrhyQgAAGIg6uHJCAABW0Tq4ckIAAJQaO7hyQgAA0mM7uHJCAAAQrTu4ckIAAE72O7hyQgAAjD88uHJCAADKiDy4ckIAAAjSPLhyQgAARhs9uHJCAACEZD24ckIAAMKtPbhyQgAAAPc9uHJCAAA+QD64ckIAAHyJPrhyQgAAutI+uHJCAAD4Gz+4ckIAADZlP7hyQgAAdK4/uHJC\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[288]},\"y\":[143,147,150,152,152,152,154,155,142,140,138,134,131,130,128,127,126,126,126,126,127,129,131,132,134,136,136,136,136,135,134,132,130,130,130,129,128,127,125,124,123,123,122,121,120,118,115,112,111,111,110,110,109,108,107,107,107,108,107,105,105,105,105,104,103,102,99,97,96,94,94,93,93,92,91,92,94,95,96,97,99,102,104,112,112,112,111,110,107,104,105,105,103,99,96,94,95,102,114,128,144,160,173,185,196,205,209,214,219,226,234,241,248,255,260,265,268,270,272,271,271,268,265,261,256,253,250,246,244,241,237,233,229,225,222,204,200,197,193,190,186,182,179,175,171,168,164,158,154,151,148,145,141,133,139,152,173,196,217,233,244,249,250,253,256,260,263,265,265,264,260,254,246,234,217,200,188,181,175,169,164,159,154,147,138,132,129,127,123,117,111,106,104,103,100,94,88,83,78,75,73,71,69,68,67,67,68,70,71,71,70,69,68,67,67,67,66,67,69,71,74,76,78,80,80,80,80,80,80,82,84,87,90,92,87,87,86,86,86,86,87,87,87,85,83,82,83,87,95,107,118,130,141,149,172,179,187,201,214,221,225,230,232,230,223,216,208,199,191,185,181,177,176,177,176,173,171,169,163,154,152,153,154,154,153,151,150,150]},\"selected\":{\"id\":\"1412\"},\"selection_policy\":{\"id\":\"1411\"}},\"id\":\"1358\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"gray\",\"line_dash\":[4,4],\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1361\",\"type\":\"Line\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1358\"},\"glyph\":{\"id\":\"1359\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1361\"},\"nonselection_glyph\":{\"id\":\"1360\"},\"view\":{\"id\":\"1363\"}},\"id\":\"1362\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1427\",\"type\":\"YearsTicker\"},{\"attributes\":{\"callback\":null,\"mode\":\"hline\",\"renderers\":[{\"id\":\"1369\"}],\"tooltips\":null},\"id\":\"1371\",\"type\":\"HoverTool\"},{\"attributes\":{},\"id\":\"1413\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"axis\":{\"id\":\"1340\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1343\",\"type\":\"Grid\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"grey\"},\"hatch_alpha\":{\"value\":0.2},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":null},\"size\":{\"value\":20},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1368\",\"type\":\"Circle\"},{\"attributes\":{\"line_color\":\"gray\",\"line_dash\":[4,4],\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1359\",\"type\":\"Line\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"grey\"},\"hatch_alpha\":{\"value\":0.1},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":null},\"size\":{\"value\":20},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1366\",\"type\":\"Circle\"},{\"attributes\":{},\"id\":\"1414\",\"type\":\"Selection\"},{\"attributes\":{\"source\":{\"id\":\"1358\"}},\"id\":\"1363\",\"type\":\"CDSView\"},{\"attributes\":{\"tools\":[{\"id\":\"1344\"},{\"id\":\"1345\"},{\"id\":\"1346\"},{\"id\":\"1347\"},{\"id\":\"1348\"},{\"id\":\"1349\"},{\"id\":\"1371\"}]},\"id\":\"1351\",\"type\":\"Toolbar\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.3},\"fill_color\":{\"value\":\"firebrick\"},\"hatch_alpha\":{\"value\":0.3},\"line_alpha\":{\"value\":0.3},\"line_color\":{\"value\":\"white\"},\"size\":{\"value\":20},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1367\",\"type\":\"Circle\"},{\"attributes\":{\"base\":24,\"mantissas\":[1,2,4,6,8,12],\"max_interval\":43200000.0,\"min_interval\":3600000.0,\"num_minor_ticks\":0},\"id\":\"1418\",\"type\":\"AdaptiveTicker\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"AADyke23ckIAADDb7bdyQgAAbiTut3JCAACsbe63ckIAAOq27rdyQgAAKADvt3JCAABmSe+3ckIAAKSS77dyQgAA4tvvt3JCAAAgJfC3ckIAAF5u8LdyQgAAnLfwt3JCAADaAPG3ckIAABhK8bdyQgAAVpPxt3JCAACU3PG3ckIAANIl8rdyQgAAEG/yt3JCAABOuPK3ckIAAIwB87dyQgAAykrzt3JCAAAIlPO3ckIAAEbd87dyQgAAhCb0t3JCAADCb/S3ckIAAAC59LdyQgAAPgL1t3JCAAB8S/W3ckIAALqU9bdyQgAA+N31t3JCAAA2J/a3ckIAAHRw9rdyQgAAsrn2t3JCAADwAve3ckIAAC5M97dyQgAAbJX3t3JCAACq3ve3ckIAAOgn+LdyQgAAJnH4t3JCAABkuvi3ckIAAKID+bdyQgAA4Ez5t3JCAAAelvm3ckIAAFzf+bdyQgAAmij6t3JCAADYcfq3ckIAABa7+rdyQgAAVAT7t3JCAACSTfu3ckIAANCW+7dyQgAADuD7t3JCAABMKfy3ckIAAIpy/LdyQgAAyLv8t3JCAAAGBf23ckIAAERO/bdyQgAAgpf9t3JCAADA4P23ckIAAP4p/rdyQgAAPHP+t3JCAAB6vP63ckIAALgF/7dyQgAA9k7/t3JCAAA0mP+3ckIAAHLh/7dyQgAAsCoAuHJCAADucwC4ckIAACy9ALhyQgAAagYBuHJCAACoTwG4ckIAAOaYAbhyQgAAJOIBuHJCAABiKwK4ckIAAKB0ArhyQgAA3r0CuHJCAAAcBwO4ckIAAFpQA7hyQgAAmJkDuHJCAADW4gO4ckIAABQsBLhyQgAAUnUEuHJCAACQvgS4ckIAAM4HBbhyQgAADFEFuHJCAABKmgW4ckIAAIjjBbhyQgAAxiwGuHJCAAAEdga4ckIAAEK/BrhyQgAAgAgHuHJCAAC+UQe4ckIAAPyaB7hyQgAAOuQHuHJCAAB4LQi4ckIAALZ2CLhyQgAA9L8IuHJCAAAyCQm4ckIAAHBSCbhyQgAArpsJuHJCAADs5Am4ckIAACouCrhyQgAAaHcKuHJCAACmwAq4ckIAAOQJC7hyQgAAIlMLuHJCAABgnAu4ckIAAJ7lC7hyQgAA3C4MuHJCAAAaeAy4ckIAAFjBDLhyQgAAlgoNuHJCAADUUw24ckIAABKdDbhyQgAAUOYNuHJCAACOLw64ckIAAMx4DrhyQgAACsIOuHJCAABICw+4ckIAAIZUD7hyQgAAxJ0PuHJCAAAC5w+4ckIAAEAwELhyQgAAfnkQuHJCAAC8whC4ckIAAPoLEbhyQgAAOFURuHJCAAB2nhG4ckIAALTnEbhyQgAA8jASuHJCAAAwehK4ckIAAG7DErhyQgAArAwTuHJCAADqVRO4ckIAACifE7hyQgAAZugTuHJCAACkMRS4ckIAAOJ6FLhyQgAAIMQUuHJCAABeDRW4ckIAAJxWFbhyQgAA2p8VuHJCAAAY6RW4ckIAAFYyFrhyQgAAlHsWuHJCAADSxBa4ckIAABAOF7hyQgAATlcXuHJCAACMoBe4ckIAAMrpF7hyQgAACDMYuHJCAABGfBi4ckIAAITFGLhyQgAAwg4ZuHJCAAAAWBm4ckIAAD6hGbhyQgAAfOoZuHJCAAC6Mxq4ckIAAPh8GrhyQgAANsYauHJCAAB0Dxu4ckIAALJYG7hyQgAA8KEbuHJCAAAu6xu4ckIAAGw0HLhyQgAAqn0cuHJCAADoxhy4ckIAACYQHbhyQgAAZFkduHJCAACioh24ckIAAODrHbhyQgAAHjUeuHJCAABcfh64ckIAAJrHHrhyQgAA2BAfuHJCAAAWWh+4ckIAAFSjH7hyQgAAkuwfuHJCAADQNSC4ckIAAA5/ILhyQgAATMgguHJCAACKESG4ckIAAMhaIbhyQgAABqQhuHJCAABE7SG4ckIAAII2IrhyQgAAwH8iuHJCAAD+yCK4ckIAADwSI7hyQgAAelsjuHJCAAC4pCO4ckIAAPbtI7hyQgAANDckuHJCAABygCS4ckIAALDJJLhyQgAA7hIluHJCAAAsXCW4ckIAAGqlJbhyQgAAqO4luHJCAADmNya4ckIAACSBJrhyQgAAYsomuHJCAACgEye4ckIAAN5cJ7hyQgAAHKYnuHJCAABa7ye4ckIAAJg4KLhyQgAA1oEouHJCAAAUyyi4ckIAAFIUKbhyQgAAkF0puHJCAADOpim4ckIAAAzwKbhyQgAASjkquHJCAACIgiq4ckIAAMbLKrhyQgAABBUruHJCAABCXiu4ckIAAICnK7hyQgAAvvAruHJCAAD8OSy4ckIAADqDLLhyQgAAeMwsuHJCAAC2FS24ckIAAPReLbhyQgAAMqgtuHJCAABw8S24ckIAAK46LrhyQgAA7IMuuHJCAAAqzS64ckIAAGgWL7hyQgAApl8vuHJCAADkqC+4ckIAACLyL7hyQgAAYDswuHJCAACehDC4ckIAANzNMLhyQgAAGhcxuHJCAABYYDG4ckIAAJapMbhyQgAA1PIxuHJCAAASPDK4ckIAAFCFMrhyQgAAjs4yuHJCAADMFzO4ckIAAAphM7hyQgAASKozuHJCAACG8zO4ckIAAMQ8NLhyQgAAAoY0uHJCAABAzzS4ckIAAH4YNbhyQgAAvGE1uHJCAAD6qjW4ckIAADj0NbhyQgAAdj02uHJCAAC0hja4ckIAAPLPNrhyQgAAMBk3uHJCAABuYje4ckIAAKyrN7hyQgAA6vQ3uHJCAAAoPji4ckIAAGaHOLhyQgAApNA4uHJCAADiGTm4ckIAACBjObhyQgAAXqw5uHJCAACc9Tm4ckIAANo+OrhyQgAAGIg6uHJCAABW0Tq4ckIAAJQaO7hyQgAA0mM7uHJCAAAQrTu4ckIAAE72O7hyQgAAjD88uHJCAADKiDy4ckIAAAjSPLhyQgAARhs9uHJCAACEZD24ckIAAMKtPbhyQgAAAPc9uHJCAAA+QD64ckIAAHyJPrhyQgAAutI+uHJCAAD4Gz+4ckIAADZlP7hyQgAAdK4/uHJC\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[288]},\"y\":[143,147,150,152,152,152,154,155,142,140,138,134,131,130,128,127,126,126,126,126,127,129,131,132,134,136,136,136,136,135,134,132,130,130,130,129,128,127,125,124,123,123,122,121,120,118,115,112,111,111,110,110,109,108,107,107,107,108,107,105,105,105,105,104,103,102,99,97,96,94,94,93,93,92,91,92,94,95,96,97,99,102,104,112,112,112,111,110,107,104,105,105,103,99,96,94,95,102,114,128,144,160,173,185,196,205,209,214,219,226,234,241,248,255,260,265,268,270,272,271,271,268,265,261,256,253,250,246,244,241,237,233,229,225,222,204,200,197,193,190,186,182,179,175,171,168,164,158,154,151,148,145,141,133,139,152,173,196,217,233,244,249,250,253,256,260,263,265,265,264,260,254,246,234,217,200,188,181,175,169,164,159,154,147,138,132,129,127,123,117,111,106,104,103,100,94,88,83,78,75,73,71,69,68,67,67,68,70,71,71,70,69,68,67,67,67,66,67,69,71,74,76,78,80,80,80,80,80,80,82,84,87,90,92,87,87,86,86,86,86,87,87,87,85,83,82,83,87,95,107,118,130,141,149,172,179,187,201,214,221,225,230,232,230,223,216,208,199,191,185,181,177,176,177,176,173,171,169,163,154,152,153,154,154,153,151,150,150]},\"selected\":{\"id\":\"1414\"},\"selection_policy\":{\"id\":\"1413\"}},\"id\":\"1364\",\"type\":\"ColumnDataSource\"},{\"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\":\"1350\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"1344\",\"type\":\"PanTool\"},{\"attributes\":{\"days\":[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]},\"id\":\"1419\",\"type\":\"DaysTicker\"},{\"attributes\":{},\"id\":\"1348\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"1330\",\"type\":\"DataRange1d\"}],\"root_ids\":[\"1325\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.3\"}};\n",
|
724
|
-
" const render_items = [{\"docid\":\"8fe97e7e-0d37-43aa-b33f-ca34e8d58cbf\",\"root_ids\":[\"1325\"],\"roots\":{\"1325\":\"55d5b544-b88c-4857-9409-dfe7ff547125\"}}];\n",
|
725
|
-
" root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
|
726
|
-
" }\n",
|
727
|
-
" if (root.Bokeh !== undefined) {\n",
|
728
|
-
" embed_document(root);\n",
|
729
|
-
" } else {\n",
|
730
|
-
" let attempts = 0;\n",
|
731
|
-
" const timer = setInterval(function(root) {\n",
|
732
|
-
" if (root.Bokeh !== undefined) {\n",
|
733
|
-
" clearInterval(timer);\n",
|
734
|
-
" embed_document(root);\n",
|
735
|
-
" } else {\n",
|
736
|
-
" attempts++;\n",
|
737
|
-
" if (attempts > 100) {\n",
|
738
|
-
" clearInterval(timer);\n",
|
739
|
-
" console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n",
|
740
|
-
" }\n",
|
741
|
-
" }\n",
|
742
|
-
" }, 10, root)\n",
|
743
|
-
" }\n",
|
744
|
-
"})(window);"
|
745
|
-
],
|
746
|
-
"application/vnd.bokehjs_exec.v0+json": ""
|
747
|
-
},
|
748
|
-
"metadata": {
|
749
|
-
"application/vnd.bokehjs_exec.v0+json": {
|
750
|
-
"id": "1325"
|
751
|
-
}
|
752
|
-
},
|
753
|
-
"output_type": "display_data"
|
754
|
-
}
|
755
|
-
],
|
756
|
-
"source": [
|
757
|
-
"from bokeh.models.tools import HoverTool\n",
|
758
|
-
"from bokeh.sampledata.glucose import data\n",
|
759
|
-
"\n",
|
760
|
-
"subset = data.loc['2010-10-06']\n",
|
761
|
-
"\n",
|
762
|
-
"x, y = subset.index.to_series(), subset['glucose']\n",
|
763
|
-
"\n",
|
764
|
-
"# Basic plot setup\n",
|
765
|
-
"p = figure(\n",
|
766
|
-
" plot_height=400,\n",
|
767
|
-
" plot_width=800,\n",
|
768
|
-
" x_axis_type=\"datetime\",\n",
|
769
|
-
" title='Hover over points'\n",
|
770
|
-
")\n",
|
771
|
-
"\n",
|
772
|
-
"p.line(x, y, line_dash=\"4 4\", line_width=1, color='gray')\n",
|
773
|
-
"\n",
|
774
|
-
"cr = p.circle(\n",
|
775
|
-
" x,\n",
|
776
|
-
" y,\n",
|
777
|
-
" size=20,\n",
|
778
|
-
" fill_color=\"grey\", hover_fill_color=\"firebrick\",\n",
|
779
|
-
" fill_alpha=0.05, hover_alpha=0.3,\n",
|
780
|
-
" line_color=None, hover_line_color=\"white\"\n",
|
781
|
-
")\n",
|
782
|
-
"\n",
|
783
|
-
"p.add_tools(\n",
|
784
|
-
" HoverTool(tooltips=None, renderers=[cr], mode='hline')\n",
|
785
|
-
")\n",
|
786
|
-
"\n",
|
787
|
-
"# show the results\n",
|
788
|
-
"show(p)"
|
789
|
-
]
|
790
|
-
},
|
791
|
-
{
|
792
|
-
"cell_type": "markdown",
|
793
|
-
"metadata": {
|
794
|
-
"Collapsed": "false"
|
795
|
-
},
|
796
|
-
"source": [
|
797
|
-
"### Axes\n",
|
798
|
-
"\n",
|
799
|
-
"Next we will take a look at [stlying of Axes](https://bokeh.pydata.org/en/latest/docs/user_guide/styling.html#axes).\n",
|
800
|
-
"\n",
|
801
|
-
"To style axes, you first must get ahold of `Axis` objects. The simplest way is to use some convenience methods on `Plot`: `axis`, `xaxis`, and `yaxis`. These methods return lists of axis objects:\n",
|
802
|
-
"\n",
|
803
|
-
"```\n",
|
804
|
-
">>> p.xaxis\n",
|
805
|
-
"[<bokeh.models.axes.LinearAxis at 0x106fa2390>]\n",
|
806
|
-
"```\n",
|
807
|
-
"However, you can set properties on all the elements of the list as if it was a single object:\n",
|
808
|
-
"```\n",
|
809
|
-
"p.xaxis.axis_label = \"Temperature\"\n",
|
810
|
-
"p.axis.major_label_text_color = \"orange\"\n",
|
811
|
-
"```\n",
|
812
|
-
"These are referred to as \"splattable\" lists, and tab completion works on them as well. \n"
|
813
|
-
]
|
814
|
-
},
|
815
|
-
{
|
816
|
-
"cell_type": "markdown",
|
817
|
-
"metadata": {
|
818
|
-
"Collapsed": "false"
|
819
|
-
},
|
820
|
-
"source": [
|
821
|
-
"#### Axis properties\n",
|
822
|
-
"\n",
|
823
|
-
"Axes objects have many configurable properties that afford control over most visual aspects of an axis. These can be grouped by function according to prefix:\n",
|
824
|
-
"\n",
|
825
|
-
"* **axis** [line properties](https://bokeh.pydata.org/en/latest/docs/user_guide/styling.html#line-properties) e.g `axis_line_width`\n",
|
826
|
-
"\n",
|
827
|
-
"* **axis_label** [text properties](https://bokeh.pydata.org/en/latest/docs/user_guide/styling.html#text-properties) e.g. `axis_label_text_color`, as well as ``axis_label_standoff``\n",
|
828
|
-
"\n",
|
829
|
-
"* **major_label** [text properties](https://bokeh.pydata.org/en/latest/docs/user_guide/styling.html#text-properties) e.g. `major_label_text_font_size`, as well as ``major_label_orientation``\n",
|
830
|
-
"\n",
|
831
|
-
"* **major_tick** [line_properties](https://bokeh.pydata.org/en/latest/docs/user_guide/styling.html#line-properties) e.g. `major_tick_line_dash`, as well as ``major_tick_in`` and ``major_tick_out``\n",
|
832
|
-
"\n",
|
833
|
-
"* **minor_tick** [line properties](https://bokeh.pydata.org/en/latest/docs/user_guide/styling.html#line-properties) e.g. `minor_tick_line_width`, as well as ``minor_tick_in`` and ``minor_tick_out``\n",
|
834
|
-
"\n",
|
835
|
-
"As a simple first case, let's change the orientation of the major tick labels on both axes of a plot:"
|
836
|
-
]
|
837
|
-
},
|
838
|
-
{
|
839
|
-
"cell_type": "code",
|
840
|
-
"execution_count": 7,
|
841
|
-
"metadata": {
|
842
|
-
"Collapsed": "false"
|
843
|
-
},
|
844
|
-
"outputs": [
|
845
|
-
{
|
846
|
-
"data": {
|
847
|
-
"text/html": [
|
848
|
-
"\n",
|
849
|
-
" <div class=\"bk-root\" id=\"a54c6459-f2ba-4a38-8e8a-76183e56956b\" data-root-id=\"1548\"></div>\n"
|
850
|
-
]
|
851
|
-
},
|
852
|
-
"metadata": {},
|
853
|
-
"output_type": "display_data"
|
854
|
-
},
|
855
|
-
{
|
856
|
-
"data": {
|
857
|
-
"application/javascript": [
|
858
|
-
"(function(root) {\n",
|
859
|
-
" function embed_document(root) {\n",
|
860
|
-
" const docs_json = {\"6c29768b-f199-48be-a3a1-bdf467578c74\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1557\"}],\"center\":[{\"id\":\"1560\"},{\"id\":\"1564\"}],\"height\":400,\"left\":[{\"id\":\"1561\"}],\"renderers\":[{\"id\":\"1583\"}],\"title\":{\"id\":\"1640\"},\"toolbar\":{\"id\":\"1572\"},\"width\":800,\"x_range\":{\"id\":\"1549\"},\"x_scale\":{\"id\":\"1553\"},\"y_range\":{\"id\":\"1551\"},\"y_scale\":{\"id\":\"1555\"}},\"id\":\"1548\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#1f77b4\"},\"hatch_alpha\":{\"value\":0.1},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"line_width\":{\"value\":2},\"marker\":{\"value\":\"x\"},\"size\":{\"value\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1581\",\"type\":\"Scatter\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1643\"},\"group\":null,\"major_label_orientation\":\"vertical\",\"major_label_policy\":{\"id\":\"1644\"},\"ticker\":{\"id\":\"1562\"}},\"id\":\"1561\",\"type\":\"LinearAxis\"},{\"attributes\":{\"data\":{\"x\":[1,2,3,4,5],\"y\":[2,5,8,2,7]},\"selected\":{\"id\":\"1649\"},\"selection_policy\":{\"id\":\"1648\"}},\"id\":\"1579\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1649\",\"type\":\"Selection\"},{\"attributes\":{\"overlay\":{\"id\":\"1571\"}},\"id\":\"1567\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"1555\",\"type\":\"LinearScale\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"1640\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"1647\",\"type\":\"AllLabels\"},{\"attributes\":{\"axis\":{\"id\":\"1557\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"1560\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1644\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1643\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1565\",\"type\":\"PanTool\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"#1f77b4\"},\"hatch_alpha\":{\"value\":0.2},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"#1f77b4\"},\"line_width\":{\"value\":2},\"marker\":{\"value\":\"x\"},\"size\":{\"value\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1582\",\"type\":\"Scatter\"},{\"attributes\":{},\"id\":\"1568\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"1648\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1558\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1646\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"axis\":{\"id\":\"1561\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1564\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1553\",\"type\":\"LinearScale\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1579\"},\"glyph\":{\"id\":\"1580\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1582\"},\"nonselection_glyph\":{\"id\":\"1581\"},\"view\":{\"id\":\"1584\"}},\"id\":\"1583\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1646\"},\"group\":null,\"major_label_orientation\":0.7853981633974483,\"major_label_policy\":{\"id\":\"1647\"},\"ticker\":{\"id\":\"1558\"}},\"id\":\"1557\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1551\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1562\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1570\",\"type\":\"HelpTool\"},{\"attributes\":{\"tools\":[{\"id\":\"1565\"},{\"id\":\"1566\"},{\"id\":\"1567\"},{\"id\":\"1568\"},{\"id\":\"1569\"},{\"id\":\"1570\"}]},\"id\":\"1572\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"1566\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"1549\",\"type\":\"DataRange1d\"},{\"attributes\":{\"source\":{\"id\":\"1579\"}},\"id\":\"1584\",\"type\":\"CDSView\"},{\"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\":\"1571\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"fill_color\":{\"value\":\"#1f77b4\"},\"line_color\":{\"value\":\"#1f77b4\"},\"line_width\":{\"value\":2},\"marker\":{\"value\":\"x\"},\"size\":{\"value\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1580\",\"type\":\"Scatter\"},{\"attributes\":{},\"id\":\"1569\",\"type\":\"ResetTool\"}],\"root_ids\":[\"1548\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.3\"}};\n",
|
861
|
-
" const render_items = [{\"docid\":\"6c29768b-f199-48be-a3a1-bdf467578c74\",\"root_ids\":[\"1548\"],\"roots\":{\"1548\":\"a54c6459-f2ba-4a38-8e8a-76183e56956b\"}}];\n",
|
862
|
-
" root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
|
863
|
-
" }\n",
|
864
|
-
" if (root.Bokeh !== undefined) {\n",
|
865
|
-
" embed_document(root);\n",
|
866
|
-
" } else {\n",
|
867
|
-
" let attempts = 0;\n",
|
868
|
-
" const timer = setInterval(function(root) {\n",
|
869
|
-
" if (root.Bokeh !== undefined) {\n",
|
870
|
-
" clearInterval(timer);\n",
|
871
|
-
" embed_document(root);\n",
|
872
|
-
" } else {\n",
|
873
|
-
" attempts++;\n",
|
874
|
-
" if (attempts > 100) {\n",
|
875
|
-
" clearInterval(timer);\n",
|
876
|
-
" console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n",
|
877
|
-
" }\n",
|
878
|
-
" }\n",
|
879
|
-
" }, 10, root)\n",
|
880
|
-
" }\n",
|
881
|
-
"})(window);"
|
882
|
-
],
|
883
|
-
"application/vnd.bokehjs_exec.v0+json": ""
|
884
|
-
},
|
885
|
-
"metadata": {
|
886
|
-
"application/vnd.bokehjs_exec.v0+json": {
|
887
|
-
"id": "1548"
|
888
|
-
}
|
889
|
-
},
|
890
|
-
"output_type": "display_data"
|
891
|
-
}
|
892
|
-
],
|
893
|
-
"source": [
|
894
|
-
"from math import pi\n",
|
895
|
-
"\n",
|
896
|
-
"# create a new plot using figure\n",
|
897
|
-
"p = figure(\n",
|
898
|
-
" plot_height=400,\n",
|
899
|
-
" plot_width=800,\n",
|
900
|
-
")\n",
|
901
|
-
"\n",
|
902
|
-
"p.x(\n",
|
903
|
-
" [1,2,3,4,5],\n",
|
904
|
-
" [2,5,8,2,7],\n",
|
905
|
-
" size=10,\n",
|
906
|
-
" line_width=2\n",
|
907
|
-
")\n",
|
908
|
-
"\n",
|
909
|
-
"p.xaxis.major_label_orientation = pi/4\n",
|
910
|
-
"p.yaxis.major_label_orientation = \"vertical\"\n",
|
911
|
-
"\n",
|
912
|
-
"# show the results\n",
|
913
|
-
"show(p)"
|
914
|
-
]
|
915
|
-
},
|
916
|
-
{
|
917
|
-
"cell_type": "markdown",
|
918
|
-
"metadata": {
|
919
|
-
"Collapsed": "false"
|
920
|
-
},
|
921
|
-
"source": [
|
922
|
-
"The next example shows customizations on several of the different Axis properties at once:"
|
923
|
-
]
|
924
|
-
},
|
925
|
-
{
|
926
|
-
"cell_type": "code",
|
927
|
-
"execution_count": 8,
|
928
|
-
"metadata": {
|
929
|
-
"Collapsed": "false"
|
930
|
-
},
|
931
|
-
"outputs": [
|
932
|
-
{
|
933
|
-
"data": {
|
934
|
-
"text/html": [
|
935
|
-
"\n",
|
936
|
-
" <div class=\"bk-root\" id=\"d4980f46-66ae-4d72-9d25-4ae4a8411b24\" data-root-id=\"1706\"></div>\n"
|
937
|
-
]
|
938
|
-
},
|
939
|
-
"metadata": {},
|
940
|
-
"output_type": "display_data"
|
941
|
-
},
|
942
|
-
{
|
943
|
-
"data": {
|
944
|
-
"application/javascript": [
|
945
|
-
"(function(root) {\n",
|
946
|
-
" function embed_document(root) {\n",
|
947
|
-
" const docs_json = {\"7fddf087-dc06-4862-8ec4-41f469c31a55\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1715\"}],\"center\":[{\"id\":\"1718\"},{\"id\":\"1722\"}],\"height\":400,\"left\":[{\"id\":\"1719\"}],\"renderers\":[{\"id\":\"1741\"}],\"title\":{\"id\":\"1809\"},\"toolbar\":{\"id\":\"1730\"},\"width\":800,\"x_range\":{\"id\":\"1707\"},\"x_scale\":{\"id\":\"1711\"},\"y_range\":{\"id\":\"1709\"},\"y_scale\":{\"id\":\"1713\"}},\"id\":\"1706\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"axis_label\":\"Temp\",\"axis_line_color\":\"red\",\"axis_line_width\":3,\"coordinates\":null,\"formatter\":{\"id\":\"1815\"},\"group\":null,\"major_label_policy\":{\"id\":\"1816\"},\"minor_tick_in\":-3,\"minor_tick_out\":6,\"ticker\":{\"id\":\"1716\"}},\"id\":\"1715\",\"type\":\"LinearAxis\"},{\"attributes\":{\"axis\":{\"id\":\"1715\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"1718\",\"type\":\"Grid\"},{\"attributes\":{\"tools\":[{\"id\":\"1723\"},{\"id\":\"1724\"},{\"id\":\"1725\"},{\"id\":\"1726\"},{\"id\":\"1727\"},{\"id\":\"1728\"}]},\"id\":\"1730\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"1720\",\"type\":\"BasicTicker\"},{\"attributes\":{\"axis_label\":\"Pressure\",\"coordinates\":null,\"formatter\":{\"id\":\"1812\"},\"group\":null,\"major_label_orientation\":\"vertical\",\"major_label_policy\":{\"id\":\"1813\"},\"major_label_text_color\":\"orange\",\"minor_tick_in\":-3,\"minor_tick_out\":6,\"ticker\":{\"id\":\"1720\"}},\"id\":\"1719\",\"type\":\"LinearAxis\"},{\"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\":\"1729\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"axis\":{\"id\":\"1719\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1722\",\"type\":\"Grid\"},{\"attributes\":{\"source\":{\"id\":\"1737\"}},\"id\":\"1742\",\"type\":\"CDSView\"},{\"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\"},\"marker\":{\"value\":\"asterisk\"},\"size\":{\"value\":12},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1740\",\"type\":\"Scatter\"},{\"attributes\":{\"fill_color\":{\"value\":\"olive\"},\"hatch_color\":{\"value\":\"olive\"},\"line_color\":{\"value\":\"olive\"},\"marker\":{\"value\":\"asterisk\"},\"size\":{\"value\":12},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1738\",\"type\":\"Scatter\"},{\"attributes\":{},\"id\":\"1707\",\"type\":\"DataRange1d\"},{\"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\"},\"marker\":{\"value\":\"asterisk\"},\"size\":{\"value\":12},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1739\",\"type\":\"Scatter\"},{\"attributes\":{\"data\":{\"x\":[1,2,3,4,5],\"y\":[2,5,8,2,7]},\"selected\":{\"id\":\"1818\"},\"selection_policy\":{\"id\":\"1817\"}},\"id\":\"1737\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1709\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1723\",\"type\":\"PanTool\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1737\"},\"glyph\":{\"id\":\"1738\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1740\"},\"nonselection_glyph\":{\"id\":\"1739\"},\"view\":{\"id\":\"1742\"}},\"id\":\"1741\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1727\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"1812\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1818\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1724\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"1817\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"overlay\":{\"id\":\"1729\"}},\"id\":\"1725\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"1809\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"1726\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"1728\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"1815\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1813\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1716\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1816\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1711\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1713\",\"type\":\"LinearScale\"}],\"root_ids\":[\"1706\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.3\"}};\n",
|
948
|
-
" const render_items = [{\"docid\":\"7fddf087-dc06-4862-8ec4-41f469c31a55\",\"root_ids\":[\"1706\"],\"roots\":{\"1706\":\"d4980f46-66ae-4d72-9d25-4ae4a8411b24\"}}];\n",
|
949
|
-
" root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
|
950
|
-
" }\n",
|
951
|
-
" if (root.Bokeh !== undefined) {\n",
|
952
|
-
" embed_document(root);\n",
|
953
|
-
" } else {\n",
|
954
|
-
" let attempts = 0;\n",
|
955
|
-
" const timer = setInterval(function(root) {\n",
|
956
|
-
" if (root.Bokeh !== undefined) {\n",
|
957
|
-
" clearInterval(timer);\n",
|
958
|
-
" embed_document(root);\n",
|
959
|
-
" } else {\n",
|
960
|
-
" attempts++;\n",
|
961
|
-
" if (attempts > 100) {\n",
|
962
|
-
" clearInterval(timer);\n",
|
963
|
-
" console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n",
|
964
|
-
" }\n",
|
965
|
-
" }\n",
|
966
|
-
" }, 10, root)\n",
|
967
|
-
" }\n",
|
968
|
-
"})(window);"
|
969
|
-
],
|
970
|
-
"application/vnd.bokehjs_exec.v0+json": ""
|
971
|
-
},
|
972
|
-
"metadata": {
|
973
|
-
"application/vnd.bokehjs_exec.v0+json": {
|
974
|
-
"id": "1706"
|
975
|
-
}
|
976
|
-
},
|
977
|
-
"output_type": "display_data"
|
978
|
-
}
|
979
|
-
],
|
980
|
-
"source": [
|
981
|
-
"# create a new plot using figure\n",
|
982
|
-
"p = figure(\n",
|
983
|
-
" plot_height=400,\n",
|
984
|
-
" plot_width=800,\n",
|
985
|
-
")\n",
|
986
|
-
"\n",
|
987
|
-
"p.asterisk(\n",
|
988
|
-
" [1,2,3,4,5],\n",
|
989
|
-
" [2,5,8,2,7],\n",
|
990
|
-
" size=12,\n",
|
991
|
-
" color=\"olive\"\n",
|
992
|
-
")\n",
|
993
|
-
"\n",
|
994
|
-
"# change just some things about the x-axes\n",
|
995
|
-
"p.xaxis.axis_label = \"Temp\"\n",
|
996
|
-
"p.xaxis.axis_line_width = 3\n",
|
997
|
-
"p.xaxis.axis_line_color = \"red\"\n",
|
998
|
-
"\n",
|
999
|
-
"# change just some things about the y-axes\n",
|
1000
|
-
"p.yaxis.axis_label = \"Pressure\"\n",
|
1001
|
-
"p.yaxis.major_label_text_color = \"orange\"\n",
|
1002
|
-
"p.yaxis.major_label_orientation = \"vertical\"\n",
|
1003
|
-
"\n",
|
1004
|
-
"# change things on all axes\n",
|
1005
|
-
"p.axis.minor_tick_in = -3\n",
|
1006
|
-
"p.axis.minor_tick_out = 6\n",
|
1007
|
-
"\n",
|
1008
|
-
"# show the results\n",
|
1009
|
-
"show(p)"
|
1010
|
-
]
|
1011
|
-
},
|
1012
|
-
{
|
1013
|
-
"cell_type": "markdown",
|
1014
|
-
"metadata": {
|
1015
|
-
"Collapsed": "false"
|
1016
|
-
},
|
1017
|
-
"source": [
|
1018
|
-
"### Configuring tick labels\n",
|
1019
|
-
"\n",
|
1020
|
-
"All Bokeh axes have a `formatter` property, whose value is a `TickFormatter` object that Bokeh uses to format the ticks displayed by that axis. Bokeh will configure default tick formatters for numeric, datetime, or categotical axes. But often we would like to customize the appearance of tick labels. This can be accomplished by changing properties on the default formatter that Bokeh chooses, or by replacing the formatter with a new type entirely. \n",
|
1021
|
-
"\n",
|
1022
|
-
"Let's first look at changing the properties of a default formatter. The default datetime formatter is configured to show *month/day* when the axis is on the scale of days. If would like the also always show the year, we can change the `days` property to a format that includes the year, as done below. "
|
1023
|
-
]
|
1024
|
-
},
|
1025
|
-
{
|
1026
|
-
"cell_type": "code",
|
1027
|
-
"execution_count": 9,
|
1028
|
-
"metadata": {
|
1029
|
-
"Collapsed": "false"
|
1030
|
-
},
|
1031
|
-
"outputs": [
|
1032
|
-
{
|
1033
|
-
"data": {
|
1034
|
-
"text/html": [
|
1035
|
-
"\n",
|
1036
|
-
" <div class=\"bk-root\" id=\"fa75122f-68d4-4721-8440-be13852d8706\" data-root-id=\"1875\"></div>\n"
|
1037
|
-
]
|
1038
|
-
},
|
1039
|
-
"metadata": {},
|
1040
|
-
"output_type": "display_data"
|
1041
|
-
},
|
1042
|
-
{
|
1043
|
-
"data": {
|
1044
|
-
"application/javascript": [
|
1045
|
-
"(function(root) {\n",
|
1046
|
-
" function embed_document(root) {\n",
|
1047
|
-
" const docs_json = {\"11a0aa5c-13e1-4f85-b0ed-55b578a3c0f4\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1886\"}],\"center\":[{\"id\":\"1889\"},{\"id\":\"1893\"}],\"height\":400,\"left\":[{\"id\":\"1890\"}],\"renderers\":[{\"id\":\"1913\"}],\"title\":{\"id\":\"1876\"},\"toolbar\":{\"id\":\"1901\"},\"width\":800,\"x_range\":{\"id\":\"1878\"},\"x_scale\":{\"id\":\"1882\"},\"y_range\":{\"id\":\"1880\"},\"y_scale\":{\"id\":\"1884\"}},\"id\":\"1875\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"1891\",\"type\":\"BasicTicker\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1912\",\"type\":\"Line\"},{\"attributes\":{\"months\":[0,4,8]},\"id\":\"2011\",\"type\":\"MonthsTicker\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1994\"},\"group\":null,\"major_label_policy\":{\"id\":\"1995\"},\"ticker\":{\"id\":\"1891\"}},\"id\":\"1890\",\"type\":\"LinearAxis\"},{\"attributes\":{\"days\":[1,15]},\"id\":\"2008\",\"type\":\"DaysTicker\"},{\"attributes\":{\"months\":[0,1,2,3,4,5,6,7,8,9,10,11]},\"id\":\"2009\",\"type\":\"MonthsTicker\"},{\"attributes\":{\"months\":[0,2,4,6,8,10]},\"id\":\"2010\",\"type\":\"MonthsTicker\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1908\"},\"group\":null,\"major_label_orientation\":1.0471975511965976,\"major_label_policy\":{\"id\":\"1998\"},\"ticker\":{\"id\":\"1887\"}},\"id\":\"1886\",\"type\":\"DatetimeAxis\"},{\"attributes\":{\"mantissas\":[1,2,5],\"max_interval\":500.0,\"num_minor_ticks\":0},\"id\":\"2002\",\"type\":\"AdaptiveTicker\"},{\"attributes\":{\"axis\":{\"id\":\"1886\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"1889\",\"type\":\"Grid\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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AABK++C3ckIAAIhE4bdyQgAAxo3ht3JCAAAE1+G3ckIAAEIg4rdyQgAAgGnit3JCAAC+suK3ckIAAPz74rdyQgAAOkXjt3JCAAB4juO3ckIAALbX47dyQgAArvzkt3JCAADsReW3ckIAACqP5bdyQgAAaNjlt3JCAACmIea3ckIAAORq5rdyQgAAIrTmt3JCAABg/ea3ckIAAJ5G57dyQgAA3I/nt3JCAAAa2ee3ckIAAFgi6LdyQgAAlmvot3JCAADUtOi3ckIAABL+6LdyQgAAUEfpt3JCAACOkOm3ckIAAMzZ6bdyQgAACiPqt3JCAABIbOq3ckIAAIa16rdyQgAAxP7qt3JCAAACSOu3ckIAAECR67dyQgAAftrrt3JCAAC8I+y3ckIAAPps7LdyQgAAOLbst3JCAAB2/+y3ckIAALRI7bdyQgAA8pHtt3JCAAAw2+23ckIAAG4k7rdyQgAArG3ut3JCAADqtu63ckIAACgA77dyQgAAZknvt3JCAACkku+3ckIAAOLb77dyQgAAICXwt3JCAABebvC3ckIAAJy38LdyQgAA2gDxt3JCAAAYSvG3ckIAAFaT8bdyQgAAlNzxt3JCAADSJfK3ckIAABBv8rdyQgAATrjyt3JCAACMAfO3ckIAAMpK87dyQgAACJTzt3JCAABG3fO3ckIAAIQm9LdyQgAAwm/0t3JCAAAAufS3ckIAAD4C9bdyQgAAfEv1t3JCAAC6lPW3ckIAAPjd9bdyQgAANif2t3JCAAB0cPa3ckIAALK59rdyQgAA8AL3t3JCAAAuTPe3ckIAAGyV97dyQgAAqt73t3JCAADoJ/i3ckIAACZx+LdyQgAAZLr4t3JCAACiA/m3ckIAAOBM+bdyQgAAHpb5t3JCAABc3/m3ckIAAJoo+rdyQgAA2HH6t3JCAAAWu/q3ckIAAFQE+7dyQgAAkk37t3JCAADQlvu3ckIAAA7g+7dyQgAATCn8t3JCAACKcvy3ckIAAMi7/LdyQgAABgX9t3JCAABETv23ckIAAIKX/bdyQgAAwOD9t3JCAAD+Kf63ckIAADxz/rdyQgAAerz+t3JCAAC4Bf+3ckIAAPZO/7dyQgAANJj/t3JCAABy4f+3ckIAALAqALhyQgAA7nMAuHJCAAAsvQC4ckIAAGoGAbhyQgAAqE8BuHJCAADmmAG4ckIAACTi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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[2217]},\"y\":[92,100,108,115,120,124,128,133,137,142,147,152,157,162,167,171,175,179,185,192,200,207,212,215,217,219,218,219,217,216,216,216,215,214,212,211,209,207,204,203,203,203,203,204,203,202,201,200,199,199,197,193,189,185,182,182,183,184,184,182,177,174,172,170,168,167,166,164,162,160,158,155,152,150,147,140,131,124,120,116,114,114,116,118,119,120,120,120,119,117,114,112,112,111,111,112,111,111,110,108,106,106,106,106,104,101,101,103,102,100,99,100,100,99,99,99,100,99,98,97,97,96,92,90,89,86,85,85,84,84,81,80,81,86,99,115,125,130,129,128,123,118,113,111,112,111,109,108,105,101,100,102,107,113,119,125,129,131,129,128,127,127,127,125,122,117,113,108,103,98,93,89,86,85,83,82,81,82,84,87,92,99,107,121,133,142,146,149,150,151,151,152,152,150,148,161,160,158,157,157,157,156,153,149,147,145,144,145,149,154,159,163,164,164,164,163,162,158,154,153,154,155,157,159,158,156,152,148,144,139,134,128,123,121,119,117,115,115,112,109,106,105,103,101,97,93,89,86,85,88,93,100,106,113,119,125,131,137,142,149,159,172,186,197,204,207,208,207,205,202,199,197,193,185,176,178,177,177,176,173,171,170,169,167,166,165,163,163,162,160,156,150,150,150,151,150,150,150,149,149,148,149,147,145,143,139,141,145,147,147,146,145,141,138,136,135,134,133,132,129,124,120,118,112,114,119,123,125,126,127,128,135,143,148,151,153,154,155,156,156,157,157,156,155,154,147,137,131,128,129,131,132,133,135,135,133,131,132,135,138,139,138,136,132,128,126,125,120,113,108,106,105,108,111,113,116,120,120,120,119,118,118,118,118,117,116,113,106,98,93,97,107,115,122,120,113,102,94,95,96,90,88,83,83,85,90,97,98,99,94,89,95,105,111,113,106,95,90,91,96,101,104,109,112,120,123,118,115,123,130,128,130,136,131,121,113,110,108,109,111,115,120,115,108,105,105,104,106,110,111,115,115,117,114,111,107,105,109,111,110,111,115,121,126,135,142,145,147,150,153,156,160,162,161,160,160,159,157,154,152,152,150,143,138,132,128,124,119,112,105,98,92,94,98,106,118,126,128,127,123,123,121,118,115,112,112,114,113,105,78,209,204,214,252,282,290,295,292,284,268,263,262,263,263,262,258,249,236,179,165,157,152,150,149,150,154,158,163,166,166,163,159,158,161,170,176,178,174,170,166,160,156,151,148,147,145,142,141,145,144,144,153,155,152,147,143,145,152,156,157,156,155,155,156,158,158,158,156,152,146,139,139,141,143,145,147,148,149,149,149,148,147,144,140,139,139,138,137,136,135,134,133,134,136,137,136,134,135,139,142,143,141,138,141,145,148,151,152,154,156,155,155,159,163,166,166,166,164,162,160,158,157,155,153,150,150,149,149,149,149,150,152,154,155,155,156,156,157,160,163,165,165,164,163,121,119,117,114,113,112,113,113,113,113,112,113,113,113,114,112,110,109,109,109,108,108,90,90,94,99,107,116,125,130,132,130,124,117,110,103,95,88,81,77,75,63,65,70,73,78,80,80,79,80,83,86,89,94,96,98,104,105,106,106,107,107,109,114,118,121,123,124,123,122,122,123,123,123,124,123,123,124,127,132,137,139,140,140,142,147,152,156,160,165,168,169,169,165,162,160,158,156,154,150,146,144,141,138,136,133,129,124,118,112,107,106,107,108,109,110,111,112,112,113,114,115,116,117,118,119,122,125,128,130,130,131,130,128,126,123,120,116,93,89,86,84,82,79,76,74,72,71,69,70,68,67,66,67,68,69,69,69,68,68,67,66,65,64,63,61,61,60,60,61,63,64,64,64,63,64,65,66,67,67,66,66,67,68,69,71,73,72,71,70,71,72,74,75,76,78,79,80,81,82,84,86,88,88,87,86,85,86,86,86,86,87,87,88,88,88,89,87,83,79,78,82,85,87,88,89,89,89,87,86,88,89,90,89,90,92,91,90,89,88,87,87,89,90,91,92,94,108,110,110,111,111,111,112,113,114,116,116,116,117,119,121,124,127,131,138,145,150,155,161,165,169,173,177,182,185,185,184,189,193,195,198,198,197,196,196,199,202,202,201,202,204,205,205,203,202,201,197,197,198,199,200,199,195,190,184,180,178,179,180,179,176,175,174,172,169,168,167,170,180,191,203,214,219,219,222,227,228,226,223,221,219,219,218,218,219,218,216,214,214,211,208,207,206,206,205,202,199,193,190,187,182,179,176,173,170,167,163,158,152,146,141,135,129,122,114,108,102,97,90,85,81,77,73,68,65,62,61,61,61,61,61,60,59,59,60,61,64,69,75,82,92,104,117,128,137,144,149,153,156,160,164,169,175,180,184,188,191,193,195,196,200,203,207,212,218,223,228,231,234,235,236,327,327,330,333,328,321,316,308,298,287,274,263,255,249,243,239,234,230,225,220,215,210,206,204,204,199,195,190,185,181,177,175,173,171,170,169,169,168,167,166,166,166,163,161,159,158,157,156,154,152,150,149,149,150,150,151,151,152,153,153,153,154,154,154,154,153,152,152,150,149,148,146,145,144,144,143,142,142,141,140,139,137,137,138,136,137,137,136,137,136,134,133,132,132,132,132,132,134,136,138,141,142,142,143,145,150,154,156,158,160,162,164,167,169,172,175,176,175,174,172,170,171,173,178,185,191,198,210,223,235,244,254,265,273,283,290,296,302,307,309,313,316,318,320,322,320,319,317,313,311,306,300,297,294,293,290,287,286,285,282,279,274,271,270,270,269,274,271,267,264,262,259,255,250,244,237,232,227,223,220,215,210,205,199,195,193,197,206,221,239,258,276,291,302,311,318,323,324,322,320,319,320,319,317,314,311,307,302,294,286,280,276,272,267,259,251,245,241,241,241,242,244,245,245,242,237,232,228,225,216,215,216,217,217,215,211,206,202,200,201,203,201,196,188,176,163,149,138,129,119,108,98,89,79,71,66,66,67,67,68,69,71,74,77,79,81,85,91,99,109,119,132,145,157,168,175,179,183,185,188,188,187,184,179,172,163,159,157,155,153,151,149,148,148,148,147,146,145,145,144,143,143,143,144,145,146,145,144,143,142,140,140,140,140,140,143,147,150,152,152,152,154,155,142,140,138,134,131,130,128,127,126,126,126,126,127,129,131,132,134,136,136,136,136,135,134,132,130,130,130,129,128,127,125,124,123,123,122,121,120,118,115,112,111,111,110,110,109,108,107,107,107,108,107,105,105,105,105,104,103,102,99,97,96,94,94,93,93,92,91,92,94,95,96,97,99,102,104,112,112,112,111,110,107,104,105,105,103,99,96,94,95,102,114,128,144,160,173,185,196,205,209,214,219,226,234,241,248,255,260,265,268,270,272,271,271,268,265,261,256,253,250,246,244,241,237,233,229,225,222,204,200,197,193,190,186,182,179,175,171,168,164,158,154,151,148,145,141,133,139,152,173,196,217,233,244,249,250,253,256,260,263,265,265,264,260,254,246,234,217,200,188,181,175,169,164,159,154,147,138,132,129,127,123,117,111,106,104,103,100,94,88,83,78,75,73,71,69,68,67,67,68,70,71,71,70,69,68,67,67,67,66,67,69,71,74,76,78,80,80,80,80,80,80,82,84,87,90,92,87,87,86,86,86,86,87,87,87,85,83,82,83,87,95,107,118,130,141,149,172,179,187,201,214,221,225,230,232,230,223,216,208,199,191,185,181,177,176,177,176,173,171,169,163,154,152,153,154,154,153,151,150,150,150,152,149,147,148,150,152,152,152,151,151,150,149,147,146,143,140,138,136,137,138,140,138,135,132,130,129,129,129,130,130,129,128,128,128,129,129,128,127,126,125,125,125,125,124,124,121,120,120,123,124,123,122,120,115,113,114,114,115,116,115,112,111,111,109,108,107,107,110,113,114,115,115,115,114,113,113,116,119,120,121,121,122,123,124,125,126,126,126,126,126,127,127,125,122,118,115,111,112,115,117,120,124,127,131,137,143,148,153,159,166,172,178,184,191,199,206,212,217,223,229,232,233,235,237,240,241,243,246,247,246,243,240,234,229,225,221,217,216,215,215,215,212,208,203,199,196,194,190,185,180,177,163,158,152,149,153,163,174,182,188,192,195,197,201,204,205,203,199,195,189,184,176,169,162,150,138,128,119,110,100,90,80,73,68,64,63,63,66,68,70,71,72,74,80,94,116,141,164,183,198,210,220,228,233,237,241,247,252,256,260,259,258,256,251,245,238,234,227,221,215,208,207,207,203,201,201,199,179,176,171,163,152,137,119,98,77,61,50,45,47,59,71,86,99,109,116,117,115,111,107,102,96,91,90,94,97,97,95,92,87,84,84,83,84,86,86,86,84,82,82,81,81,82,84,87,89,91,92,94,93,93,94,96,100,101,99,97,96,96,97,97,98,99,101,102,106,114,121,127,130,124,105,109,119,127,129,132,129,126,126,126,126,126,125,124,125,130,130,128,126,126,126,126,126,126,126,127,128,129,129,127,128,136,141,143,141,138,131,129,133,134,130,129,134,137,139,138,130,122,118,115,114,113,113,112,112,117,118,117,118,118,117,117,114,112,115,118,124,126,119,121,122,274,285,293,297,298,298,296,293,289,282,275,267,256,249,242,233,225,217,217,215,203,190,185,193,202,202,194,182,170,143,130,120,110,102,93,80,67,57,52,50,49,49,54,72,93,104,114,125,134,140,145,145,141,136,130,124,118,116,114,112,108,105,102,99,95,91,88,85,83,82,80,79,79,83,86,87,88,89,89,88,88,90,92,88,86,86,86,84,82,84,88,90,94,99,104,107,107,105,104,103,95,94,93,93,93,93,93,94,99,109,122,172,169,164,156,147,137,126,115,104,99,99,103,106,111,115,117,118,120,120,120,120,119,119,118,118,117,116,115,115,116,116,115,115,114,112,109,110,111,111,110,109,109,109,108,107,106,105,101,100,99,99,98,97,97]},\"selected\":{\"id\":\"2000\"},\"selection_policy\":{\"id\":\"1999\"}},\"id\":\"1909\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1995\",\"type\":\"AllLabels\"},{\"attributes\":{\"months\":[0,6]},\"id\":\"2012\",\"type\":\"MonthsTicker\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1909\"},\"glyph\":{\"id\":\"1910\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1912\"},\"nonselection_glyph\":{\"id\":\"1911\"},\"view\":{\"id\":\"1914\"}},\"id\":\"1913\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1882\",\"type\":\"LinearScale\"},{\"attributes\":{\"axis\":{\"id\":\"1890\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1893\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1994\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"tools\":[{\"id\":\"1894\"},{\"id\":\"1895\"},{\"id\":\"1896\"},{\"id\":\"1897\"},{\"id\":\"1898\"},{\"id\":\"1899\"}]},\"id\":\"1901\",\"type\":\"Toolbar\"},{\"attributes\":{\"source\":{\"id\":\"1909\"}},\"id\":\"1914\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1898\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"2013\",\"type\":\"YearsTicker\"},{\"attributes\":{\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1910\",\"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\":\"1900\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1911\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1894\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"1880\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1895\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"1878\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1897\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"1884\",\"type\":\"LinearScale\"},{\"attributes\":{\"overlay\":{\"id\":\"1900\"}},\"id\":\"1896\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"days\":[\"%m/%d/%Y\"]},\"id\":\"1908\",\"type\":\"DatetimeTickFormatter\"},{\"attributes\":{},\"id\":\"1999\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"2000\",\"type\":\"Selection\"},{\"attributes\":{\"base\":60,\"mantissas\":[1,2,5,10,15,20,30],\"max_interval\":1800000.0,\"min_interval\":1000.0,\"num_minor_ticks\":0},\"id\":\"2003\",\"type\":\"AdaptiveTicker\"},{\"attributes\":{\"num_minor_ticks\":5,\"tickers\":[{\"id\":\"2002\"},{\"id\":\"2003\"},{\"id\":\"2004\"},{\"id\":\"2005\"},{\"id\":\"2006\"},{\"id\":\"2007\"},{\"id\":\"2008\"},{\"id\":\"2009\"},{\"id\":\"2010\"},{\"id\":\"2011\"},{\"id\":\"2012\"},{\"id\":\"2013\"}]},\"id\":\"1887\",\"type\":\"DatetimeTicker\"},{\"attributes\":{\"days\":[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]},\"id\":\"2005\",\"type\":\"DaysTicker\"},{\"attributes\":{},\"id\":\"1998\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1899\",\"type\":\"HelpTool\"},{\"attributes\":{\"days\":[1,8,15,22]},\"id\":\"2007\",\"type\":\"DaysTicker\"},{\"attributes\":{\"days\":[1,4,7,10,13,16,19,22,25,28]},\"id\":\"2006\",\"type\":\"DaysTicker\"},{\"attributes\":{\"base\":24,\"mantissas\":[1,2,4,6,8,12],\"max_interval\":43200000.0,\"min_interval\":3600000.0,\"num_minor_ticks\":0},\"id\":\"2004\",\"type\":\"AdaptiveTicker\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"text\":\"Glocose Range\"},\"id\":\"1876\",\"type\":\"Title\"}],\"root_ids\":[\"1875\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.3\"}};\n",
|
1048
|
-
" const render_items = [{\"docid\":\"11a0aa5c-13e1-4f85-b0ed-55b578a3c0f4\",\"root_ids\":[\"1875\"],\"roots\":{\"1875\":\"fa75122f-68d4-4721-8440-be13852d8706\"}}];\n",
|
1049
|
-
" root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
|
1050
|
-
" }\n",
|
1051
|
-
" if (root.Bokeh !== undefined) {\n",
|
1052
|
-
" embed_document(root);\n",
|
1053
|
-
" } else {\n",
|
1054
|
-
" let attempts = 0;\n",
|
1055
|
-
" const timer = setInterval(function(root) {\n",
|
1056
|
-
" if (root.Bokeh !== undefined) {\n",
|
1057
|
-
" clearInterval(timer);\n",
|
1058
|
-
" embed_document(root);\n",
|
1059
|
-
" } else {\n",
|
1060
|
-
" attempts++;\n",
|
1061
|
-
" if (attempts > 100) {\n",
|
1062
|
-
" clearInterval(timer);\n",
|
1063
|
-
" console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n",
|
1064
|
-
" }\n",
|
1065
|
-
" }\n",
|
1066
|
-
" }, 10, root)\n",
|
1067
|
-
" }\n",
|
1068
|
-
"})(window);"
|
1069
|
-
],
|
1070
|
-
"application/vnd.bokehjs_exec.v0+json": ""
|
1071
|
-
},
|
1072
|
-
"metadata": {
|
1073
|
-
"application/vnd.bokehjs_exec.v0+json": {
|
1074
|
-
"id": "1875"
|
1075
|
-
}
|
1076
|
-
},
|
1077
|
-
"output_type": "display_data"
|
1078
|
-
}
|
1079
|
-
],
|
1080
|
-
"source": [
|
1081
|
-
"from math import pi\n",
|
1082
|
-
"from bokeh.sampledata.glucose import data\n",
|
1083
|
-
"\n",
|
1084
|
-
"week = data.loc['2010-10-01':'2010-10-08']\n",
|
1085
|
-
"\n",
|
1086
|
-
"# create a new plot using figure\n",
|
1087
|
-
"p = figure(\n",
|
1088
|
-
" plot_height=400,\n",
|
1089
|
-
" plot_width=800,\n",
|
1090
|
-
" x_axis_type=\"datetime\",\n",
|
1091
|
-
" title=\"Glocose Range\"\n",
|
1092
|
-
")\n",
|
1093
|
-
"\n",
|
1094
|
-
"\n",
|
1095
|
-
"p.xaxis.formatter.days = '%m/%d/%Y'\n",
|
1096
|
-
"p.xaxis.major_label_orientation = pi/3\n",
|
1097
|
-
"\n",
|
1098
|
-
"p.line(week.index, week.glucose)\n",
|
1099
|
-
"\n",
|
1100
|
-
"# show the results\n",
|
1101
|
-
"show(p)"
|
1102
|
-
]
|
1103
|
-
},
|
1104
|
-
{
|
1105
|
-
"cell_type": "markdown",
|
1106
|
-
"metadata": {
|
1107
|
-
"Collapsed": "false"
|
1108
|
-
},
|
1109
|
-
"source": [
|
1110
|
-
"See the reference guide entry for [DatetimeTickFormatter](https://bokeh.pydata.org/en/latest/docs/reference/models/formatters.html#bokeh.models.formatters.DatetimeTickFormatter) to see other properties that can be updated. \n",
|
1111
|
-
"\n",
|
1112
|
-
"In addition to the tick formatters that Bokeh will use by default, there are others such as the [`NumeralTickFormatter`](https://bokeh.pydata.org/en/latest/docs/user_guide/styling.html#numeraltickformatter) that we can configure explicitly. The example below shows how to set a formatter on each axis. "
|
1113
|
-
]
|
1114
|
-
},
|
1115
|
-
{
|
1116
|
-
"cell_type": "code",
|
1117
|
-
"execution_count": 10,
|
1118
|
-
"metadata": {
|
1119
|
-
"Collapsed": "false"
|
1120
|
-
},
|
1121
|
-
"outputs": [
|
1122
|
-
{
|
1123
|
-
"data": {
|
1124
|
-
"text/html": [
|
1125
|
-
"\n",
|
1126
|
-
" <div class=\"bk-root\" id=\"4088ee5f-9b79-4539-9bfe-8e8b62f5402a\" data-root-id=\"2124\"></div>\n"
|
1127
|
-
]
|
1128
|
-
},
|
1129
|
-
"metadata": {},
|
1130
|
-
"output_type": "display_data"
|
1131
|
-
},
|
1132
|
-
{
|
1133
|
-
"data": {
|
1134
|
-
"application/javascript": [
|
1135
|
-
"(function(root) {\n",
|
1136
|
-
" function embed_document(root) {\n",
|
1137
|
-
" const docs_json = {\"613d7a77-2646-44bc-919b-9e517f0c7072\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"2133\"}],\"center\":[{\"id\":\"2136\"},{\"id\":\"2140\"}],\"height\":300,\"left\":[{\"id\":\"2137\"}],\"renderers\":[{\"id\":\"2159\"}],\"title\":{\"id\":\"2264\"},\"toolbar\":{\"id\":\"2148\"},\"width\":800,\"x_range\":{\"id\":\"2125\"},\"x_scale\":{\"id\":\"2129\"},\"y_range\":{\"id\":\"2127\"},\"y_scale\":{\"id\":\"2131\"}},\"id\":\"2124\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"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\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2158\",\"type\":\"Circle\"},{\"attributes\":{\"format\":\"$0.00\"},\"id\":\"2163\",\"type\":\"NumeralTickFormatter\"},{\"attributes\":{},\"id\":\"2141\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"2145\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"2142\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"2134\",\"type\":\"BasicTicker\"},{\"attributes\":{\"overlay\":{\"id\":\"2147\"}},\"id\":\"2143\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"2129\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"2131\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"2144\",\"type\":\"SaveTool\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"2161\"},\"group\":null,\"major_label_policy\":{\"id\":\"2269\"},\"ticker\":{\"id\":\"2134\"}},\"id\":\"2133\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"2267\",\"type\":\"AllLabels\"},{\"attributes\":{\"axis\":{\"id\":\"2133\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"2136\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"2146\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"2271\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"2127\",\"type\":\"DataRange1d\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"2155\"},\"glyph\":{\"id\":\"2156\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"2158\"},\"nonselection_glyph\":{\"id\":\"2157\"},\"view\":{\"id\":\"2160\"}},\"id\":\"2159\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"2163\"},\"group\":null,\"major_label_policy\":{\"id\":\"2267\"},\"ticker\":{\"id\":\"2138\"}},\"id\":\"2137\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"2270\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"tools\":[{\"id\":\"2141\"},{\"id\":\"2142\"},{\"id\":\"2143\"},{\"id\":\"2144\"},{\"id\":\"2145\"},{\"id\":\"2146\"}]},\"id\":\"2148\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"2138\",\"type\":\"BasicTicker\"},{\"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\":\"2147\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"axis\":{\"id\":\"2137\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"2140\",\"type\":\"Grid\"},{\"attributes\":{\"format\":\"0.0%\"},\"id\":\"2161\",\"type\":\"NumeralTickFormatter\"},{\"attributes\":{},\"id\":\"2125\",\"type\":\"DataRange1d\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"2264\",\"type\":\"Title\"},{\"attributes\":{\"fill_color\":{\"value\":\"#1f77b4\"},\"line_color\":{\"value\":\"#1f77b4\"},\"size\":{\"value\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2156\",\"type\":\"Circle\"},{\"attributes\":{},\"id\":\"2269\",\"type\":\"AllLabels\"},{\"attributes\":{\"source\":{\"id\":\"2155\"}},\"id\":\"2160\",\"type\":\"CDSView\"},{\"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\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2157\",\"type\":\"Circle\"},{\"attributes\":{\"data\":{\"x\":[1,2,3,4,5],\"y\":[2,5,8,2,7]},\"selected\":{\"id\":\"2271\"},\"selection_policy\":{\"id\":\"2270\"}},\"id\":\"2155\",\"type\":\"ColumnDataSource\"}],\"root_ids\":[\"2124\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.3\"}};\n",
|
1138
|
-
" const render_items = [{\"docid\":\"613d7a77-2646-44bc-919b-9e517f0c7072\",\"root_ids\":[\"2124\"],\"roots\":{\"2124\":\"4088ee5f-9b79-4539-9bfe-8e8b62f5402a\"}}];\n",
|
1139
|
-
" root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
|
1140
|
-
" }\n",
|
1141
|
-
" if (root.Bokeh !== undefined) {\n",
|
1142
|
-
" embed_document(root);\n",
|
1143
|
-
" } else {\n",
|
1144
|
-
" let attempts = 0;\n",
|
1145
|
-
" const timer = setInterval(function(root) {\n",
|
1146
|
-
" if (root.Bokeh !== undefined) {\n",
|
1147
|
-
" clearInterval(timer);\n",
|
1148
|
-
" embed_document(root);\n",
|
1149
|
-
" } else {\n",
|
1150
|
-
" attempts++;\n",
|
1151
|
-
" if (attempts > 100) {\n",
|
1152
|
-
" clearInterval(timer);\n",
|
1153
|
-
" console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n",
|
1154
|
-
" }\n",
|
1155
|
-
" }\n",
|
1156
|
-
" }, 10, root)\n",
|
1157
|
-
" }\n",
|
1158
|
-
"})(window);"
|
1159
|
-
],
|
1160
|
-
"application/vnd.bokehjs_exec.v0+json": ""
|
1161
|
-
},
|
1162
|
-
"metadata": {
|
1163
|
-
"application/vnd.bokehjs_exec.v0+json": {
|
1164
|
-
"id": "2124"
|
1165
|
-
}
|
1166
|
-
},
|
1167
|
-
"output_type": "display_data"
|
1168
|
-
}
|
1169
|
-
],
|
1170
|
-
"source": [
|
1171
|
-
"from bokeh.models import NumeralTickFormatter\n",
|
1172
|
-
"\n",
|
1173
|
-
"p = figure(plot_height=300, plot_width=800)\n",
|
1174
|
-
"p.circle([1,2,3,4,5], [2,5,8,2,7], size=10)\n",
|
1175
|
-
"\n",
|
1176
|
-
"p.xaxis.formatter = NumeralTickFormatter(format=\"0.0%\")\n",
|
1177
|
-
"p.yaxis.formatter = NumeralTickFormatter(format=\"$0.00\")\n",
|
1178
|
-
"\n",
|
1179
|
-
"# show the results\n",
|
1180
|
-
"show(p)"
|
1181
|
-
]
|
1182
|
-
},
|
1183
|
-
{
|
1184
|
-
"cell_type": "markdown",
|
1185
|
-
"metadata": {
|
1186
|
-
"Collapsed": "false"
|
1187
|
-
},
|
1188
|
-
"source": [
|
1189
|
-
"Try experimenting with the format argument and re-execute the cell above.\n",
|
1190
|
-
"\n",
|
1191
|
-
"There are many other possibilities for controlling tick formatting, including the possibility of supplying a JavaScript snippet to perform arbitrary formatting in the browser. See the [Tick Label Formats](https://bokeh.pydata.org/en/latest/docs/user_guide/styling.html#tick-label-formats) for more details. \n",
|
1192
|
-
"\n",
|
1193
|
-
"\n",
|
1194
|
-
"It is also possible to customize *where* ticks will be drawn. See the [Tick Locations](https://bokeh.pydata.org/en/latest/docs/user_guide/styling.html#tick-locations) section of the User's Guide for more information."
|
1195
|
-
]
|
1196
|
-
},
|
1197
|
-
{
|
1198
|
-
"cell_type": "markdown",
|
1199
|
-
"metadata": {
|
1200
|
-
"Collapsed": "false"
|
1201
|
-
},
|
1202
|
-
"source": [
|
1203
|
-
"### Grids\n",
|
1204
|
-
"\n",
|
1205
|
-
"It is also possible to control the [styling of Grids](https://bokeh.pydata.org/en/latest/docs/user_guide/styling.html#grids)\n",
|
1206
|
-
"\n",
|
1207
|
-
"Grids properties in Bokeh have two possible prefixes:\n",
|
1208
|
-
"\n",
|
1209
|
-
"* **grid** properties (which are [line properties](https://bokeh.pydata.org/en/latest/docs/user_guide/styling.html#line-properties)) control the \"grid lines\"\n",
|
1210
|
-
"* **band** properties (which are [fill properties](https://bokeh.pydata.org/en/latest/docs/user_guide/styling.html#fill-properties)) control shaded bands between grid lines\n",
|
1211
|
-
"\n",
|
1212
|
-
"In this first example we turn off the vertical grid lines (by setting the line color to None) and set the horizontal grid to be light and dashed."
|
1213
|
-
]
|
1214
|
-
},
|
1215
|
-
{
|
1216
|
-
"cell_type": "code",
|
1217
|
-
"execution_count": 11,
|
1218
|
-
"metadata": {
|
1219
|
-
"Collapsed": "false"
|
1220
|
-
},
|
1221
|
-
"outputs": [
|
1222
|
-
{
|
1223
|
-
"data": {
|
1224
|
-
"text/html": [
|
1225
|
-
"\n",
|
1226
|
-
" <div class=\"bk-root\" id=\"e47488a4-7866-45cf-ada8-b5ec064ca4bd\" data-root-id=\"2318\"></div>\n"
|
1227
|
-
]
|
1228
|
-
},
|
1229
|
-
"metadata": {},
|
1230
|
-
"output_type": "display_data"
|
1231
|
-
},
|
1232
|
-
{
|
1233
|
-
"data": {
|
1234
|
-
"application/javascript": [
|
1235
|
-
"(function(root) {\n",
|
1236
|
-
" function embed_document(root) {\n",
|
1237
|
-
" const docs_json = {\"1b94de34-58a8-4b3e-b8bb-2a5d79a8037e\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"2327\"}],\"center\":[{\"id\":\"2330\"},{\"id\":\"2334\"}],\"height\":400,\"left\":[{\"id\":\"2331\"}],\"renderers\":[{\"id\":\"2353\"}],\"title\":{\"id\":\"2463\"},\"toolbar\":{\"id\":\"2342\"},\"width\":800,\"x_range\":{\"id\":\"2319\"},\"x_scale\":{\"id\":\"2323\"},\"y_range\":{\"id\":\"2321\"},\"y_scale\":{\"id\":\"2325\"}},\"id\":\"2318\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"tools\":[{\"id\":\"2335\"},{\"id\":\"2336\"},{\"id\":\"2337\"},{\"id\":\"2338\"},{\"id\":\"2339\"},{\"id\":\"2340\"}]},\"id\":\"2342\",\"type\":\"Toolbar\"},{\"attributes\":{\"fill_color\":{\"value\":\"#1f77b4\"},\"line_color\":{\"value\":\"#1f77b4\"},\"size\":{\"value\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2350\",\"type\":\"Circle\"},{\"attributes\":{},\"id\":\"2321\",\"type\":\"DataRange1d\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"2463\",\"type\":\"Title\"},{\"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\":\"2341\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"2335\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"2319\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"2339\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"2336\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"2472\",\"type\":\"Selection\"},{\"attributes\":{\"overlay\":{\"id\":\"2341\"}},\"id\":\"2337\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"2338\",\"type\":\"SaveTool\"},{\"attributes\":{\"data\":{\"x\":[1,2,3,4,5],\"y\":[2,5,8,2,7]},\"selected\":{\"id\":\"2472\"},\"selection_policy\":{\"id\":\"2471\"}},\"id\":\"2349\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"2349\"},\"glyph\":{\"id\":\"2350\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"2352\"},\"nonselection_glyph\":{\"id\":\"2351\"},\"view\":{\"id\":\"2354\"}},\"id\":\"2353\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"2328\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"2323\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"2340\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"2467\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"2325\",\"type\":\"LinearScale\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"2469\"},\"group\":null,\"major_label_policy\":{\"id\":\"2470\"},\"ticker\":{\"id\":\"2328\"}},\"id\":\"2327\",\"type\":\"LinearAxis\"},{\"attributes\":{\"source\":{\"id\":\"2349\"}},\"id\":\"2354\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"2471\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"axis\":{\"id\":\"2327\"},\"coordinates\":null,\"grid_line_color\":null,\"group\":null,\"ticker\":null},\"id\":\"2330\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"2332\",\"type\":\"BasicTicker\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"2466\"},\"group\":null,\"major_label_policy\":{\"id\":\"2467\"},\"ticker\":{\"id\":\"2332\"}},\"id\":\"2331\",\"type\":\"LinearAxis\"},{\"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\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2351\",\"type\":\"Circle\"},{\"attributes\":{},\"id\":\"2469\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"axis\":{\"id\":\"2331\"},\"coordinates\":null,\"dimension\":1,\"grid_line_alpha\":0.5,\"grid_line_dash\":[6,4],\"group\":null,\"ticker\":null},\"id\":\"2334\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"2466\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"2470\",\"type\":\"AllLabels\"},{\"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\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2352\",\"type\":\"Circle\"}],\"root_ids\":[\"2318\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.3\"}};\n",
|
1238
|
-
" const render_items = [{\"docid\":\"1b94de34-58a8-4b3e-b8bb-2a5d79a8037e\",\"root_ids\":[\"2318\"],\"roots\":{\"2318\":\"e47488a4-7866-45cf-ada8-b5ec064ca4bd\"}}];\n",
|
1239
|
-
" root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
|
1240
|
-
" }\n",
|
1241
|
-
" if (root.Bokeh !== undefined) {\n",
|
1242
|
-
" embed_document(root);\n",
|
1243
|
-
" } else {\n",
|
1244
|
-
" let attempts = 0;\n",
|
1245
|
-
" const timer = setInterval(function(root) {\n",
|
1246
|
-
" if (root.Bokeh !== undefined) {\n",
|
1247
|
-
" clearInterval(timer);\n",
|
1248
|
-
" embed_document(root);\n",
|
1249
|
-
" } else {\n",
|
1250
|
-
" attempts++;\n",
|
1251
|
-
" if (attempts > 100) {\n",
|
1252
|
-
" clearInterval(timer);\n",
|
1253
|
-
" console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n",
|
1254
|
-
" }\n",
|
1255
|
-
" }\n",
|
1256
|
-
" }, 10, root)\n",
|
1257
|
-
" }\n",
|
1258
|
-
"})(window);"
|
1259
|
-
],
|
1260
|
-
"application/vnd.bokehjs_exec.v0+json": ""
|
1261
|
-
},
|
1262
|
-
"metadata": {
|
1263
|
-
"application/vnd.bokehjs_exec.v0+json": {
|
1264
|
-
"id": "2318"
|
1265
|
-
}
|
1266
|
-
},
|
1267
|
-
"output_type": "display_data"
|
1268
|
-
}
|
1269
|
-
],
|
1270
|
-
"source": [
|
1271
|
-
"# create a new plot using figure\n",
|
1272
|
-
"p = figure(\n",
|
1273
|
-
" plot_height=400,\n",
|
1274
|
-
" plot_width=800,\n",
|
1275
|
-
")\n",
|
1276
|
-
"\n",
|
1277
|
-
"p.circle(\n",
|
1278
|
-
" [1,2,3,4,5],\n",
|
1279
|
-
" [2,5,8,2,7],\n",
|
1280
|
-
" size=10\n",
|
1281
|
-
")\n",
|
1282
|
-
"\n",
|
1283
|
-
"# change just some things about the x-grid\n",
|
1284
|
-
"p.xgrid.grid_line_color = None\n",
|
1285
|
-
"\n",
|
1286
|
-
"# change just some things about the y-grid\n",
|
1287
|
-
"p.ygrid.grid_line_alpha = 0.5\n",
|
1288
|
-
"p.ygrid.grid_line_dash = [6, 4]\n",
|
1289
|
-
"\n",
|
1290
|
-
"# show the results\n",
|
1291
|
-
"show(p)"
|
1292
|
-
]
|
1293
|
-
},
|
1294
|
-
{
|
1295
|
-
"cell_type": "markdown",
|
1296
|
-
"metadata": {
|
1297
|
-
"Collapsed": "false"
|
1298
|
-
},
|
1299
|
-
"source": [
|
1300
|
-
"The next example shows how the \"band\" properties of a plot can be specified"
|
1301
|
-
]
|
1302
|
-
},
|
1303
|
-
{
|
1304
|
-
"cell_type": "code",
|
1305
|
-
"execution_count": 12,
|
1306
|
-
"metadata": {
|
1307
|
-
"Collapsed": "false"
|
1308
|
-
},
|
1309
|
-
"outputs": [
|
1310
|
-
{
|
1311
|
-
"data": {
|
1312
|
-
"text/html": [
|
1313
|
-
"\n",
|
1314
|
-
" <div class=\"bk-root\" id=\"3fd26f99-1dbb-4670-8e11-72b3f5ca79c4\" data-root-id=\"2529\"></div>\n"
|
1315
|
-
]
|
1316
|
-
},
|
1317
|
-
"metadata": {},
|
1318
|
-
"output_type": "display_data"
|
1319
|
-
},
|
1320
|
-
{
|
1321
|
-
"data": {
|
1322
|
-
"application/javascript": [
|
1323
|
-
"(function(root) {\n",
|
1324
|
-
" function embed_document(root) {\n",
|
1325
|
-
" const docs_json = {\"13ecf0c1-f773-4b5c-8c3f-194537425ed6\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"2538\"}],\"center\":[{\"id\":\"2541\"},{\"id\":\"2545\"}],\"height\":400,\"left\":[{\"id\":\"2542\"}],\"renderers\":[{\"id\":\"2564\"}],\"title\":{\"id\":\"2685\"},\"toolbar\":{\"id\":\"2553\"},\"width\":800,\"x_range\":{\"id\":\"2530\"},\"x_scale\":{\"id\":\"2534\"},\"y_range\":{\"id\":\"2532\"},\"y_scale\":{\"id\":\"2536\"}},\"id\":\"2529\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"2692\",\"type\":\"AllLabels\"},{\"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\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2562\",\"type\":\"Circle\"},{\"attributes\":{\"axis\":{\"id\":\"2542\"},\"band_fill_alpha\":0.1,\"band_fill_color\":\"navy\",\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"2545\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"2694\",\"type\":\"Selection\"},{\"attributes\":{\"data\":{\"x\":[1,2,3,4,5],\"y\":[2,5,8,2,7]},\"selected\":{\"id\":\"2694\"},\"selection_policy\":{\"id\":\"2693\"}},\"id\":\"2560\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"2693\",\"type\":\"UnionRenderers\"},{\"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\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2563\",\"type\":\"Circle\"},{\"attributes\":{},\"id\":\"2688\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"source\":{\"id\":\"2560\"}},\"id\":\"2565\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"2530\",\"type\":\"DataRange1d\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"2560\"},\"glyph\":{\"id\":\"2561\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"2563\"},\"nonselection_glyph\":{\"id\":\"2562\"},\"view\":{\"id\":\"2565\"}},\"id\":\"2564\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"2532\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"2546\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"2550\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"2547\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"overlay\":{\"id\":\"2552\"}},\"id\":\"2548\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"2549\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"2691\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"2539\",\"type\":\"BasicTicker\"},{\"attributes\":{\"fill_color\":{\"value\":\"#1f77b4\"},\"line_color\":{\"value\":\"#1f77b4\"},\"size\":{\"value\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2561\",\"type\":\"Circle\"},{\"attributes\":{},\"id\":\"2534\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"2551\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"2536\",\"type\":\"LinearScale\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"2685\",\"type\":\"Title\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"2691\"},\"group\":null,\"major_label_policy\":{\"id\":\"2692\"},\"ticker\":{\"id\":\"2539\"}},\"id\":\"2538\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"2689\",\"type\":\"AllLabels\"},{\"attributes\":{\"axis\":{\"id\":\"2538\"},\"coordinates\":null,\"grid_line_color\":null,\"group\":null,\"ticker\":null},\"id\":\"2541\",\"type\":\"Grid\"},{\"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\":\"2552\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"2543\",\"type\":\"BasicTicker\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"2688\"},\"group\":null,\"major_label_policy\":{\"id\":\"2689\"},\"ticker\":{\"id\":\"2543\"}},\"id\":\"2542\",\"type\":\"LinearAxis\"},{\"attributes\":{\"tools\":[{\"id\":\"2546\"},{\"id\":\"2547\"},{\"id\":\"2548\"},{\"id\":\"2549\"},{\"id\":\"2550\"},{\"id\":\"2551\"}]},\"id\":\"2553\",\"type\":\"Toolbar\"}],\"root_ids\":[\"2529\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.3\"}};\n",
|
1326
|
-
" const render_items = [{\"docid\":\"13ecf0c1-f773-4b5c-8c3f-194537425ed6\",\"root_ids\":[\"2529\"],\"roots\":{\"2529\":\"3fd26f99-1dbb-4670-8e11-72b3f5ca79c4\"}}];\n",
|
1327
|
-
" root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
|
1328
|
-
" }\n",
|
1329
|
-
" if (root.Bokeh !== undefined) {\n",
|
1330
|
-
" embed_document(root);\n",
|
1331
|
-
" } else {\n",
|
1332
|
-
" let attempts = 0;\n",
|
1333
|
-
" const timer = setInterval(function(root) {\n",
|
1334
|
-
" if (root.Bokeh !== undefined) {\n",
|
1335
|
-
" clearInterval(timer);\n",
|
1336
|
-
" embed_document(root);\n",
|
1337
|
-
" } else {\n",
|
1338
|
-
" attempts++;\n",
|
1339
|
-
" if (attempts > 100) {\n",
|
1340
|
-
" clearInterval(timer);\n",
|
1341
|
-
" console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n",
|
1342
|
-
" }\n",
|
1343
|
-
" }\n",
|
1344
|
-
" }, 10, root)\n",
|
1345
|
-
" }\n",
|
1346
|
-
"})(window);"
|
1347
|
-
],
|
1348
|
-
"application/vnd.bokehjs_exec.v0+json": ""
|
1349
|
-
},
|
1350
|
-
"metadata": {
|
1351
|
-
"application/vnd.bokehjs_exec.v0+json": {
|
1352
|
-
"id": "2529"
|
1353
|
-
}
|
1354
|
-
},
|
1355
|
-
"output_type": "display_data"
|
1356
|
-
}
|
1357
|
-
],
|
1358
|
-
"source": [
|
1359
|
-
"# create a new plot using figure\n",
|
1360
|
-
"p = figure(\n",
|
1361
|
-
" plot_height=400,\n",
|
1362
|
-
" plot_width=800,\n",
|
1363
|
-
")\n",
|
1364
|
-
"\n",
|
1365
|
-
"\n",
|
1366
|
-
"p.circle(\n",
|
1367
|
-
" [1,2,3,4,5],\n",
|
1368
|
-
" [2,5,8,2,7],\n",
|
1369
|
-
" size=10\n",
|
1370
|
-
")\n",
|
1371
|
-
"\n",
|
1372
|
-
"# change just some things about the x-grid\n",
|
1373
|
-
"p.xgrid.grid_line_color = None\n",
|
1374
|
-
"\n",
|
1375
|
-
"# change just some things about the y-grid\n",
|
1376
|
-
"p.ygrid.band_fill_alpha = 0.1\n",
|
1377
|
-
"p.ygrid.band_fill_color = \"navy\"\n",
|
1378
|
-
"\n",
|
1379
|
-
"# show the results\n",
|
1380
|
-
"show(p)"
|
1381
|
-
]
|
1382
|
-
}
|
1383
|
-
],
|
1384
|
-
"metadata": {
|
1385
|
-
"kernelspec": {
|
1386
|
-
"display_name": "Python 3",
|
1387
|
-
"language": "python",
|
1388
|
-
"name": "python3"
|
1389
|
-
},
|
1390
|
-
"language_info": {
|
1391
|
-
"codemirror_mode": {
|
1392
|
-
"name": "ipython",
|
1393
|
-
"version": 3
|
1394
|
-
},
|
1395
|
-
"file_extension": ".py",
|
1396
|
-
"mimetype": "text/x-python",
|
1397
|
-
"name": "python",
|
1398
|
-
"nbconvert_exporter": "python",
|
1399
|
-
"pygments_lexer": "ipython3",
|
1400
|
-
"version": "3.7.9"
|
1401
|
-
}
|
1402
|
-
},
|
1403
|
-
"nbformat": 4,
|
1404
|
-
"nbformat_minor": 4
|
1405
|
-
}
|