j1-template 2022.5.0.rc3 → 2022.5.1.rc0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/_includes/themes/j1/modules/attics/generator.html +5 -13
- data/assets/data/banner.html +2 -2
- data/assets/themes/j1/adapter/js/attic.js +106 -62
- data/assets/themes/j1/adapter/js/masterslider.js +22 -5
- data/assets/themes/j1/core/css/themes/unolight/bootstrap.css +26 -1
- data/assets/themes/j1/core/css/themes/unolight/bootstrap.min.css +1 -1
- data/assets/themes/j1/modules/backstretch/js/backstretch.js +1 -1
- data/assets/themes/j1/modules/backstretch/js/v2.1.16/backstretch.js +1696 -0
- data/assets/themes/j1/modules/backstretch/js/v2.1.16/backstretch.min.js +20 -0
- data/assets/themes/j1/modules/backstretch/js/v2.1.18/backstretch.js +1627 -0
- data/assets/themes/j1/modules/backstretch/js/v2.1.18/backstretch.min.js +20 -0
- data/assets/themes/j1/modules/cryptoJS/js/rc4.js +2 -2
- data/lib/j1/version.rb +1 -1
- data/lib/starter_web/Gemfile +1 -1
- data/lib/starter_web/README.md +440 -175
- data/lib/starter_web/_config.yml +3 -3
- data/lib/starter_web/_data/blocks/banner.yml +1 -1
- data/lib/starter_web/_data/modules/attics.yml +12 -0
- data/lib/starter_web/_data/modules/defaults/attics.yml +16 -1
- data/lib/starter_web/_data/modules/defaults/masterslider.yml +1 -1
- data/lib/starter_web/_data/modules/masterslider.yml +0 -4
- data/lib/starter_web/_data/modules/navigator_menu.yml +31 -25
- data/lib/starter_web/_includes/attributes.asciidoc +2 -0
- data/lib/starter_web/_plugins/lunr_index.rb +1 -1
- data/lib/starter_web/assets/images/modules/attics/1920x1280/ben-kolde.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/1920x1280/braden-collum.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/1920x1280/ev.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/1920x1280/firmbee-com.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/1920x1280/max-harlynking.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/guillaume-bolduc-1920x1280.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/spacex-1920x1280.jpg +0 -0
- data/lib/starter_web/assets/videos/headers/{still → present_videos/still}/underground-broadway.jpg +0 -0
- data/lib/starter_web/assets/videos/headers/present_videos/underground-broadway.mp4 +0 -0
- data/lib/starter_web/collections/asciidoc_skeletons/simple-post/_posts/yyyy-mm-dd-your-post-name.asciidoc +3 -1
- data/lib/starter_web/collections/posts/public/featured/_posts/2021-01-01-about-cookies.adoc +3 -0
- data/lib/starter_web/collections/posts/public/featured/_posts/2021-02-01-site-generators.adoc +2 -3
- data/lib/starter_web/collections/posts/public/featured/_posts/2022-02-01-about-j1.adoc +3 -0
- data/lib/starter_web/collections/posts/public/series/_posts/2020-01-01-post-wiki-series.adoc +3 -0
- data/lib/starter_web/collections/posts/public/series/_posts/2020-01-02-post-wiki-series.adoc +3 -0
- data/lib/starter_web/collections/posts/public/series/_posts/2020-01-03-post-wiki-series.adoc +3 -0
- data/lib/starter_web/index.html +41 -7
- data/lib/starter_web/package.json +2 -2
- data/lib/starter_web/pages/public/about/features.adoc +119 -0
- data/lib/starter_web/pages/public/about/reporting_issues.adoc +78 -0
- data/lib/starter_web/pages/public/about/{about_site.adoc → site.adoc} +20 -15
- data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/documentation.adoc +3 -0
- data/lib/starter_web/pages/public/asciidoc_skeletons/multi-document/multi.adoc +3 -0
- data/lib/starter_web/pages/public/asciidoc_skeletons/simple-document/simple.adoc +3 -0
- data/lib/starter_web/pages/public/blog/navigator/archive/categoryview.html +3 -0
- data/lib/starter_web/pages/public/blog/navigator/archive/dateview.html +4 -1
- data/lib/starter_web/pages/public/blog/navigator/archive/tagview.html +4 -1
- data/lib/starter_web/pages/public/blog/navigator/archive.html +4 -1
- data/lib/starter_web/pages/public/blog/navigator/index.html +4 -1
- data/lib/starter_web/pages/public/features/general.adoc +5 -1
- data/lib/starter_web/pages/public/features/template.adoc +4 -0
- data/lib/starter_web/pages/public/jupyter/examples/distributed/j1-circular-times-table.adoc +3 -0
- data/lib/starter_web/pages/public/jupyter/examples/distributed/j1-common-used-widgets.adoc +3 -0
- data/lib/starter_web/pages/public/jupyter/examples/distributed/j1-odes-in-python.adoc +3 -0
- data/lib/starter_web/pages/public/jupyter/examples/localized/j1_climate-change-forecast.adoc +3 -0
- data/lib/starter_web/pages/public/jupyter/notebooks/textbooks/j1_interactive_widgets.html +512 -512
- data/lib/starter_web/pages/public/jupyter/notebooks/textbooks/j1_nbi_widgets.html +629 -629
- data/lib/starter_web/pages/public/jupyter/notebooks/textbooks/j1_nbi_widgets_bar_chart.html +95 -95
- data/lib/starter_web/pages/public/jupyter/notebooks/textbooks/j1_nbi_widgets_hist_chart.html +93 -93
- data/lib/starter_web/pages/public/jupyter/notebooks/textbooks/j1_nbi_widgets_line_chart.html +96 -96
- data/lib/starter_web/pages/public/jupyter/notebooks/textbooks/j1_nbi_widgets_question_multiple_choice.html +70 -70
- data/lib/starter_web/pages/public/jupyter/notebooks/textbooks/j1_nbi_widgets_question_short_answer.html +156 -156
- data/lib/starter_web/pages/public/jupyter/notebooks/textbooks/j1_nbi_widgets_scatter_chart.html +95 -95
- data/lib/starter_web/pages/public/jupyter/notebooks/textbooks/j1_nbi_widgets_scatter_drag_chart.html +93 -93
- data/lib/starter_web/pages/public/jupyter/notebooks/textbooks/j1_odes_in_python.html +955 -955
- data/lib/starter_web/pages/public/learn/quickstart.adoc +4 -1
- data/lib/starter_web/pages/public/learn/roundtrip/100_present_images.adoc +4 -1
- data/lib/starter_web/pages/public/learn/roundtrip/100_present_videos.adoc +16 -5
- data/lib/starter_web/pages/public/learn/roundtrip/200_typography.adoc +3 -0
- data/lib/starter_web/pages/public/learn/roundtrip/300_icon_fonts.adoc +3 -0
- data/lib/starter_web/pages/public/learn/roundtrip/400_asciidoc_extensions.adoc +3 -0
- data/lib/starter_web/pages/public/learn/roundtrip/410_bs_modals_extentions.adoc +3 -0
- data/lib/starter_web/pages/public/learn/roundtrip/420_responsive_tables_extensions.adoc +3 -0
- data/lib/starter_web/pages/public/learn/roundtrip/500_themes.adoc +3 -0
- data/lib/starter_web/pages/public/learn/roundtrip/600_quicksearch.adoc +6 -2
- data/lib/starter_web/pages/public/learn/where_to_go.adoc +3 -0
- data/lib/starter_web/pages/public/legal/de/100_copyright.adoc +3 -0
- data/lib/starter_web/pages/public/legal/de/100_impress.adoc +3 -0
- data/lib/starter_web/pages/public/legal/de/300_privacy.adoc +3 -0
- data/lib/starter_web/pages/public/legal/de/400_comment_policy.adoc +3 -0
- data/lib/starter_web/pages/public/legal/en/100_copyright.adoc +9 -1
- data/lib/starter_web/pages/public/legal/en/200_impress.adoc +10 -2
- data/lib/starter_web/pages/public/legal/en/300_privacy.adoc +3 -0
- data/lib/starter_web/pages/public/legal/en/400_comment_policy.adoc +3 -0
- data/lib/starter_web/pages/public/panels/intro_panel/panel.adoc +3 -0
- data/lib/starter_web/pages/public/plans/plans.adoc +3 -0
- data/lib/starter_web/pages/public/previewer/preview_bootstrap_theme.adoc +4 -0
- data/lib/starter_web/pages/public/se/se-fake.adoc +4 -0
- data/lib/starter_web/utilsrv/_defaults/package.json +1 -1
- data/lib/starter_web/utilsrv/package.json +1 -1
- metadata +18 -365
- data/lib/starter_web/assets/videos/headers/still/victoria-oskolovich-on-vimeo.jpg +0 -0
- data/lib/starter_web/pages/public/_jupyter/docs/_includes/attributes.asciidoc +0 -67
- data/lib/starter_web/pages/public/_jupyter/docs/_includes/documents/j1_docs_example_static.asciidoc +0 -232
- data/lib/starter_web/pages/public/_jupyter/docs/binderhub.adoc +0 -631
- data/lib/starter_web/pages/public/_jupyter/docs/j1-nbinteract.adoc +0 -638
- data/lib/starter_web/pages/public/_jupyter/docs/jupyterhub.adoc +0 -248
- data/lib/starter_web/pages/public/_jupyter/docs/nbinteract-widget-manual.adoc +0 -928
- data/lib/starter_web/pages/public/_jupyter/examples/distributed/j1-circular-times-table.adoc +0 -139
- data/lib/starter_web/pages/public/_jupyter/examples/distributed/j1-common-used-widgets.adoc +0 -229
- data/lib/starter_web/pages/public/_jupyter/examples/distributed/j1-odes-in-python.adoc +0 -112
- data/lib/starter_web/pages/public/_jupyter/examples/localized/j1-altair/j1-altair-visualisations.adoc +0 -142
- data/lib/starter_web/pages/public/_jupyter/examples/localized/j1-bokeh/j1-bokeh-visualisations.adoc +0 -171
- data/lib/starter_web/pages/public/_jupyter/examples/localized/j1-bokeh/j1-bqplot-eamples.adoc +0 -111
- data/lib/starter_web/pages/public/_jupyter/examples/localized/j1-plotly/j1-plotly-visualisations.adoc +0 -94
- data/lib/starter_web/pages/public/_jupyter/examples/localized/j1_climate-change-forecast.adoc +0 -106
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_altair_interactive-checkpoint.ipynb +0 -16260
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_bgplot_line_plot-checkpoint.ipynb +0 -247
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_circular_times_table-Copy1-checkpoint.ipynb +0 -12382
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_circular_times_table-checkpoint.ipynb +0 -12387
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_circular_times_table-short-checkpoint.ipynb +0 -12170
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_climate_change_forecast-checkpoint.ipynb +0 -1058
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_docs_example_dynamic-checkpoint.ipynb +0 -14478
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_interactive_widgets-Copy1-checkpoint.ipynb +0 -379
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_interactive_widgets-checkpoint.ipynb +0 -442
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets-checkpoint.ipynb +0 -523
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets.line_charts-checkpoint.ipynb +0 -84
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets.questions-checkpoint.ipynb +0 -194
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets_bar_chart-checkpoint.ipynb +0 -89
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets_bar_charts-Copy1-checkpoint.ipynb +0 -164
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets_bar_charts-checkpoint.ipynb +0 -173
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets_bar_charts.1-checkpoint.ipynb +0 -256
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets_barcharts-checkpoint.ipynb +0 -126
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets_hist_chart-checkpoint.ipynb +0 -87
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets_line_chart-checkpoint.ipynb +0 -90
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets_line_charts-checkpoint.ipynb +0 -87
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets_question_multiple_choice-checkpoint.ipynb +0 -64
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets_question_short_answer-checkpoint.ipynb +0 -122
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets_questions-checkpoint.ipynb +0 -181
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets_scatter_chart-checkpoint.ipynb +0 -89
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets_scatter_charts-checkpoint.ipynb +0 -175
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets_scatter_drag_chart-checkpoint.ipynb +0 -87
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_ode_selected-checkpoint.ipynb +0 -14478
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_odes_in_python-checkpoint.ipynb +0 -15227
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/factor_by_factor.mp4 +0 -0
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/j1_circular_times_table.ipynb +0 -12382
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/j1_climate_change_forecast.ipynb +0 -1058
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/j1_docs_example_dynamic.ipynb +0 -14478
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/j1_interactive_widgets.ipynb +0 -442
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/j1_nbi_widgets.ipynb +0 -523
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/j1_nbi_widgets_bar_chart.ipynb +0 -89
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/j1_nbi_widgets_hist_chart.ipynb +0 -87
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/j1_nbi_widgets_line_chart.ipynb +0 -90
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/j1_nbi_widgets_question_multiple_choice.ipynb +0 -64
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/j1_nbi_widgets_question_short_answer.ipynb +0 -122
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/j1_nbi_widgets_scatter_chart.ipynb +0 -89
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/j1_nbi_widgets_scatter_drag_chart.ipynb +0 -87
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/j1_odes_in_python.ipynb +0 -15227
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/line_by_line.mp4 +0 -0
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/point_by_point.mp4 +0 -0
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-altair-tutorial/.ipynb_checkpoints/j1_altair_interactive-checkpoint.ipynb +0 -16296
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-altair-tutorial/.ipynb_checkpoints/j1_altair_non_interactive-checkpoint.ipynb +0 -15385
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-altair-tutorial/j1_altair_interactive.ipynb +0 -16296
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-altair-tutorial/j1_altair_non_interactive.ipynb +0 -15385
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/00 - Introduction and Setup-checkpoint.ipynb +0 -717
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/01 - Basic Plotting-checkpoint.ipynb +0 -1381
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/02 - Styling and Theming-checkpoint.ipynb +0 -1440
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/03 - Data Sources and Transformations-checkpoint.ipynb +0 -927
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/04 - Adding Annotations-checkpoint.ipynb +0 -1105
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/05 - Presentation Layouts-checkpoint.ipynb +0 -578
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/06 - Linking and Interactions-checkpoint.ipynb +0 -1196
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/07 - Bar and Categorical Data Plots-checkpoint.ipynb +0 -1681
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/08 - Graph and Network Plots-checkpoint.ipynb +0 -680
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/09 - Geographic Plots-checkpoint.ipynb +0 -693
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/10 - Exporting and Embedding-checkpoint.ipynb +0 -751
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/11 - Running Bokeh Applications-checkpoint.ipynb +0 -770
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/bokeh_tut_00_introduction_and_setup-checkpoint.ipynb +0 -666
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/j1_bokeh_01_basic_plotting-checkpoint.ipynb +0 -1365
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/j1_bokeh_02_styling_and_theming-checkpoint.ipynb +0 -1405
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/j1_bokeh_03_data_sources_and_transformations-checkpoint.ipynb +0 -856
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/j1_bokeh_04_adding_annotations-checkpoint.ipynb +0 -1167
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/j1_bokeh_05_presentation_layouts-checkpoint.ipynb +0 -601
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/j1_bokeh_06_linking_and_interactions-checkpoint.ipynb +0 -1356
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/j1_bokeh_07_bar_and_categorical_data_plots-checkpoint.ipynb +0 -1742
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/j1_bokeh_08_graph_and_network_plots-checkpoint.ipynb +0 -625
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/j1_bokeh_09_geographic_plots-checkpoint.ipynb +0 -685
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/j1_bokeh_10_exporting_and_embedding-checkpoint.ipynb +0 -726
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/j1_bokeh_10_exporting_and_embedding-checkpoint.org +0 -726
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/j1_bokeh_10_exporting_and_embedding.new-checkpoint.ipynb +0 -560
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/j1_bokeh_11_running_bokeh_applications-checkpoint.ipynb +0 -716
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/j1_bokeh_01_basic_plotting.ipynb +0 -1365
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/j1_bokeh_02_styling_and_theming.ipynb +0 -1405
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/j1_bokeh_03_data_sources_and_transformations.ipynb +0 -856
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/j1_bokeh_04_adding_annotations.ipynb +0 -1167
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/j1_bokeh_05_presentation_layouts.ipynb +0 -601
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/j1_bokeh_06_linking_and_interactions.ipynb +0 -1356
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/j1_bokeh_07_bar_and_categorical_data_plots.ipynb +0 -1742
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/j1_bokeh_08_graph_and_network_plots.ipynb +0 -625
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/j1_bokeh_09_geographic_plots.ipynb +0 -685
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bqplot/.ipynb_checkpoints/j1_mathplot_vs_bqplot-checkpoint.ipynb +0 -336
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bqplot/advanced/Feature_Vector_Distribution-Iris-Digits.ipynb +0 -433
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bqplot/j1_bgplot_line_plot.ipynb +0 -244
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bqplot/j1_circular_times_table-short.ipynb +0 -12170
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bqplot/j1_mathplot_vs_bqplot.ipynb +0 -336
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/.ipynb_checkpoints/Index-checkpoint.ipynb +0 -163
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/.ipynb_checkpoints/Tutorials-checkpoint.ipynb +0 -51
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Advanced Plotting/Advanced Plotting.ipynb +0 -289
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Advanced Plotting/Animations.ipynb +0 -266
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Advanced Plotting/Axis Properties.ipynb +0 -396
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Advanced Plotting/Plotting Dates.ipynb +0 -318
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Applications/Equity Index Performance/Time Series.ipynb +0 -158
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Applications/Equity Index Performance/spx_prices.csv +0 -6799
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Applications/Feature_Vector_Distribution-Iris-Digits.ipynb +0 -470
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Applications/Index.ipynb +0 -49
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Applications/Logs Analytics/Logs Dashboard.ipynb +0 -378
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Applications/Mobile Patent Suits.ipynb +0 -123
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Applications/Neural Network.ipynb +0 -177
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Applications/Outlier Detection.ipynb +0 -311
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Applications/Wealth Of Nations/Bubble Chart.ipynb +0 -255
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Applications/Wealth Of Nations/Choropleth.ipynb +0 -275
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Applications/Wealth Of Nations/nations.json +0 -1
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Applications/Wealth Of Nations/world_map_codes.csv +0 -234
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Basic Plotting/.ipynb_checkpoints/Basic Plotting-checkpoint.ipynb +0 -186
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Basic Plotting/.ipynb_checkpoints/Pyplot-checkpoint.ipynb +0 -794
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Basic Plotting/.ipynb_checkpoints/Untitled-checkpoint.ipynb +0 -323
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Basic Plotting/Basic Plotting.ipynb +0 -261
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Basic Plotting/Pyplot.ipynb +0 -1489
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Index.ipynb +0 -163
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Interactions/Interaction Layer.ipynb +0 -966
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Interactions/Mark Interactions.ipynb +0 -476
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Interactions/Selectors.ipynb +0 -427
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Introduction.ipynb +0 -528
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/Bars.ipynb +0 -480
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/Bins.ipynb +0 -217
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/Boxplot.ipynb +0 -253
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/Candles.ipynb +0 -225
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/FlexLine.ipynb +0 -123
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/Graph.ipynb +0 -357
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/GridHeatMap.ipynb +0 -422
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/HeatMap.ipynb +0 -157
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/Hist.ipynb +0 -176
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/Image.ipynb +0 -195
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/Label.ipynb +0 -189
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/Lines.ipynb +0 -565
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/Map.ipynb +0 -182
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/Market Map.ipynb +0 -315
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/Pie.ipynb +0 -465
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/Scatter.ipynb +0 -835
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Pyplot/Bars.ipynb +0 -362
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Pyplot/Bins.ipynb +0 -252
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Pyplot/Boxplot.ipynb +0 -273
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Pyplot/Candles.ipynb +0 -242
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Pyplot/GridHeatMap.ipynb +0 -417
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Pyplot/HeatMap.ipynb +0 -155
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Pyplot/Hist.ipynb +0 -238
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Pyplot/Image.ipynb +0 -152
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Pyplot/Label.ipynb +0 -206
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Pyplot/Lines.ipynb +0 -474
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Pyplot/Map.ipynb +0 -181
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Pyplot/Pie.ipynb +0 -310
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Pyplot/Scatter.ipynb +0 -702
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Scales/Color Scales.ipynb +0 -495
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Tutorials/.ipynb_checkpoints/Feature_Vector_Distribution-Iris-Digits-checkpoint.ipynb +0 -433
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Tutorials/.ipynb_checkpoints/Linking Plots With Widgets-checkpoint.ipynb +0 -326
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Tutorials/.ipynb_checkpoints/Updating Plots-Copy1-checkpoint.ipynb +0 -177
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Tutorials/.ipynb_checkpoints/Updating Plots-checkpoint.ipynb +0 -177
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Tutorials/Brush Interval Selector.ipynb +0 -154
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Tutorials/Fast Interval Selector.ipynb +0 -152
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Tutorials/Gaussian Density Widget.ipynb +0 -128
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Tutorials/Gaussian Density.ipynb +0 -113
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Tutorials/Linking Plots With Widgets.ipynb +0 -326
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Tutorials/Object Model.ipynb +0 -179
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Tutorials/Pyplot.ipynb +0 -174
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Tutorials/Updating Plots.ipynb +0 -177
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Tutorials.ipynb +0 -51
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/data_files/country_codes.csv +0 -213
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/data_files/gdp_per_capita.csv +0 -56
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/data_files/state_codes.csv +0 -52
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/data_files/trees.jpg +0 -0
- data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/.ipynb_checkpoints/nbi_docs_examples_central_limit_theorem-checkpoint.ipynb +0 -247
- data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/.ipynb_checkpoints/nbi_docs_examples_variability_of_the_sample_mean-checkpoint.ipynb +0 -323
- data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/.ipynb_checkpoints/nbi_docs_recipes_graphing-checkpoint.ipynb +0 -387
- data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/.ipynb_checkpoints/nbi_docs_recipes_interactive_questions-checkpoint.ipynb +0 -185
- data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/.ipynb_checkpoints/nbi_docs_recipes_layout-checkpoint.ipynb +0 -384
- data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/.ipynb_checkpoints/nbi_docs_tutorial_interact-checkpoint.ipynb +0 -254
- data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/.ipynb_checkpoints/nbi_docs_tutorial_monty_hall-checkpoint.ipynb +0 -732
- data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/nbi_docs_examples_central_limit_theorem.ipynb +0 -247
- data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/nbi_docs_examples_correlation.ipynb +0 -651
- data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/nbi_docs_examples_empirical_distributions.ipynb +0 -773
- data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/nbi_docs_examples_linear_regression.ipynb +0 -111
- data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/nbi_docs_examples_probability_distribution_plots.ipynb +0 -199
- data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/nbi_docs_examples_sampling_from_a_population.ipynb +0 -421
- data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/nbi_docs_examples_variability_of_the_sample_mean.ipynb +0 -323
- data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/nbi_docs_recipes_graphing.ipynb +0 -387
- data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/nbi_docs_recipes_interactive_questions.ipynb +0 -185
- data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/nbi_docs_recipes_layout.ipynb +0 -384
- data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/nbi_docs_tutorial_interact.ipynb +0 -254
- data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/nbi_docs_tutorial_monty_hall.ipynb +0 -732
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Advanced Plotting.html +0 -373
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Animations.html +0 -361
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Axis Properties.html +0 -569
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Bars.html +0 -487
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Basic Plotting.html +0 -341
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Bins.html +0 -259
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Boxplot.html +0 -277
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Brush Interval Selector.html +0 -182
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Bubble Chart.html +0 -299
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Candles.html +0 -252
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Choropleth.html +0 -318
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Color Scales.html +0 -514
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Fast Interval Selector.html +0 -182
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Feature_Vector_Distribution-Iris-Digits.html +0 -479
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/FlexLine.html +0 -128
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Gaussian Density Widget.html +0 -152
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Gaussian Density.html +0 -137
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Graph.html +0 -484
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/GridHeatMap.html +0 -483
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/HeatMap.html +0 -170
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Hist.html +0 -349
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Image.html +0 -177
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Index.html +0 -29
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Interaction Layer.html +0 -1372
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Introduction.html +0 -749
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Label.html +0 -268
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Lines.html +0 -704
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Linking Plots With Widgets.html +0 -389
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Logs Dashboard.html +0 -455
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Map.html +0 -229
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Mark Interactions.html +0 -613
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Market Map.html +0 -413
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Mobile Patent Suits.html +0 -131
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Neural Network.html +0 -190
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Object Model.html +0 -193
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Outlier Detection.html +0 -363
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Pie.html +0 -367
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Plotting Dates.html +0 -337
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Pyplot.html +0 -196
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Scatter.html +0 -948
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Selectors.html +0 -489
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Time Series.html +0 -173
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Tutorials.html +0 -40
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Updating Plots.html +0 -228
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_altair_interactive.html +0 -2216
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_altair_non_interactive.html +0 -1170
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_bgplot_line_plot.html +0 -318
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_bokeh_01_basic_plotting.html +0 -1479
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_bokeh_02_styling_and_theming.html +0 -1524
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_bokeh_03_data_sources_and_transformations.html +0 -983
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_bokeh_04_adding_annotations.html +0 -1280
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_bokeh_05_presentation_layouts.html +0 -660
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_bokeh_06_linking_and_interactions.html +0 -1563
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_bokeh_07_bar_and_categorical_data_plots.html +0 -1888
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_bokeh_08_graph_and_network_plots.html +0 -689
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_bokeh_09_geographic_plots.html +0 -767
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_circular_times_table-short.html +0 -475
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_circular_times_table.html +0 -747
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_climate_change_forecast.html +0 -1250
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_docs_example_dynamic.html +0 -186
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_interactive_widgets.html +0 -512
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_mathplot_vs_bqplot.html +0 -407
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_nbi_widgets.html +0 -629
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_nbi_widgets_bar_chart.html +0 -95
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_nbi_widgets_hist_chart.html +0 -93
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_nbi_widgets_line_chart.html +0 -96
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_nbi_widgets_question_multiple_choice.html +0 -70
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_nbi_widgets_question_short_answer.html +0 -156
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_nbi_widgets_scatter_chart.html +0 -95
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_nbi_widgets_scatter_drag_chart.html +0 -93
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_odes_in_python.html +0 -955
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/nbi_docs_examples_central_limit_theorem.html +0 -290
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/nbi_docs_examples_correlation.html +0 -818
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/nbi_docs_examples_empirical_distributions.html +0 -351
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/nbi_docs_examples_linear_regression.html +0 -106
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/nbi_docs_examples_probability_distribution_plots.html +0 -228
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/nbi_docs_examples_sampling_from_a_population.html +0 -518
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/nbi_docs_examples_variability_of_the_sample_mean.html +0 -372
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/nbi_docs_recipes_graphing.html +0 -473
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/nbi_docs_recipes_interactive_questions.html +0 -242
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/nbi_docs_recipes_layout.html +0 -496
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/nbi_docs_tutorial_interact.html +0 -329
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/nbi_docs_tutorial_monty_hall.html +0 -866
- data/lib/starter_web/pages/public/_jupyter/where_to_go.adoc +0 -270
- data/lib/starter_web/pages/public/learn/_roundtrip/100_present_images.adoc +0 -313
- data/lib/starter_web/pages/public/learn/_roundtrip/100_present_videos.adoc +0 -281
- data/lib/starter_web/pages/public/learn/_roundtrip/200_typography.adoc +0 -253
- data/lib/starter_web/pages/public/learn/_roundtrip/300_icon_fonts.adoc +0 -579
- data/lib/starter_web/pages/public/learn/_roundtrip/400_asciidoc_extensions.adoc +0 -718
- data/lib/starter_web/pages/public/learn/_roundtrip/410_bs_modals_extentions.adoc +0 -91
- data/lib/starter_web/pages/public/learn/_roundtrip/420_responsive_tables_extensions.adoc +0 -420
- data/lib/starter_web/pages/public/learn/_roundtrip/500_themes.adoc +0 -250
- data/lib/starter_web/pages/public/learn/_roundtrip/600_quicksearch.adoc +0 -425
- data/lib/starter_web/pages/public/learn/_roundtrip/_includes/attributes.asciidoc +0 -118
- data/lib/starter_web/pages/public/learn/_roundtrip/_includes/documents/100_gistblock.asciidoc +0 -28
- data/lib/starter_web/pages/public/learn/_roundtrip/_includes/documents/410_bottom_info.asciidoc +0 -14
- data/lib/starter_web/pages/public/learn/_roundtrip/_includes/documents/410_bottom_left_warning.asciidoc +0 -11
- data/lib/starter_web/pages/public/learn/_roundtrip/_includes/documents/410_bottom_right_danger.asciidoc +0 -11
- data/lib/starter_web/pages/public/learn/_roundtrip/_includes/documents/410_central_success.asciidoc +0 -11
- data/lib/starter_web/pages/public/learn/_roundtrip/_includes/documents/410_full_height_left_info.asciidoc +0 -11
- data/lib/starter_web/pages/public/learn/_roundtrip/_includes/documents/410_full_height_right_success.asciidoc +0 -11
- data/lib/starter_web/pages/public/learn/_roundtrip/_includes/documents/410_table_bs_modal_examples.asciidoc +0 -47
- data/lib/starter_web/pages/public/learn/_roundtrip/_includes/documents/410_top_info.asciidoc +0 -11
- data/lib/starter_web/pages/public/learn/_roundtrip/_includes/documents/410_top_left_info.asciidoc +0 -11
- data/lib/starter_web/pages/public/learn/_roundtrip/_includes/documents/410_top_right_success.asciidoc +0 -11
- data/lib/starter_web/pages/public/learn/_roundtrip/_includes/documents/419_advanced_modals_demo.asciidoc +0 -337
- data/lib/starter_web/pages/public/learn/_roundtrip/_includes/documents/tables/bs_modal_examples.asciidoc +0 -47
- data/lib/starter_web/pages/public/learn/_roundtrip/_includes/google-ad.js +0 -130
@@ -1,1681 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"cells": [
|
3
|
-
{
|
4
|
-
"cell_type": "markdown",
|
5
|
-
"metadata": {},
|
6
|
-
"source": [
|
7
|
-
"<table style=\"float:left; border:none\">\n",
|
8
|
-
" <tr style=\"border:none\">\n",
|
9
|
-
" <td style=\"border:none\">\n",
|
10
|
-
" <a href=\"https://bokeh.org/\"> \n",
|
11
|
-
" <img \n",
|
12
|
-
" src=\"assets/bokeh-transparent.png\" \n",
|
13
|
-
" style=\"width:50px\"\n",
|
14
|
-
" >\n",
|
15
|
-
" </a> \n",
|
16
|
-
" </td>\n",
|
17
|
-
" <td style=\"border:none\">\n",
|
18
|
-
" <h1>Bokeh Tutorial</h1>\n",
|
19
|
-
" </td>\n",
|
20
|
-
" </tr>\n",
|
21
|
-
"</table>\n",
|
22
|
-
"\n",
|
23
|
-
"<div style=\"float:right;\"><h2>07. Bar and Categorical Data Plots</h2></div>"
|
24
|
-
]
|
25
|
-
},
|
26
|
-
{
|
27
|
-
"cell_type": "code",
|
28
|
-
"execution_count": 1,
|
29
|
-
"metadata": {},
|
30
|
-
"outputs": [
|
31
|
-
{
|
32
|
-
"data": {
|
33
|
-
"text/html": [
|
34
|
-
"<div class=\"bk-root\">\n",
|
35
|
-
" <a href=\"https://bokeh.org\" target=\"_blank\" class=\"bk-logo bk-logo-small bk-logo-notebook\"></a>\n",
|
36
|
-
" <span id=\"1002\">Loading BokehJS ...</span>\n",
|
37
|
-
" </div>\n"
|
38
|
-
]
|
39
|
-
},
|
40
|
-
"metadata": {},
|
41
|
-
"output_type": "display_data"
|
42
|
-
},
|
43
|
-
{
|
44
|
-
"data": {
|
45
|
-
"application/javascript": [
|
46
|
-
"(function(root) {\n",
|
47
|
-
" function now() {\n",
|
48
|
-
" return new Date();\n",
|
49
|
-
" }\n",
|
50
|
-
"\n",
|
51
|
-
" const force = true;\n",
|
52
|
-
"\n",
|
53
|
-
" if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n",
|
54
|
-
" root._bokeh_onload_callbacks = [];\n",
|
55
|
-
" root._bokeh_is_loading = undefined;\n",
|
56
|
-
" }\n",
|
57
|
-
"\n",
|
58
|
-
"const JS_MIME_TYPE = 'application/javascript';\n",
|
59
|
-
" const HTML_MIME_TYPE = 'text/html';\n",
|
60
|
-
" const EXEC_MIME_TYPE = 'application/vnd.bokehjs_exec.v0+json';\n",
|
61
|
-
" const CLASS_NAME = 'output_bokeh rendered_html';\n",
|
62
|
-
"\n",
|
63
|
-
" /**\n",
|
64
|
-
" * Render data to the DOM node\n",
|
65
|
-
" */\n",
|
66
|
-
" function render(props, node) {\n",
|
67
|
-
" const script = document.createElement(\"script\");\n",
|
68
|
-
" node.appendChild(script);\n",
|
69
|
-
" }\n",
|
70
|
-
"\n",
|
71
|
-
" /**\n",
|
72
|
-
" * Handle when an output is cleared or removed\n",
|
73
|
-
" */\n",
|
74
|
-
" function handleClearOutput(event, handle) {\n",
|
75
|
-
" const cell = handle.cell;\n",
|
76
|
-
"\n",
|
77
|
-
" const id = cell.output_area._bokeh_element_id;\n",
|
78
|
-
" const server_id = cell.output_area._bokeh_server_id;\n",
|
79
|
-
" // Clean up Bokeh references\n",
|
80
|
-
" if (id != null && id in Bokeh.index) {\n",
|
81
|
-
" Bokeh.index[id].model.document.clear();\n",
|
82
|
-
" delete Bokeh.index[id];\n",
|
83
|
-
" }\n",
|
84
|
-
"\n",
|
85
|
-
" if (server_id !== undefined) {\n",
|
86
|
-
" // Clean up Bokeh references\n",
|
87
|
-
" const cmd_clean = \"from bokeh.io.state import curstate; print(curstate().uuid_to_server['\" + server_id + \"'].get_sessions()[0].document.roots[0]._id)\";\n",
|
88
|
-
" cell.notebook.kernel.execute(cmd_clean, {\n",
|
89
|
-
" iopub: {\n",
|
90
|
-
" output: function(msg) {\n",
|
91
|
-
" const id = msg.content.text.trim();\n",
|
92
|
-
" if (id in Bokeh.index) {\n",
|
93
|
-
" Bokeh.index[id].model.document.clear();\n",
|
94
|
-
" delete Bokeh.index[id];\n",
|
95
|
-
" }\n",
|
96
|
-
" }\n",
|
97
|
-
" }\n",
|
98
|
-
" });\n",
|
99
|
-
" // Destroy server and session\n",
|
100
|
-
" const cmd_destroy = \"import bokeh.io.notebook as ion; ion.destroy_server('\" + server_id + \"')\";\n",
|
101
|
-
" cell.notebook.kernel.execute(cmd_destroy);\n",
|
102
|
-
" }\n",
|
103
|
-
" }\n",
|
104
|
-
"\n",
|
105
|
-
" /**\n",
|
106
|
-
" * Handle when a new output is added\n",
|
107
|
-
" */\n",
|
108
|
-
" function handleAddOutput(event, handle) {\n",
|
109
|
-
" const output_area = handle.output_area;\n",
|
110
|
-
" const output = handle.output;\n",
|
111
|
-
"\n",
|
112
|
-
" // limit handleAddOutput to display_data with EXEC_MIME_TYPE content only\n",
|
113
|
-
" if ((output.output_type != \"display_data\") || (!Object.prototype.hasOwnProperty.call(output.data, EXEC_MIME_TYPE))) {\n",
|
114
|
-
" return\n",
|
115
|
-
" }\n",
|
116
|
-
"\n",
|
117
|
-
" const toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n",
|
118
|
-
"\n",
|
119
|
-
" if (output.metadata[EXEC_MIME_TYPE][\"id\"] !== undefined) {\n",
|
120
|
-
" toinsert[toinsert.length - 1].firstChild.textContent = output.data[JS_MIME_TYPE];\n",
|
121
|
-
" // store reference to embed id on output_area\n",
|
122
|
-
" output_area._bokeh_element_id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n",
|
123
|
-
" }\n",
|
124
|
-
" if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n",
|
125
|
-
" const bk_div = document.createElement(\"div\");\n",
|
126
|
-
" bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n",
|
127
|
-
" const script_attrs = bk_div.children[0].attributes;\n",
|
128
|
-
" for (let i = 0; i < script_attrs.length; i++) {\n",
|
129
|
-
" toinsert[toinsert.length - 1].firstChild.setAttribute(script_attrs[i].name, script_attrs[i].value);\n",
|
130
|
-
" toinsert[toinsert.length - 1].firstChild.textContent = bk_div.children[0].textContent\n",
|
131
|
-
" }\n",
|
132
|
-
" // store reference to server id on output_area\n",
|
133
|
-
" output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n",
|
134
|
-
" }\n",
|
135
|
-
" }\n",
|
136
|
-
"\n",
|
137
|
-
" function register_renderer(events, OutputArea) {\n",
|
138
|
-
"\n",
|
139
|
-
" function append_mime(data, metadata, element) {\n",
|
140
|
-
" // create a DOM node to render to\n",
|
141
|
-
" const toinsert = this.create_output_subarea(\n",
|
142
|
-
" metadata,\n",
|
143
|
-
" CLASS_NAME,\n",
|
144
|
-
" EXEC_MIME_TYPE\n",
|
145
|
-
" );\n",
|
146
|
-
" this.keyboard_manager.register_events(toinsert);\n",
|
147
|
-
" // Render to node\n",
|
148
|
-
" const props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n",
|
149
|
-
" render(props, toinsert[toinsert.length - 1]);\n",
|
150
|
-
" element.append(toinsert);\n",
|
151
|
-
" return toinsert\n",
|
152
|
-
" }\n",
|
153
|
-
"\n",
|
154
|
-
" /* Handle when an output is cleared or removed */\n",
|
155
|
-
" events.on('clear_output.CodeCell', handleClearOutput);\n",
|
156
|
-
" events.on('delete.Cell', handleClearOutput);\n",
|
157
|
-
"\n",
|
158
|
-
" /* Handle when a new output is added */\n",
|
159
|
-
" events.on('output_added.OutputArea', handleAddOutput);\n",
|
160
|
-
"\n",
|
161
|
-
" /**\n",
|
162
|
-
" * Register the mime type and append_mime function with output_area\n",
|
163
|
-
" */\n",
|
164
|
-
" OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n",
|
165
|
-
" /* Is output safe? */\n",
|
166
|
-
" safe: true,\n",
|
167
|
-
" /* Index of renderer in `output_area.display_order` */\n",
|
168
|
-
" index: 0\n",
|
169
|
-
" });\n",
|
170
|
-
" }\n",
|
171
|
-
"\n",
|
172
|
-
" // register the mime type if in Jupyter Notebook environment and previously unregistered\n",
|
173
|
-
" if (root.Jupyter !== undefined) {\n",
|
174
|
-
" const events = require('base/js/events');\n",
|
175
|
-
" const OutputArea = require('notebook/js/outputarea').OutputArea;\n",
|
176
|
-
"\n",
|
177
|
-
" if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n",
|
178
|
-
" register_renderer(events, OutputArea);\n",
|
179
|
-
" }\n",
|
180
|
-
" }\n",
|
181
|
-
" if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n",
|
182
|
-
" root._bokeh_timeout = Date.now() + 5000;\n",
|
183
|
-
" root._bokeh_failed_load = false;\n",
|
184
|
-
" }\n",
|
185
|
-
"\n",
|
186
|
-
" const NB_LOAD_WARNING = {'data': {'text/html':\n",
|
187
|
-
" \"<div style='background-color: #fdd'>\\n\"+\n",
|
188
|
-
" \"<p>\\n\"+\n",
|
189
|
-
" \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n",
|
190
|
-
" \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n",
|
191
|
-
" \"</p>\\n\"+\n",
|
192
|
-
" \"<ul>\\n\"+\n",
|
193
|
-
" \"<li>re-rerun `output_notebook()` to attempt to load from CDN again, or</li>\\n\"+\n",
|
194
|
-
" \"<li>use INLINE resources instead, as so:</li>\\n\"+\n",
|
195
|
-
" \"</ul>\\n\"+\n",
|
196
|
-
" \"<code>\\n\"+\n",
|
197
|
-
" \"from bokeh.resources import INLINE\\n\"+\n",
|
198
|
-
" \"output_notebook(resources=INLINE)\\n\"+\n",
|
199
|
-
" \"</code>\\n\"+\n",
|
200
|
-
" \"</div>\"}};\n",
|
201
|
-
"\n",
|
202
|
-
" function display_loaded() {\n",
|
203
|
-
" const el = document.getElementById(\"1002\");\n",
|
204
|
-
" if (el != null) {\n",
|
205
|
-
" el.textContent = \"BokehJS is loading...\";\n",
|
206
|
-
" }\n",
|
207
|
-
" if (root.Bokeh !== undefined) {\n",
|
208
|
-
" if (el != null) {\n",
|
209
|
-
" el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n",
|
210
|
-
" }\n",
|
211
|
-
" } else if (Date.now() < root._bokeh_timeout) {\n",
|
212
|
-
" setTimeout(display_loaded, 100)\n",
|
213
|
-
" }\n",
|
214
|
-
" }\n",
|
215
|
-
"\n",
|
216
|
-
" function run_callbacks() {\n",
|
217
|
-
" try {\n",
|
218
|
-
" root._bokeh_onload_callbacks.forEach(function(callback) {\n",
|
219
|
-
" if (callback != null)\n",
|
220
|
-
" callback();\n",
|
221
|
-
" });\n",
|
222
|
-
" } finally {\n",
|
223
|
-
" delete root._bokeh_onload_callbacks\n",
|
224
|
-
" }\n",
|
225
|
-
" console.debug(\"Bokeh: all callbacks have finished\");\n",
|
226
|
-
" }\n",
|
227
|
-
"\n",
|
228
|
-
" function load_libs(css_urls, js_urls, callback) {\n",
|
229
|
-
" if (css_urls == null) css_urls = [];\n",
|
230
|
-
" if (js_urls == null) js_urls = [];\n",
|
231
|
-
"\n",
|
232
|
-
" root._bokeh_onload_callbacks.push(callback);\n",
|
233
|
-
" if (root._bokeh_is_loading > 0) {\n",
|
234
|
-
" console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n",
|
235
|
-
" return null;\n",
|
236
|
-
" }\n",
|
237
|
-
" if (js_urls == null || js_urls.length === 0) {\n",
|
238
|
-
" run_callbacks();\n",
|
239
|
-
" return null;\n",
|
240
|
-
" }\n",
|
241
|
-
" console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n",
|
242
|
-
" root._bokeh_is_loading = css_urls.length + js_urls.length;\n",
|
243
|
-
"\n",
|
244
|
-
" function on_load() {\n",
|
245
|
-
" root._bokeh_is_loading--;\n",
|
246
|
-
" if (root._bokeh_is_loading === 0) {\n",
|
247
|
-
" console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n",
|
248
|
-
" run_callbacks()\n",
|
249
|
-
" }\n",
|
250
|
-
" }\n",
|
251
|
-
"\n",
|
252
|
-
" function on_error(url) {\n",
|
253
|
-
" console.error(\"failed to load \" + url);\n",
|
254
|
-
" }\n",
|
255
|
-
"\n",
|
256
|
-
" for (let i = 0; i < css_urls.length; i++) {\n",
|
257
|
-
" const url = css_urls[i];\n",
|
258
|
-
" const element = document.createElement(\"link\");\n",
|
259
|
-
" element.onload = on_load;\n",
|
260
|
-
" element.onerror = on_error.bind(null, url);\n",
|
261
|
-
" element.rel = \"stylesheet\";\n",
|
262
|
-
" element.type = \"text/css\";\n",
|
263
|
-
" element.href = url;\n",
|
264
|
-
" console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n",
|
265
|
-
" document.body.appendChild(element);\n",
|
266
|
-
" }\n",
|
267
|
-
"\n",
|
268
|
-
" for (let i = 0; i < js_urls.length; i++) {\n",
|
269
|
-
" const url = js_urls[i];\n",
|
270
|
-
" const element = document.createElement('script');\n",
|
271
|
-
" element.onload = on_load;\n",
|
272
|
-
" element.onerror = on_error.bind(null, url);\n",
|
273
|
-
" element.async = false;\n",
|
274
|
-
" element.src = url;\n",
|
275
|
-
" console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n",
|
276
|
-
" document.head.appendChild(element);\n",
|
277
|
-
" }\n",
|
278
|
-
" };\n",
|
279
|
-
"\n",
|
280
|
-
" function inject_raw_css(css) {\n",
|
281
|
-
" const element = document.createElement(\"style\");\n",
|
282
|
-
" element.appendChild(document.createTextNode(css));\n",
|
283
|
-
" document.body.appendChild(element);\n",
|
284
|
-
" }\n",
|
285
|
-
"\n",
|
286
|
-
" 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",
|
287
|
-
" const css_urls = [];\n",
|
288
|
-
"\n",
|
289
|
-
" const inline_js = [ function(Bokeh) {\n",
|
290
|
-
" Bokeh.set_log_level(\"info\");\n",
|
291
|
-
" },\n",
|
292
|
-
"function(Bokeh) {\n",
|
293
|
-
" }\n",
|
294
|
-
" ];\n",
|
295
|
-
"\n",
|
296
|
-
" function run_inline_js() {\n",
|
297
|
-
" if (root.Bokeh !== undefined || force === true) {\n",
|
298
|
-
" for (let i = 0; i < inline_js.length; i++) {\n",
|
299
|
-
" inline_js[i].call(root, root.Bokeh);\n",
|
300
|
-
" }\n",
|
301
|
-
"if (force === true) {\n",
|
302
|
-
" display_loaded();\n",
|
303
|
-
" }} else if (Date.now() < root._bokeh_timeout) {\n",
|
304
|
-
" setTimeout(run_inline_js, 100);\n",
|
305
|
-
" } else if (!root._bokeh_failed_load) {\n",
|
306
|
-
" console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n",
|
307
|
-
" root._bokeh_failed_load = true;\n",
|
308
|
-
" } else if (force !== true) {\n",
|
309
|
-
" const cell = $(document.getElementById(\"1002\")).parents('.cell').data().cell;\n",
|
310
|
-
" cell.output_area.append_execute_result(NB_LOAD_WARNING)\n",
|
311
|
-
" }\n",
|
312
|
-
" }\n",
|
313
|
-
"\n",
|
314
|
-
" if (root._bokeh_is_loading === 0) {\n",
|
315
|
-
" console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n",
|
316
|
-
" run_inline_js();\n",
|
317
|
-
" } else {\n",
|
318
|
-
" load_libs(css_urls, js_urls, function() {\n",
|
319
|
-
" console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n",
|
320
|
-
" run_inline_js();\n",
|
321
|
-
" });\n",
|
322
|
-
" }\n",
|
323
|
-
"}(window));"
|
324
|
-
],
|
325
|
-
"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));"
|
326
|
-
},
|
327
|
-
"metadata": {},
|
328
|
-
"output_type": "display_data"
|
329
|
-
}
|
330
|
-
],
|
331
|
-
"source": [
|
332
|
-
"from bokeh.io import show, output_notebook\n",
|
333
|
-
"from bokeh.plotting import figure\n",
|
334
|
-
"\n",
|
335
|
-
"output_notebook()"
|
336
|
-
]
|
337
|
-
},
|
338
|
-
{
|
339
|
-
"cell_type": "markdown",
|
340
|
-
"metadata": {},
|
341
|
-
"source": [
|
342
|
-
"## Basic Bar Charts\n",
|
343
|
-
"\n",
|
344
|
-
"Bar charts are a common and important type of plot. Bokeh makes it simple to create all sorts of stacked or nested bar charts, and to deal with categorical data in general."
|
345
|
-
]
|
346
|
-
},
|
347
|
-
{
|
348
|
-
"cell_type": "markdown",
|
349
|
-
"metadata": {},
|
350
|
-
"source": [
|
351
|
-
"The example below shows a simple bar chart created using the `vbar` method for drawing vertical bars. (There is a corresponding `hbar` for horizontal bars.) We also set a few plot properties to make the chart look nicer, see chapter [Styling and Theming](02 - Styling and Theming.ipynb) for information about visual properties."
|
352
|
-
]
|
353
|
-
},
|
354
|
-
{
|
355
|
-
"cell_type": "code",
|
356
|
-
"execution_count": 2,
|
357
|
-
"metadata": {},
|
358
|
-
"outputs": [
|
359
|
-
{
|
360
|
-
"data": {
|
361
|
-
"text/html": [
|
362
|
-
"\n",
|
363
|
-
" <div class=\"bk-root\" id=\"61868680-7e56-48f2-beb9-009b240f1a1a\" data-root-id=\"1003\"></div>\n"
|
364
|
-
]
|
365
|
-
},
|
366
|
-
"metadata": {},
|
367
|
-
"output_type": "display_data"
|
368
|
-
},
|
369
|
-
{
|
370
|
-
"data": {
|
371
|
-
"application/javascript": [
|
372
|
-
"(function(root) {\n",
|
373
|
-
" function embed_document(root) {\n",
|
374
|
-
" const docs_json = {\"7cab2b88-4e21-453e-93e8-1c4d7882896b\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1014\"}],\"center\":[{\"id\":\"1016\"},{\"id\":\"1020\"}],\"height\":250,\"left\":[{\"id\":\"1017\"}],\"renderers\":[{\"id\":\"1039\"}],\"title\":{\"id\":\"1004\"},\"toolbar\":{\"id\":\"1028\"},\"x_range\":{\"id\":\"1006\"},\"x_scale\":{\"id\":\"1010\"},\"y_range\":{\"id\":\"1008\"},\"y_scale\":{\"id\":\"1012\"}},\"id\":\"1003\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"1018\",\"type\":\"BasicTicker\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1043\"},\"group\":null,\"major_label_policy\":{\"id\":\"1044\"},\"ticker\":{\"id\":\"1018\"}},\"id\":\"1017\",\"type\":\"LinearAxis\"},{\"attributes\":{\"fill_color\":{\"value\":\"#1f77b4\"},\"line_color\":{\"value\":\"#1f77b4\"},\"top\":{\"field\":\"top\"},\"width\":{\"value\":0.9},\"x\":{\"field\":\"x\"}},\"id\":\"1036\",\"type\":\"VBar\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#1f77b4\"},\"hatch_alpha\":{\"value\":0.1},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"top\":{\"field\":\"top\"},\"width\":{\"value\":0.9},\"x\":{\"field\":\"x\"}},\"id\":\"1037\",\"type\":\"VBar\"},{\"attributes\":{},\"id\":\"1010\",\"type\":\"CategoricalScale\"},{\"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\":\"1027\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"axis\":{\"id\":\"1017\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1020\",\"type\":\"Grid\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"#1f77b4\"},\"hatch_alpha\":{\"value\":0.2},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"#1f77b4\"},\"top\":{\"field\":\"top\"},\"width\":{\"value\":0.9},\"x\":{\"field\":\"x\"}},\"id\":\"1038\",\"type\":\"VBar\"},{\"attributes\":{\"factors\":[\"Apples\",\"Pears\",\"Nectarines\",\"Plums\",\"Grapes\",\"Strawberries\"]},\"id\":\"1006\",\"type\":\"FactorRange\"},{\"attributes\":{\"data\":{\"top\":[5,3,4,2,4,6],\"x\":[\"Apples\",\"Pears\",\"Nectarines\",\"Plums\",\"Grapes\",\"Strawberries\"]},\"selected\":{\"id\":\"1049\"},\"selection_policy\":{\"id\":\"1048\"}},\"id\":\"1035\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1021\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"1025\",\"type\":\"ResetTool\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"text\":\"Fruit Counts\"},\"id\":\"1004\",\"type\":\"Title\"},{\"attributes\":{\"source\":{\"id\":\"1035\"}},\"id\":\"1040\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1022\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"overlay\":{\"id\":\"1027\"}},\"id\":\"1023\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"start\":0},\"id\":\"1008\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1024\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"1049\",\"type\":\"Selection\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1035\"},\"glyph\":{\"id\":\"1036\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1038\"},\"nonselection_glyph\":{\"id\":\"1037\"},\"view\":{\"id\":\"1040\"}},\"id\":\"1039\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"axis\":{\"id\":\"1014\"},\"coordinates\":null,\"grid_line_color\":null,\"group\":null,\"ticker\":null},\"id\":\"1016\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1046\",\"type\":\"CategoricalTickFormatter\"},{\"attributes\":{},\"id\":\"1026\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"1015\",\"type\":\"CategoricalTicker\"},{\"attributes\":{},\"id\":\"1012\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1043\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1047\",\"type\":\"AllLabels\"},{\"attributes\":{\"tools\":[{\"id\":\"1021\"},{\"id\":\"1022\"},{\"id\":\"1023\"},{\"id\":\"1024\"},{\"id\":\"1025\"},{\"id\":\"1026\"}]},\"id\":\"1028\",\"type\":\"Toolbar\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1046\"},\"group\":null,\"major_label_policy\":{\"id\":\"1047\"},\"ticker\":{\"id\":\"1015\"}},\"id\":\"1014\",\"type\":\"CategoricalAxis\"},{\"attributes\":{},\"id\":\"1048\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1044\",\"type\":\"AllLabels\"}],\"root_ids\":[\"1003\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.3\"}};\n",
|
375
|
-
" const render_items = [{\"docid\":\"7cab2b88-4e21-453e-93e8-1c4d7882896b\",\"root_ids\":[\"1003\"],\"roots\":{\"1003\":\"61868680-7e56-48f2-beb9-009b240f1a1a\"}}];\n",
|
376
|
-
" root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
|
377
|
-
" }\n",
|
378
|
-
" if (root.Bokeh !== undefined) {\n",
|
379
|
-
" embed_document(root);\n",
|
380
|
-
" } else {\n",
|
381
|
-
" let attempts = 0;\n",
|
382
|
-
" const timer = setInterval(function(root) {\n",
|
383
|
-
" if (root.Bokeh !== undefined) {\n",
|
384
|
-
" clearInterval(timer);\n",
|
385
|
-
" embed_document(root);\n",
|
386
|
-
" } else {\n",
|
387
|
-
" attempts++;\n",
|
388
|
-
" if (attempts > 100) {\n",
|
389
|
-
" clearInterval(timer);\n",
|
390
|
-
" console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n",
|
391
|
-
" }\n",
|
392
|
-
" }\n",
|
393
|
-
" }, 10, root)\n",
|
394
|
-
" }\n",
|
395
|
-
"})(window);"
|
396
|
-
],
|
397
|
-
"application/vnd.bokehjs_exec.v0+json": ""
|
398
|
-
},
|
399
|
-
"metadata": {
|
400
|
-
"application/vnd.bokehjs_exec.v0+json": {
|
401
|
-
"id": "1003"
|
402
|
-
}
|
403
|
-
},
|
404
|
-
"output_type": "display_data"
|
405
|
-
}
|
406
|
-
],
|
407
|
-
"source": [
|
408
|
-
"# Here is a list of categorical values (or factors)\n",
|
409
|
-
"fruits = ['Apples', 'Pears', 'Nectarines', 'Plums', 'Grapes', 'Strawberries']\n",
|
410
|
-
"\n",
|
411
|
-
"# Set the x_range to the list of categories above\n",
|
412
|
-
"p = figure(x_range=fruits, plot_height=250, title=\"Fruit Counts\")\n",
|
413
|
-
"\n",
|
414
|
-
"# Categorical values can also be used as coordinates\n",
|
415
|
-
"p.vbar(x=fruits, top=[5, 3, 4, 2, 4, 6], width=0.9)\n",
|
416
|
-
"\n",
|
417
|
-
"# Set some properties to make the plot look better\n",
|
418
|
-
"p.xgrid.grid_line_color = None\n",
|
419
|
-
"p.y_range.start = 0\n",
|
420
|
-
"\n",
|
421
|
-
"show(p)"
|
422
|
-
]
|
423
|
-
},
|
424
|
-
{
|
425
|
-
"cell_type": "markdown",
|
426
|
-
"metadata": {},
|
427
|
-
"source": [
|
428
|
-
"When we want to create a plot with a categorical range, we pass the ordered list of categorical values to `figure`, e.g. `x_range=['a', 'b', 'c']`. In the plot above, we passed the list of fruits as `x_range`, and we can see those refelected as the x-axis.\n",
|
429
|
-
"\n",
|
430
|
-
"The `vbar` glyph method takes an `x` location for the center of the bar, a `top` and `bottom` (which defaults to 0), and a `width`. When we are using a categorical range as we are here, each category implicitly has width of 1, so setting `width=0.9` as we have done here makes the bars shrink away from each other. (Another option would be to add some padding to the range.)"
|
431
|
-
]
|
432
|
-
},
|
433
|
-
{
|
434
|
-
"cell_type": "code",
|
435
|
-
"execution_count": 3,
|
436
|
-
"metadata": {},
|
437
|
-
"outputs": [],
|
438
|
-
"source": [
|
439
|
-
"# Exercise: Create your own simple bar chart\n"
|
440
|
-
]
|
441
|
-
},
|
442
|
-
{
|
443
|
-
"cell_type": "markdown",
|
444
|
-
"metadata": {},
|
445
|
-
"source": [
|
446
|
-
"Since `vbar` is a glyph method, we can use it with a `ColumnDataSource` just as we would with any other glyph. In the example below, we put the data (including color data) in a `ColumnDataSource` and use that to drive our plot. We also add a legend, see chapter [Adding Annotations.ipynb](03 - Adding Annotations.ipynb) for more information about legends and other annotations."
|
447
|
-
]
|
448
|
-
},
|
449
|
-
{
|
450
|
-
"cell_type": "code",
|
451
|
-
"execution_count": 4,
|
452
|
-
"metadata": {},
|
453
|
-
"outputs": [
|
454
|
-
{
|
455
|
-
"data": {
|
456
|
-
"text/html": [
|
457
|
-
"\n",
|
458
|
-
" <div class=\"bk-root\" id=\"9aa2b85c-244f-409f-8b71-8c5816e3e009\" data-root-id=\"1102\"></div>\n"
|
459
|
-
]
|
460
|
-
},
|
461
|
-
"metadata": {},
|
462
|
-
"output_type": "display_data"
|
463
|
-
},
|
464
|
-
{
|
465
|
-
"data": {
|
466
|
-
"application/javascript": [
|
467
|
-
"(function(root) {\n",
|
468
|
-
" function embed_document(root) {\n",
|
469
|
-
" const docs_json = {\"0b32873b-db26-40c9-a68b-be1e6693e332\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1113\"}],\"center\":[{\"id\":\"1115\"},{\"id\":\"1119\"},{\"id\":\"1150\"}],\"height\":250,\"left\":[{\"id\":\"1116\"}],\"renderers\":[{\"id\":\"1138\"}],\"title\":{\"id\":\"1103\"},\"toolbar\":{\"id\":\"1127\"},\"x_range\":{\"id\":\"1105\"},\"x_scale\":{\"id\":\"1109\"},\"y_range\":{\"id\":\"1107\"},\"y_scale\":{\"id\":\"1111\"}},\"id\":\"1102\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"1123\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"1147\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1101\"},\"glyph\":{\"id\":\"1135\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1137\"},\"nonselection_glyph\":{\"id\":\"1136\"},\"view\":{\"id\":\"1139\"}},\"id\":\"1138\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1146\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1114\",\"type\":\"CategoricalTicker\"},{\"attributes\":{},\"id\":\"1148\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1125\",\"type\":\"HelpTool\"},{\"attributes\":{\"axis\":{\"id\":\"1113\"},\"coordinates\":null,\"grid_line_color\":null,\"group\":null,\"ticker\":null},\"id\":\"1115\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1145\",\"type\":\"CategoricalTickFormatter\"},{\"attributes\":{},\"id\":\"1111\",\"type\":\"LinearScale\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1145\"},\"group\":null,\"major_label_policy\":{\"id\":\"1146\"},\"ticker\":{\"id\":\"1114\"}},\"id\":\"1113\",\"type\":\"CategoricalAxis\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1142\"},\"group\":null,\"major_label_policy\":{\"id\":\"1143\"},\"ticker\":{\"id\":\"1117\"}},\"id\":\"1116\",\"type\":\"LinearAxis\"},{\"attributes\":{\"label\":{\"field\":\"fruits\"},\"renderers\":[{\"id\":\"1138\"}]},\"id\":\"1151\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"1117\",\"type\":\"BasicTicker\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"field\":\"color\"},\"hatch_alpha\":{\"value\":0.2},\"hatch_color\":{\"field\":\"color\"},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"field\":\"color\"},\"top\":{\"field\":\"counts\"},\"width\":{\"value\":0.9},\"x\":{\"field\":\"fruits\"}},\"id\":\"1137\",\"type\":\"VBar\"},{\"attributes\":{\"data\":{\"color\":[\"#3288bd\",\"#99d594\",\"#e6f598\",\"#fee08b\",\"#fc8d59\",\"#d53e4f\"],\"counts\":[5,3,4,2,4,6],\"fruits\":[\"Apples\",\"Pears\",\"Nectarines\",\"Plums\",\"Grapes\",\"Strawberries\"]},\"selected\":{\"id\":\"1148\"},\"selection_policy\":{\"id\":\"1147\"}},\"id\":\"1101\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"1151\"}],\"location\":\"top_center\",\"orientation\":\"horizontal\"},\"id\":\"1150\",\"type\":\"Legend\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"field\":\"color\"},\"hatch_alpha\":{\"value\":0.1},\"hatch_color\":{\"field\":\"color\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"field\":\"color\"},\"top\":{\"field\":\"counts\"},\"width\":{\"value\":0.9},\"x\":{\"field\":\"fruits\"}},\"id\":\"1136\",\"type\":\"VBar\"},{\"attributes\":{\"axis\":{\"id\":\"1116\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1119\",\"type\":\"Grid\"},{\"attributes\":{\"source\":{\"id\":\"1101\"}},\"id\":\"1139\",\"type\":\"CDSView\"},{\"attributes\":{\"factors\":[\"Apples\",\"Pears\",\"Nectarines\",\"Plums\",\"Grapes\",\"Strawberries\"]},\"id\":\"1105\",\"type\":\"FactorRange\"},{\"attributes\":{\"tools\":[{\"id\":\"1120\"},{\"id\":\"1121\"},{\"id\":\"1122\"},{\"id\":\"1123\"},{\"id\":\"1124\"},{\"id\":\"1125\"}]},\"id\":\"1127\",\"type\":\"Toolbar\"},{\"attributes\":{\"fill_color\":{\"field\":\"color\"},\"hatch_color\":{\"field\":\"color\"},\"line_color\":{\"field\":\"color\"},\"top\":{\"field\":\"counts\"},\"width\":{\"value\":0.9},\"x\":{\"field\":\"fruits\"}},\"id\":\"1135\",\"type\":\"VBar\"},{\"attributes\":{},\"id\":\"1109\",\"type\":\"CategoricalScale\"},{\"attributes\":{},\"id\":\"1143\",\"type\":\"AllLabels\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1126\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"text\":\"Fruit Counts\"},\"id\":\"1103\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"1120\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"1124\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"1142\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1121\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"overlay\":{\"id\":\"1126\"}},\"id\":\"1122\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"end\":9},\"id\":\"1107\",\"type\":\"Range1d\"}],\"root_ids\":[\"1102\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.3\"}};\n",
|
470
|
-
" const render_items = [{\"docid\":\"0b32873b-db26-40c9-a68b-be1e6693e332\",\"root_ids\":[\"1102\"],\"roots\":{\"1102\":\"9aa2b85c-244f-409f-8b71-8c5816e3e009\"}}];\n",
|
471
|
-
" root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
|
472
|
-
" }\n",
|
473
|
-
" if (root.Bokeh !== undefined) {\n",
|
474
|
-
" embed_document(root);\n",
|
475
|
-
" } else {\n",
|
476
|
-
" let attempts = 0;\n",
|
477
|
-
" const timer = setInterval(function(root) {\n",
|
478
|
-
" if (root.Bokeh !== undefined) {\n",
|
479
|
-
" clearInterval(timer);\n",
|
480
|
-
" embed_document(root);\n",
|
481
|
-
" } else {\n",
|
482
|
-
" attempts++;\n",
|
483
|
-
" if (attempts > 100) {\n",
|
484
|
-
" clearInterval(timer);\n",
|
485
|
-
" console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n",
|
486
|
-
" }\n",
|
487
|
-
" }\n",
|
488
|
-
" }, 10, root)\n",
|
489
|
-
" }\n",
|
490
|
-
"})(window);"
|
491
|
-
],
|
492
|
-
"application/vnd.bokehjs_exec.v0+json": ""
|
493
|
-
},
|
494
|
-
"metadata": {
|
495
|
-
"application/vnd.bokehjs_exec.v0+json": {
|
496
|
-
"id": "1102"
|
497
|
-
}
|
498
|
-
},
|
499
|
-
"output_type": "display_data"
|
500
|
-
}
|
501
|
-
],
|
502
|
-
"source": [
|
503
|
-
"from bokeh.models import ColumnDataSource\n",
|
504
|
-
"from bokeh.palettes import Spectral6\n",
|
505
|
-
"\n",
|
506
|
-
"fruits = ['Apples', 'Pears', 'Nectarines', 'Plums', 'Grapes', 'Strawberries']\n",
|
507
|
-
"counts = [5, 3, 4, 2, 4, 6]\n",
|
508
|
-
"\n",
|
509
|
-
"source = ColumnDataSource(data=dict(fruits=fruits, counts=counts, color=Spectral6))\n",
|
510
|
-
"\n",
|
511
|
-
"p = figure(x_range=fruits, plot_height=250, y_range=(0, 9), title=\"Fruit Counts\")\n",
|
512
|
-
"p.vbar(x='fruits', top='counts', width=0.9, color='color', legend_field=\"fruits\", source=source)\n",
|
513
|
-
"\n",
|
514
|
-
"p.xgrid.grid_line_color = None\n",
|
515
|
-
"p.legend.orientation = \"horizontal\"\n",
|
516
|
-
"p.legend.location = \"top_center\"\n",
|
517
|
-
"\n",
|
518
|
-
"show(p)"
|
519
|
-
]
|
520
|
-
},
|
521
|
-
{
|
522
|
-
"cell_type": "code",
|
523
|
-
"execution_count": 5,
|
524
|
-
"metadata": {},
|
525
|
-
"outputs": [],
|
526
|
-
"source": [
|
527
|
-
"# Exercise: Create your own simple bar chart driven by a ColumnDataSource\n"
|
528
|
-
]
|
529
|
-
},
|
530
|
-
{
|
531
|
-
"cell_type": "markdown",
|
532
|
-
"metadata": {},
|
533
|
-
"source": [
|
534
|
-
"## Stacked Bars\n",
|
535
|
-
"\n",
|
536
|
-
"It's often desirable to stack bars together. Bokeh makes this straightforward using the `vbar_stack` and `hbar_stack` methods. When passing data to one of these methods, the data source should have a series for each \"row\" in the stack. You will provide an ordered list of column names to stack together from the data source. \n",
|
537
|
-
"\n",
|
538
|
-
"In the example below, we see simulated data for fruit exports (positive values) and imports (negative values) stacked using two calls to `hbar_stack`. The values in the columns for each year are ordered according to the `fruits`, i.e. this is not a \"tidy\" data format."
|
539
|
-
]
|
540
|
-
},
|
541
|
-
{
|
542
|
-
"cell_type": "code",
|
543
|
-
"execution_count": 6,
|
544
|
-
"metadata": {},
|
545
|
-
"outputs": [
|
546
|
-
{
|
547
|
-
"data": {
|
548
|
-
"text/html": [
|
549
|
-
"\n",
|
550
|
-
" <div class=\"bk-root\" id=\"6d9ac7c0-116e-4589-a0eb-c7774a044b3a\" data-root-id=\"1222\"></div>\n"
|
551
|
-
]
|
552
|
-
},
|
553
|
-
"metadata": {},
|
554
|
-
"output_type": "display_data"
|
555
|
-
},
|
556
|
-
{
|
557
|
-
"data": {
|
558
|
-
"application/javascript": [
|
559
|
-
"(function(root) {\n",
|
560
|
-
" function embed_document(root) {\n",
|
561
|
-
" const docs_json = {\"b0d7f621-2ade-436b-b2fe-f909f6bb0830\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1233\"}],\"center\":[{\"id\":\"1236\"},{\"id\":\"1239\"},{\"id\":\"1277\"}],\"height\":250,\"left\":[{\"id\":\"1237\"}],\"renderers\":[{\"id\":\"1265\"},{\"id\":\"1283\"},{\"id\":\"1300\"},{\"id\":\"1324\"},{\"id\":\"1343\"},{\"id\":\"1362\"}],\"title\":{\"id\":\"1223\"},\"toolbar\":{\"id\":\"1247\"},\"x_range\":{\"id\":\"1225\"},\"x_scale\":{\"id\":\"1229\"},\"y_range\":{\"id\":\"1227\"},\"y_scale\":{\"id\":\"1231\"}},\"id\":\"1222\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1254\"},\"glyph\":{\"id\":\"1262\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1264\"},\"name\":\"2015\",\"nonselection_glyph\":{\"id\":\"1263\"},\"view\":{\"id\":\"1266\"}},\"id\":\"1265\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"fields\":[\"2015\"]},\"id\":\"1316\",\"type\":\"Stack\"},{\"attributes\":{\"fields\":[\"2015\"]},\"id\":\"1315\",\"type\":\"Stack\"},{\"attributes\":{\"source\":{\"id\":\"1254\"}},\"id\":\"1266\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1274\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"fields\":[\"2015\",\"2016\"]},\"id\":\"1318\",\"type\":\"Stack\"},{\"attributes\":{},\"id\":\"1273\",\"type\":\"AllLabels\"},{\"attributes\":{\"fields\":[\"2015\",\"2016\"]},\"id\":\"1317\",\"type\":\"Stack\"},{\"attributes\":{},\"id\":\"1275\",\"type\":\"Selection\"},{\"attributes\":{\"fields\":[\"2015\",\"2016\",\"2017\"]},\"id\":\"1319\",\"type\":\"Stack\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"1278\"},{\"id\":\"1295\"},{\"id\":\"1312\"},{\"id\":\"1338\"},{\"id\":\"1357\"},{\"id\":\"1376\"}],\"location\":\"center_left\"},\"id\":\"1277\",\"type\":\"Legend\"},{\"attributes\":{\"label\":{\"value\":\"2015 exports\"},\"renderers\":[{\"id\":\"1265\"}]},\"id\":\"1278\",\"type\":\"LegendItem\"},{\"attributes\":{\"label\":{\"value\":\"2015 imports\"},\"renderers\":[{\"id\":\"1324\"}]},\"id\":\"1338\",\"type\":\"LegendItem\"},{\"attributes\":{\"fill_color\":{\"value\":\"#e34a33\"},\"hatch_color\":{\"value\":\"#e34a33\"},\"height\":{\"value\":0.9},\"left\":{\"expr\":{\"id\":\"1314\"}},\"line_color\":{\"value\":\"#e34a33\"},\"right\":{\"expr\":{\"id\":\"1315\"}},\"y\":{\"field\":\"fruits\"}},\"id\":\"1321\",\"type\":\"HBar\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1313\"},\"glyph\":{\"id\":\"1321\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1323\"},\"name\":\"2015\",\"nonselection_glyph\":{\"id\":\"1322\"},\"view\":{\"id\":\"1325\"}},\"id\":\"1324\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#e34a33\"},\"hatch_alpha\":{\"value\":0.1},\"hatch_color\":{\"value\":\"#e34a33\"},\"height\":{\"value\":0.9},\"left\":{\"expr\":{\"id\":\"1314\"}},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#e34a33\"},\"right\":{\"expr\":{\"id\":\"1315\"}},\"y\":{\"field\":\"fruits\"}},\"id\":\"1322\",\"type\":\"HBar\"},{\"attributes\":{\"source\":{\"id\":\"1313\"}},\"id\":\"1325\",\"type\":\"CDSView\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"#e34a33\"},\"hatch_alpha\":{\"value\":0.2},\"hatch_color\":{\"value\":\"#e34a33\"},\"height\":{\"value\":0.9},\"left\":{\"expr\":{\"id\":\"1314\"}},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"#e34a33\"},\"right\":{\"expr\":{\"id\":\"1315\"}},\"y\":{\"field\":\"fruits\"}},\"id\":\"1323\",\"type\":\"HBar\"},{\"attributes\":{\"label\":{\"value\":\"2016 exports\"},\"renderers\":[{\"id\":\"1283\"}]},\"id\":\"1295\",\"type\":\"LegendItem\"},{\"attributes\":{\"fill_color\":{\"value\":\"#a8ddb5\"},\"hatch_color\":{\"value\":\"#a8ddb5\"},\"height\":{\"value\":0.9},\"left\":{\"expr\":{\"id\":\"1257\"}},\"line_color\":{\"value\":\"#a8ddb5\"},\"right\":{\"expr\":{\"id\":\"1258\"}},\"y\":{\"field\":\"fruits\"}},\"id\":\"1280\",\"type\":\"HBar\"},{\"attributes\":{},\"id\":\"1336\",\"type\":\"Selection\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1254\"},\"glyph\":{\"id\":\"1280\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1282\"},\"name\":\"2016\",\"nonselection_glyph\":{\"id\":\"1281\"},\"view\":{\"id\":\"1284\"}},\"id\":\"1283\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#a8ddb5\"},\"hatch_alpha\":{\"value\":0.1},\"hatch_color\":{\"value\":\"#a8ddb5\"},\"height\":{\"value\":0.9},\"left\":{\"expr\":{\"id\":\"1257\"}},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#a8ddb5\"},\"right\":{\"expr\":{\"id\":\"1258\"}},\"y\":{\"field\":\"fruits\"}},\"id\":\"1281\",\"type\":\"HBar\"},{\"attributes\":{\"source\":{\"id\":\"1254\"}},\"id\":\"1284\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1335\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"#a8ddb5\"},\"hatch_alpha\":{\"value\":0.2},\"hatch_color\":{\"value\":\"#a8ddb5\"},\"height\":{\"value\":0.9},\"left\":{\"expr\":{\"id\":\"1257\"}},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"#a8ddb5\"},\"right\":{\"expr\":{\"id\":\"1258\"}},\"y\":{\"field\":\"fruits\"}},\"id\":\"1282\",\"type\":\"HBar\"},{\"attributes\":{\"fill_color\":{\"value\":\"#fdbb84\"},\"hatch_color\":{\"value\":\"#fdbb84\"},\"height\":{\"value\":0.9},\"left\":{\"expr\":{\"id\":\"1316\"}},\"line_color\":{\"value\":\"#fdbb84\"},\"right\":{\"expr\":{\"id\":\"1317\"}},\"y\":{\"field\":\"fruits\"}},\"id\":\"1340\",\"type\":\"HBar\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1313\"},\"glyph\":{\"id\":\"1340\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1342\"},\"name\":\"2016\",\"nonselection_glyph\":{\"id\":\"1341\"},\"view\":{\"id\":\"1344\"}},\"id\":\"1343\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"label\":{\"value\":\"2017 exports\"},\"renderers\":[{\"id\":\"1300\"}]},\"id\":\"1312\",\"type\":\"LegendItem\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#fdbb84\"},\"hatch_alpha\":{\"value\":0.1},\"hatch_color\":{\"value\":\"#fdbb84\"},\"height\":{\"value\":0.9},\"left\":{\"expr\":{\"id\":\"1316\"}},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#fdbb84\"},\"right\":{\"expr\":{\"id\":\"1317\"}},\"y\":{\"field\":\"fruits\"}},\"id\":\"1341\",\"type\":\"HBar\"},{\"attributes\":{\"source\":{\"id\":\"1313\"}},\"id\":\"1344\",\"type\":\"CDSView\"},{\"attributes\":{\"fill_color\":{\"value\":\"#e0f3db\"},\"hatch_color\":{\"value\":\"#e0f3db\"},\"height\":{\"value\":0.9},\"left\":{\"expr\":{\"id\":\"1259\"}},\"line_color\":{\"value\":\"#e0f3db\"},\"right\":{\"expr\":{\"id\":\"1260\"}},\"y\":{\"field\":\"fruits\"}},\"id\":\"1297\",\"type\":\"HBar\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1254\"},\"glyph\":{\"id\":\"1297\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1299\"},\"name\":\"2017\",\"nonselection_glyph\":{\"id\":\"1298\"},\"view\":{\"id\":\"1301\"}},\"id\":\"1300\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#e0f3db\"},\"hatch_alpha\":{\"value\":0.1},\"hatch_color\":{\"value\":\"#e0f3db\"},\"height\":{\"value\":0.9},\"left\":{\"expr\":{\"id\":\"1259\"}},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#e0f3db\"},\"right\":{\"expr\":{\"id\":\"1260\"}},\"y\":{\"field\":\"fruits\"}},\"id\":\"1298\",\"type\":\"HBar\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"#fdbb84\"},\"hatch_alpha\":{\"value\":0.2},\"hatch_color\":{\"value\":\"#fdbb84\"},\"height\":{\"value\":0.9},\"left\":{\"expr\":{\"id\":\"1316\"}},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"#fdbb84\"},\"right\":{\"expr\":{\"id\":\"1317\"}},\"y\":{\"field\":\"fruits\"}},\"id\":\"1342\",\"type\":\"HBar\"},{\"attributes\":{\"source\":{\"id\":\"1254\"}},\"id\":\"1301\",\"type\":\"CDSView\"},{\"attributes\":{\"label\":{\"value\":\"2016 imports\"},\"renderers\":[{\"id\":\"1343\"}]},\"id\":\"1357\",\"type\":\"LegendItem\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"#e0f3db\"},\"hatch_alpha\":{\"value\":0.2},\"hatch_color\":{\"value\":\"#e0f3db\"},\"height\":{\"value\":0.9},\"left\":{\"expr\":{\"id\":\"1259\"}},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"#e0f3db\"},\"right\":{\"expr\":{\"id\":\"1260\"}},\"y\":{\"field\":\"fruits\"}},\"id\":\"1299\",\"type\":\"HBar\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#fee8c8\"},\"hatch_alpha\":{\"value\":0.1},\"hatch_color\":{\"value\":\"#fee8c8\"},\"height\":{\"value\":0.9},\"left\":{\"expr\":{\"id\":\"1318\"}},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#fee8c8\"},\"right\":{\"expr\":{\"id\":\"1319\"}},\"y\":{\"field\":\"fruits\"}},\"id\":\"1360\",\"type\":\"HBar\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"#fee8c8\"},\"hatch_alpha\":{\"value\":0.2},\"hatch_color\":{\"value\":\"#fee8c8\"},\"height\":{\"value\":0.9},\"left\":{\"expr\":{\"id\":\"1318\"}},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"#fee8c8\"},\"right\":{\"expr\":{\"id\":\"1319\"}},\"y\":{\"field\":\"fruits\"}},\"id\":\"1361\",\"type\":\"HBar\"},{\"attributes\":{\"fill_color\":{\"value\":\"#fee8c8\"},\"hatch_color\":{\"value\":\"#fee8c8\"},\"height\":{\"value\":0.9},\"left\":{\"expr\":{\"id\":\"1318\"}},\"line_color\":{\"value\":\"#fee8c8\"},\"right\":{\"expr\":{\"id\":\"1319\"}},\"y\":{\"field\":\"fruits\"}},\"id\":\"1359\",\"type\":\"HBar\"},{\"attributes\":{\"fields\":[]},\"id\":\"1314\",\"type\":\"Stack\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1313\"},\"glyph\":{\"id\":\"1359\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1361\"},\"name\":\"2017\",\"nonselection_glyph\":{\"id\":\"1360\"},\"view\":{\"id\":\"1363\"}},\"id\":\"1362\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"label\":{\"value\":\"2017 imports\"},\"renderers\":[{\"id\":\"1362\"}]},\"id\":\"1376\",\"type\":\"LegendItem\"},{\"attributes\":{\"source\":{\"id\":\"1313\"}},\"id\":\"1363\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1240\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"1244\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"1241\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"overlay\":{\"id\":\"1246\"}},\"id\":\"1242\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"1243\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"1245\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"1270\",\"type\":\"AllLabels\"},{\"attributes\":{\"tools\":[{\"id\":\"1240\"},{\"id\":\"1241\"},{\"id\":\"1242\"},{\"id\":\"1243\"},{\"id\":\"1244\"},{\"id\":\"1245\"}]},\"id\":\"1247\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"1269\",\"type\":\"CategoricalTickFormatter\"},{\"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\":\"1246\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"data\":{\"2015\":[2,1,4,3,2,4],\"2016\":[5,3,4,2,4,6],\"2017\":[3,2,4,4,5,3],\"fruits\":[\"Apples\",\"Pears\",\"Nectarines\",\"Plums\",\"Grapes\",\"Strawberries\"]},\"selected\":{\"id\":\"1275\"},\"selection_policy\":{\"id\":\"1274\"}},\"id\":\"1254\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"factors\":[\"Apples\",\"Pears\",\"Nectarines\",\"Plums\",\"Grapes\",\"Strawberries\"],\"range_padding\":0.1},\"id\":\"1227\",\"type\":\"FactorRange\"},{\"attributes\":{\"end\":16,\"start\":-16},\"id\":\"1225\",\"type\":\"Range1d\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"text\":\"Fruit import/export, by year\"},\"id\":\"1223\",\"type\":\"Title\"},{\"attributes\":{\"fields\":[\"2015\"]},\"id\":\"1257\",\"type\":\"Stack\"},{\"attributes\":{\"fields\":[]},\"id\":\"1255\",\"type\":\"Stack\"},{\"attributes\":{\"fields\":[\"2015\"]},\"id\":\"1256\",\"type\":\"Stack\"},{\"attributes\":{},\"id\":\"1234\",\"type\":\"BasicTicker\"},{\"attributes\":{\"fields\":[\"2015\",\"2016\"]},\"id\":\"1259\",\"type\":\"Stack\"},{\"attributes\":{},\"id\":\"1229\",\"type\":\"LinearScale\"},{\"attributes\":{\"fields\":[\"2015\",\"2016\"]},\"id\":\"1258\",\"type\":\"Stack\"},{\"attributes\":{},\"id\":\"1231\",\"type\":\"CategoricalScale\"},{\"attributes\":{\"axis\":{\"id\":\"1237\"},\"coordinates\":null,\"dimension\":1,\"grid_line_color\":null,\"group\":null,\"ticker\":null},\"id\":\"1239\",\"type\":\"Grid\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1272\"},\"group\":null,\"major_label_policy\":{\"id\":\"1273\"},\"ticker\":{\"id\":\"1234\"}},\"id\":\"1233\",\"type\":\"LinearAxis\"},{\"attributes\":{\"fields\":[\"2015\",\"2016\",\"2017\"]},\"id\":\"1260\",\"type\":\"Stack\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#43a2ca\"},\"hatch_alpha\":{\"value\":0.1},\"hatch_color\":{\"value\":\"#43a2ca\"},\"height\":{\"value\":0.9},\"left\":{\"expr\":{\"id\":\"1255\"}},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#43a2ca\"},\"right\":{\"expr\":{\"id\":\"1256\"}},\"y\":{\"field\":\"fruits\"}},\"id\":\"1263\",\"type\":\"HBar\"},{\"attributes\":{\"axis\":{\"id\":\"1233\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"1236\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1238\",\"type\":\"CategoricalTicker\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1269\"},\"group\":null,\"major_label_policy\":{\"id\":\"1270\"},\"ticker\":{\"id\":\"1238\"}},\"id\":\"1237\",\"type\":\"CategoricalAxis\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"#43a2ca\"},\"hatch_alpha\":{\"value\":0.2},\"hatch_color\":{\"value\":\"#43a2ca\"},\"height\":{\"value\":0.9},\"left\":{\"expr\":{\"id\":\"1255\"}},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"#43a2ca\"},\"right\":{\"expr\":{\"id\":\"1256\"}},\"y\":{\"field\":\"fruits\"}},\"id\":\"1264\",\"type\":\"HBar\"},{\"attributes\":{},\"id\":\"1272\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"data\":{\"2015\":[-1,0,-1,-3,-2,-1],\"2016\":[-2,-1,-3,-1,-2,-2],\"2017\":[-1,-2,-1,0,-2,-2],\"fruits\":[\"Apples\",\"Pears\",\"Nectarines\",\"Plums\",\"Grapes\",\"Strawberries\"]},\"selected\":{\"id\":\"1336\"},\"selection_policy\":{\"id\":\"1335\"}},\"id\":\"1313\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"fill_color\":{\"value\":\"#43a2ca\"},\"hatch_color\":{\"value\":\"#43a2ca\"},\"height\":{\"value\":0.9},\"left\":{\"expr\":{\"id\":\"1255\"}},\"line_color\":{\"value\":\"#43a2ca\"},\"right\":{\"expr\":{\"id\":\"1256\"}},\"y\":{\"field\":\"fruits\"}},\"id\":\"1262\",\"type\":\"HBar\"}],\"root_ids\":[\"1222\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.3\"}};\n",
|
562
|
-
" const render_items = [{\"docid\":\"b0d7f621-2ade-436b-b2fe-f909f6bb0830\",\"root_ids\":[\"1222\"],\"roots\":{\"1222\":\"6d9ac7c0-116e-4589-a0eb-c7774a044b3a\"}}];\n",
|
563
|
-
" root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
|
564
|
-
" }\n",
|
565
|
-
" if (root.Bokeh !== undefined) {\n",
|
566
|
-
" embed_document(root);\n",
|
567
|
-
" } else {\n",
|
568
|
-
" let attempts = 0;\n",
|
569
|
-
" const timer = setInterval(function(root) {\n",
|
570
|
-
" if (root.Bokeh !== undefined) {\n",
|
571
|
-
" clearInterval(timer);\n",
|
572
|
-
" embed_document(root);\n",
|
573
|
-
" } else {\n",
|
574
|
-
" attempts++;\n",
|
575
|
-
" if (attempts > 100) {\n",
|
576
|
-
" clearInterval(timer);\n",
|
577
|
-
" console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n",
|
578
|
-
" }\n",
|
579
|
-
" }\n",
|
580
|
-
" }, 10, root)\n",
|
581
|
-
" }\n",
|
582
|
-
"})(window);"
|
583
|
-
],
|
584
|
-
"application/vnd.bokehjs_exec.v0+json": ""
|
585
|
-
},
|
586
|
-
"metadata": {
|
587
|
-
"application/vnd.bokehjs_exec.v0+json": {
|
588
|
-
"id": "1222"
|
589
|
-
}
|
590
|
-
},
|
591
|
-
"output_type": "display_data"
|
592
|
-
}
|
593
|
-
],
|
594
|
-
"source": [
|
595
|
-
"from bokeh.palettes import GnBu3, OrRd3\n",
|
596
|
-
"\n",
|
597
|
-
"years = ['2015', '2016', '2017']\n",
|
598
|
-
"\n",
|
599
|
-
"exports = {'fruits' : fruits,\n",
|
600
|
-
" '2015' : [2, 1, 4, 3, 2, 4],\n",
|
601
|
-
" '2016' : [5, 3, 4, 2, 4, 6],\n",
|
602
|
-
" '2017' : [3, 2, 4, 4, 5, 3]}\n",
|
603
|
-
"imports = {'fruits' : fruits,\n",
|
604
|
-
" '2015' : [-1, 0, -1, -3, -2, -1],\n",
|
605
|
-
" '2016' : [-2, -1, -3, -1, -2, -2],\n",
|
606
|
-
" '2017' : [-1, -2, -1, 0, -2, -2]}\n",
|
607
|
-
"\n",
|
608
|
-
"p = figure(y_range=fruits, plot_height=250, x_range=(-16, 16), title=\"Fruit import/export, by year\")\n",
|
609
|
-
"\n",
|
610
|
-
"p.hbar_stack(years, y='fruits', height=0.9, color=GnBu3, source=ColumnDataSource(exports),\n",
|
611
|
-
" legend_label=[\"%s exports\" % x for x in years])\n",
|
612
|
-
"\n",
|
613
|
-
"p.hbar_stack(years, y='fruits', height=0.9, color=OrRd3, source=ColumnDataSource(imports),\n",
|
614
|
-
" legend_label=[\"%s imports\" % x for x in years])\n",
|
615
|
-
"\n",
|
616
|
-
"p.y_range.range_padding = 0.1\n",
|
617
|
-
"p.ygrid.grid_line_color = None\n",
|
618
|
-
"p.legend.location = \"center_left\"\n",
|
619
|
-
"\n",
|
620
|
-
"show(p)"
|
621
|
-
]
|
622
|
-
},
|
623
|
-
{
|
624
|
-
"cell_type": "markdown",
|
625
|
-
"metadata": {},
|
626
|
-
"source": [
|
627
|
-
"Notice we also added some padding *around* the categorical range (e.g. at both ends of the axis) by specifying\n",
|
628
|
-
"\n",
|
629
|
-
"```\n",
|
630
|
-
"p.y_range.range_padding = 0.1\n",
|
631
|
-
"```"
|
632
|
-
]
|
633
|
-
},
|
634
|
-
{
|
635
|
-
"cell_type": "code",
|
636
|
-
"execution_count": 7,
|
637
|
-
"metadata": {},
|
638
|
-
"outputs": [],
|
639
|
-
"source": [
|
640
|
-
"# Create a stacked bar chart with a single call to vbar_stack\n"
|
641
|
-
]
|
642
|
-
},
|
643
|
-
{
|
644
|
-
"cell_type": "markdown",
|
645
|
-
"metadata": {},
|
646
|
-
"source": [
|
647
|
-
"## Grouped Bar Charts\n",
|
648
|
-
"\n",
|
649
|
-
"Sometimes we want to group bars together, instead of stacking them. Bokeh can handle up to three levels of nested (hierarchical) categories, and will automatically group output according to the outermost level. To specify nested categorical coordinates, the columns of the data source should contain tuples, for example:\n",
|
650
|
-
"\n",
|
651
|
-
" x = [ (\"Apples\", \"2015\"), (\"Apples\", \"2016\"), (\"Apples\", \"2017\"), (\"Pears\", \"2015), ... ]\n",
|
652
|
-
" \n",
|
653
|
-
"Values in other columns correspond to each item in `x`, exactly as in other cases. When plotting with these kinds of nested coordinates, we must tell Bokeh the contents and order the axis range, by explicitly passing a `FactorRange` to `figure`. In the example below, this is seen as\n",
|
654
|
-
"\n",
|
655
|
-
" p = figure(x_range=FactorRange(*x), ....)\n",
|
656
|
-
" "
|
657
|
-
]
|
658
|
-
},
|
659
|
-
{
|
660
|
-
"cell_type": "code",
|
661
|
-
"execution_count": 8,
|
662
|
-
"metadata": {},
|
663
|
-
"outputs": [
|
664
|
-
{
|
665
|
-
"data": {
|
666
|
-
"text/html": [
|
667
|
-
"\n",
|
668
|
-
" <div class=\"bk-root\" id=\"6af9dcef-2586-4d2c-bce6-591669fc9d28\" data-root-id=\"1471\"></div>\n"
|
669
|
-
]
|
670
|
-
},
|
671
|
-
"metadata": {},
|
672
|
-
"output_type": "display_data"
|
673
|
-
},
|
674
|
-
{
|
675
|
-
"data": {
|
676
|
-
"application/javascript": [
|
677
|
-
"(function(root) {\n",
|
678
|
-
" function embed_document(root) {\n",
|
679
|
-
" const docs_json = {\"bd771a10-2885-4c46-bf41-b5f382c080d4\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1481\"}],\"center\":[{\"id\":\"1483\"},{\"id\":\"1487\"}],\"height\":250,\"left\":[{\"id\":\"1484\"}],\"renderers\":[{\"id\":\"1506\"}],\"title\":{\"id\":\"1472\"},\"toolbar\":{\"id\":\"1495\"},\"x_range\":{\"id\":\"1470\"},\"x_scale\":{\"id\":\"1477\"},\"y_range\":{\"id\":\"1475\"},\"y_scale\":{\"id\":\"1479\"}},\"id\":\"1471\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"axis\":{\"id\":\"1484\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1487\",\"type\":\"Grid\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1469\"},\"glyph\":{\"id\":\"1503\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1505\"},\"nonselection_glyph\":{\"id\":\"1504\"},\"view\":{\"id\":\"1507\"}},\"id\":\"1506\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1485\",\"type\":\"BasicTicker\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"text\":\"Fruit Counts by Year\"},\"id\":\"1472\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"1489\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"1543\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1493\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"1542\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1542\"},\"group\":null,\"major_label_policy\":{\"id\":\"1543\"},\"ticker\":{\"id\":\"1485\"}},\"id\":\"1484\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1492\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"1545\",\"type\":\"CategoricalTickFormatter\"},{\"attributes\":{},\"id\":\"1547\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#1f77b4\"},\"hatch_alpha\":{\"value\":0.1},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"top\":{\"field\":\"counts\"},\"width\":{\"value\":0.9},\"x\":{\"field\":\"x\"}},\"id\":\"1504\",\"type\":\"VBar\"},{\"attributes\":{},\"id\":\"1477\",\"type\":\"CategoricalScale\"},{\"attributes\":{},\"id\":\"1548\",\"type\":\"Selection\"},{\"attributes\":{\"tools\":[{\"id\":\"1488\"},{\"id\":\"1489\"},{\"id\":\"1490\"},{\"id\":\"1491\"},{\"id\":\"1492\"},{\"id\":\"1493\"}]},\"id\":\"1495\",\"type\":\"Toolbar\"},{\"attributes\":{\"axis\":{\"id\":\"1481\"},\"coordinates\":null,\"grid_line_color\":null,\"group\":null,\"ticker\":null},\"id\":\"1483\",\"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\":\"1494\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"1482\",\"type\":\"CategoricalTicker\"},{\"attributes\":{},\"id\":\"1491\",\"type\":\"SaveTool\"},{\"attributes\":{\"source\":{\"id\":\"1469\"}},\"id\":\"1507\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1479\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1546\",\"type\":\"AllLabels\"},{\"attributes\":{\"data\":{\"counts\":[2,5,3,1,3,2,4,3,4,3,2,4,2,4,5,4,6,3],\"x\":[[\"Apples\",\"2015\"],[\"Apples\",\"2016\"],[\"Apples\",\"2017\"],[\"Pears\",\"2015\"],[\"Pears\",\"2016\"],[\"Pears\",\"2017\"],[\"Nectarines\",\"2015\"],[\"Nectarines\",\"2016\"],[\"Nectarines\",\"2017\"],[\"Plums\",\"2015\"],[\"Plums\",\"2016\"],[\"Plums\",\"2017\"],[\"Grapes\",\"2015\"],[\"Grapes\",\"2016\"],[\"Grapes\",\"2017\"],[\"Strawberries\",\"2015\"],[\"Strawberries\",\"2016\"],[\"Strawberries\",\"2017\"]]},\"selected\":{\"id\":\"1548\"},\"selection_policy\":{\"id\":\"1547\"}},\"id\":\"1469\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1545\"},\"group\":null,\"major_label_orientation\":1,\"major_label_policy\":{\"id\":\"1546\"},\"ticker\":{\"id\":\"1482\"}},\"id\":\"1481\",\"type\":\"CategoricalAxis\"},{\"attributes\":{\"factors\":[[\"Apples\",\"2015\"],[\"Apples\",\"2016\"],[\"Apples\",\"2017\"],[\"Pears\",\"2015\"],[\"Pears\",\"2016\"],[\"Pears\",\"2017\"],[\"Nectarines\",\"2015\"],[\"Nectarines\",\"2016\"],[\"Nectarines\",\"2017\"],[\"Plums\",\"2015\"],[\"Plums\",\"2016\"],[\"Plums\",\"2017\"],[\"Grapes\",\"2015\"],[\"Grapes\",\"2016\"],[\"Grapes\",\"2017\"],[\"Strawberries\",\"2015\"],[\"Strawberries\",\"2016\"],[\"Strawberries\",\"2017\"]],\"range_padding\":0.1},\"id\":\"1470\",\"type\":\"FactorRange\"},{\"attributes\":{\"overlay\":{\"id\":\"1494\"}},\"id\":\"1490\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"1488\",\"type\":\"PanTool\"},{\"attributes\":{\"fill_color\":{\"value\":\"#1f77b4\"},\"line_color\":{\"value\":\"#1f77b4\"},\"top\":{\"field\":\"counts\"},\"width\":{\"value\":0.9},\"x\":{\"field\":\"x\"}},\"id\":\"1503\",\"type\":\"VBar\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"#1f77b4\"},\"hatch_alpha\":{\"value\":0.2},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"#1f77b4\"},\"top\":{\"field\":\"counts\"},\"width\":{\"value\":0.9},\"x\":{\"field\":\"x\"}},\"id\":\"1505\",\"type\":\"VBar\"},{\"attributes\":{\"start\":0},\"id\":\"1475\",\"type\":\"DataRange1d\"}],\"root_ids\":[\"1471\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.3\"}};\n",
|
680
|
-
" const render_items = [{\"docid\":\"bd771a10-2885-4c46-bf41-b5f382c080d4\",\"root_ids\":[\"1471\"],\"roots\":{\"1471\":\"6af9dcef-2586-4d2c-bce6-591669fc9d28\"}}];\n",
|
681
|
-
" root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
|
682
|
-
" }\n",
|
683
|
-
" if (root.Bokeh !== undefined) {\n",
|
684
|
-
" embed_document(root);\n",
|
685
|
-
" } else {\n",
|
686
|
-
" let attempts = 0;\n",
|
687
|
-
" const timer = setInterval(function(root) {\n",
|
688
|
-
" if (root.Bokeh !== undefined) {\n",
|
689
|
-
" clearInterval(timer);\n",
|
690
|
-
" embed_document(root);\n",
|
691
|
-
" } else {\n",
|
692
|
-
" attempts++;\n",
|
693
|
-
" if (attempts > 100) {\n",
|
694
|
-
" clearInterval(timer);\n",
|
695
|
-
" console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n",
|
696
|
-
" }\n",
|
697
|
-
" }\n",
|
698
|
-
" }, 10, root)\n",
|
699
|
-
" }\n",
|
700
|
-
"})(window);"
|
701
|
-
],
|
702
|
-
"application/vnd.bokehjs_exec.v0+json": ""
|
703
|
-
},
|
704
|
-
"metadata": {
|
705
|
-
"application/vnd.bokehjs_exec.v0+json": {
|
706
|
-
"id": "1471"
|
707
|
-
}
|
708
|
-
},
|
709
|
-
"output_type": "display_data"
|
710
|
-
}
|
711
|
-
],
|
712
|
-
"source": [
|
713
|
-
"from bokeh.models import FactorRange\n",
|
714
|
-
"\n",
|
715
|
-
"fruits = ['Apples', 'Pears', 'Nectarines', 'Plums', 'Grapes', 'Strawberries']\n",
|
716
|
-
"years = ['2015', '2016', '2017']\n",
|
717
|
-
"\n",
|
718
|
-
"data = {'fruits' : fruits,\n",
|
719
|
-
" '2015' : [2, 1, 4, 3, 2, 4],\n",
|
720
|
-
" '2016' : [5, 3, 3, 2, 4, 6],\n",
|
721
|
-
" '2017' : [3, 2, 4, 4, 5, 3]}\n",
|
722
|
-
"\n",
|
723
|
-
"# this creates [ (\"Apples\", \"2015\"), (\"Apples\", \"2016\"), (\"Apples\", \"2017\"), (\"Pears\", \"2015), ... ]\n",
|
724
|
-
"x = [ (fruit, year) for fruit in fruits for year in years ]\n",
|
725
|
-
"counts = sum(zip(data['2015'], data['2016'], data['2017']), ()) # like an hstack\n",
|
726
|
-
"\n",
|
727
|
-
"source = ColumnDataSource(data=dict(x=x, counts=counts))\n",
|
728
|
-
"\n",
|
729
|
-
"p = figure(x_range=FactorRange(*x), plot_height=250, title=\"Fruit Counts by Year\")\n",
|
730
|
-
"\n",
|
731
|
-
"p.vbar(x='x', top='counts', width=0.9, source=source)\n",
|
732
|
-
"\n",
|
733
|
-
"p.y_range.start = 0\n",
|
734
|
-
"p.x_range.range_padding = 0.1\n",
|
735
|
-
"p.xaxis.major_label_orientation = 1\n",
|
736
|
-
"p.xgrid.grid_line_color = None\n",
|
737
|
-
"\n",
|
738
|
-
"show(p)"
|
739
|
-
]
|
740
|
-
},
|
741
|
-
{
|
742
|
-
"cell_type": "code",
|
743
|
-
"execution_count": 9,
|
744
|
-
"metadata": {},
|
745
|
-
"outputs": [],
|
746
|
-
"source": [
|
747
|
-
"# Exercise: Make the chart above have a different color for each year by adding colors to the ColumnDataSource\n"
|
748
|
-
]
|
749
|
-
},
|
750
|
-
{
|
751
|
-
"cell_type": "markdown",
|
752
|
-
"metadata": {},
|
753
|
-
"source": [
|
754
|
-
"Another way we can set the color of the bars is to use a transform. We first saw some transforms in previous chapter [Data Sources and Transformations](04 - Data Sources and Transformations.ipynb). Here we use a new one `factor_cmap` that accepts a the name of a column to use for colormapping, as well as the palette and factors that define the color mapping. \n",
|
755
|
-
"\n",
|
756
|
-
"Additionally we can configure it to map just the sub-factors if desired. For instance in this case we don't want shade each `(fruit, year)` pair differently. Instead, we want to only shade based on the `year`. So we pass `start=1` and `end=2` to specify the slice range of each factor to use when colormapping. Then we pass the result as the `fill_color` value:\n",
|
757
|
-
"\n",
|
758
|
-
"```\n",
|
759
|
-
" fill_color=factor_cmap('x', palette=['firebrick', 'olive', 'navy'], factors=years, start=1, end=2))\n",
|
760
|
-
"```\n",
|
761
|
-
"to have the colors be applied automatically based on the underlying data. "
|
762
|
-
]
|
763
|
-
},
|
764
|
-
{
|
765
|
-
"cell_type": "code",
|
766
|
-
"execution_count": 10,
|
767
|
-
"metadata": {},
|
768
|
-
"outputs": [
|
769
|
-
{
|
770
|
-
"data": {
|
771
|
-
"text/html": [
|
772
|
-
"\n",
|
773
|
-
" <div class=\"bk-root\" id=\"02fecb76-2f25-40aa-9a46-dc860a366c95\" data-root-id=\"1601\"></div>\n"
|
774
|
-
]
|
775
|
-
},
|
776
|
-
"metadata": {},
|
777
|
-
"output_type": "display_data"
|
778
|
-
},
|
779
|
-
{
|
780
|
-
"data": {
|
781
|
-
"application/javascript": [
|
782
|
-
"(function(root) {\n",
|
783
|
-
" function embed_document(root) {\n",
|
784
|
-
" const docs_json = {\"f2538776-6ac3-4ae4-80fe-e6fd830df5e7\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1611\"}],\"center\":[{\"id\":\"1613\"},{\"id\":\"1617\"}],\"height\":250,\"left\":[{\"id\":\"1614\"}],\"renderers\":[{\"id\":\"1637\"}],\"title\":{\"id\":\"1602\"},\"toolbar\":{\"id\":\"1625\"},\"x_range\":{\"id\":\"1600\"},\"x_scale\":{\"id\":\"1607\"},\"y_range\":{\"id\":\"1605\"},\"y_scale\":{\"id\":\"1609\"}},\"id\":\"1601\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"1622\",\"type\":\"ResetTool\"},{\"attributes\":{\"start\":0},\"id\":\"1605\",\"type\":\"DataRange1d\"},{\"attributes\":{\"overlay\":{\"id\":\"1624\"}},\"id\":\"1620\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"text\":\"Fruit Counts by Year\"},\"id\":\"1602\",\"type\":\"Title\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"field\":\"x\",\"transform\":{\"id\":\"1632\"}},\"hatch_alpha\":{\"value\":0.1},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"white\"},\"top\":{\"field\":\"counts\"},\"width\":{\"value\":0.9},\"x\":{\"field\":\"x\"}},\"id\":\"1635\",\"type\":\"VBar\"},{\"attributes\":{},\"id\":\"1684\",\"type\":\"AllLabels\"},{\"attributes\":{\"source\":{\"id\":\"1469\"}},\"id\":\"1638\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1621\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"1619\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"1612\",\"type\":\"CategoricalTicker\"},{\"attributes\":{},\"id\":\"1687\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1547\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"end\":2,\"factors\":[\"2015\",\"2016\",\"2017\"],\"palette\":[\"firebrick\",\"olive\",\"navy\"],\"start\":1},\"id\":\"1632\",\"type\":\"CategoricalColorMapper\"},{\"attributes\":{\"axis\":{\"id\":\"1611\"},\"coordinates\":null,\"grid_line_color\":null,\"group\":null,\"ticker\":null},\"id\":\"1613\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1623\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"1607\",\"type\":\"CategoricalScale\"},{\"attributes\":{},\"id\":\"1548\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1609\",\"type\":\"LinearScale\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1686\"},\"group\":null,\"major_label_orientation\":1,\"major_label_policy\":{\"id\":\"1687\"},\"ticker\":{\"id\":\"1612\"}},\"id\":\"1611\",\"type\":\"CategoricalAxis\"},{\"attributes\":{},\"id\":\"1686\",\"type\":\"CategoricalTickFormatter\"},{\"attributes\":{},\"id\":\"1615\",\"type\":\"BasicTicker\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1469\"},\"glyph\":{\"id\":\"1634\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1636\"},\"nonselection_glyph\":{\"id\":\"1635\"},\"view\":{\"id\":\"1638\"}},\"id\":\"1637\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"field\":\"x\",\"transform\":{\"id\":\"1632\"}},\"hatch_alpha\":{\"value\":0.2},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"white\"},\"top\":{\"field\":\"counts\"},\"width\":{\"value\":0.9},\"x\":{\"field\":\"x\"}},\"id\":\"1636\",\"type\":\"VBar\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1683\"},\"group\":null,\"major_label_policy\":{\"id\":\"1684\"},\"ticker\":{\"id\":\"1615\"}},\"id\":\"1614\",\"type\":\"LinearAxis\"},{\"attributes\":{\"fill_color\":{\"field\":\"x\",\"transform\":{\"id\":\"1632\"}},\"line_color\":{\"value\":\"white\"},\"top\":{\"field\":\"counts\"},\"width\":{\"value\":0.9},\"x\":{\"field\":\"x\"}},\"id\":\"1634\",\"type\":\"VBar\"},{\"attributes\":{\"data\":{\"counts\":[2,5,3,1,3,2,4,3,4,3,2,4,2,4,5,4,6,3],\"x\":[[\"Apples\",\"2015\"],[\"Apples\",\"2016\"],[\"Apples\",\"2017\"],[\"Pears\",\"2015\"],[\"Pears\",\"2016\"],[\"Pears\",\"2017\"],[\"Nectarines\",\"2015\"],[\"Nectarines\",\"2016\"],[\"Nectarines\",\"2017\"],[\"Plums\",\"2015\"],[\"Plums\",\"2016\"],[\"Plums\",\"2017\"],[\"Grapes\",\"2015\"],[\"Grapes\",\"2016\"],[\"Grapes\",\"2017\"],[\"Strawberries\",\"2015\"],[\"Strawberries\",\"2016\"],[\"Strawberries\",\"2017\"]]},\"selected\":{\"id\":\"1548\"},\"selection_policy\":{\"id\":\"1547\"}},\"id\":\"1469\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"axis\":{\"id\":\"1614\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1617\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1683\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"factors\":[[\"Apples\",\"2015\"],[\"Apples\",\"2016\"],[\"Apples\",\"2017\"],[\"Pears\",\"2015\"],[\"Pears\",\"2016\"],[\"Pears\",\"2017\"],[\"Nectarines\",\"2015\"],[\"Nectarines\",\"2016\"],[\"Nectarines\",\"2017\"],[\"Plums\",\"2015\"],[\"Plums\",\"2016\"],[\"Plums\",\"2017\"],[\"Grapes\",\"2015\"],[\"Grapes\",\"2016\"],[\"Grapes\",\"2017\"],[\"Strawberries\",\"2015\"],[\"Strawberries\",\"2016\"],[\"Strawberries\",\"2017\"]],\"range_padding\":0.1},\"id\":\"1600\",\"type\":\"FactorRange\"},{\"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\":\"1624\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"1618\",\"type\":\"PanTool\"},{\"attributes\":{\"tools\":[{\"id\":\"1618\"},{\"id\":\"1619\"},{\"id\":\"1620\"},{\"id\":\"1621\"},{\"id\":\"1622\"},{\"id\":\"1623\"}]},\"id\":\"1625\",\"type\":\"Toolbar\"}],\"root_ids\":[\"1601\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.3\"}};\n",
|
785
|
-
" const render_items = [{\"docid\":\"f2538776-6ac3-4ae4-80fe-e6fd830df5e7\",\"root_ids\":[\"1601\"],\"roots\":{\"1601\":\"02fecb76-2f25-40aa-9a46-dc860a366c95\"}}];\n",
|
786
|
-
" root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
|
787
|
-
" }\n",
|
788
|
-
" if (root.Bokeh !== undefined) {\n",
|
789
|
-
" embed_document(root);\n",
|
790
|
-
" } else {\n",
|
791
|
-
" let attempts = 0;\n",
|
792
|
-
" const timer = setInterval(function(root) {\n",
|
793
|
-
" if (root.Bokeh !== undefined) {\n",
|
794
|
-
" clearInterval(timer);\n",
|
795
|
-
" embed_document(root);\n",
|
796
|
-
" } else {\n",
|
797
|
-
" attempts++;\n",
|
798
|
-
" if (attempts > 100) {\n",
|
799
|
-
" clearInterval(timer);\n",
|
800
|
-
" console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n",
|
801
|
-
" }\n",
|
802
|
-
" }\n",
|
803
|
-
" }, 10, root)\n",
|
804
|
-
" }\n",
|
805
|
-
"})(window);"
|
806
|
-
],
|
807
|
-
"application/vnd.bokehjs_exec.v0+json": ""
|
808
|
-
},
|
809
|
-
"metadata": {
|
810
|
-
"application/vnd.bokehjs_exec.v0+json": {
|
811
|
-
"id": "1601"
|
812
|
-
}
|
813
|
-
},
|
814
|
-
"output_type": "display_data"
|
815
|
-
}
|
816
|
-
],
|
817
|
-
"source": [
|
818
|
-
"from bokeh.transform import factor_cmap\n",
|
819
|
-
"\n",
|
820
|
-
"p = figure(x_range=FactorRange(*x), plot_height=250, title=\"Fruit Counts by Year\")\n",
|
821
|
-
"\n",
|
822
|
-
"p.vbar(x='x', top='counts', width=0.9, source=source, line_color=\"white\",\n",
|
823
|
-
"\n",
|
824
|
-
" # use the palette to colormap based on the the x[1:2] values\n",
|
825
|
-
" fill_color=factor_cmap('x', palette=['firebrick', 'olive', 'navy'], factors=years, start=1, end=2))\n",
|
826
|
-
"\n",
|
827
|
-
"p.y_range.start = 0\n",
|
828
|
-
"p.x_range.range_padding = 0.1\n",
|
829
|
-
"p.xaxis.major_label_orientation = 1\n",
|
830
|
-
"p.xgrid.grid_line_color = None\n",
|
831
|
-
"\n",
|
832
|
-
"show(p)"
|
833
|
-
]
|
834
|
-
},
|
835
|
-
{
|
836
|
-
"cell_type": "markdown",
|
837
|
-
"metadata": {},
|
838
|
-
"source": [
|
839
|
-
"It is also possible to achieve grouped bar plots using another technique called \"visual dodge\". That would be useful e.g. if you only wanted to have the axis labeled by fruit type, and not include the years on the axis. This tutorial does not cover that technique but you can find information in the [User's Guide](https://bokeh.pydata.org/en/dev/docs/user_guide/categorical.html#visual-dodge). "
|
840
|
-
]
|
841
|
-
},
|
842
|
-
{
|
843
|
-
"cell_type": "markdown",
|
844
|
-
"metadata": {},
|
845
|
-
"source": [
|
846
|
-
"## Mixing Categorical Levels\n",
|
847
|
-
"\n",
|
848
|
-
"If you have created a range with nested categories as above, it is possible to plot glyphs using only the \"outer\" categories, if desired. The plot below shows monthly values grouped by quarter as bars. The data for these are in the familiar format:\n",
|
849
|
-
"\n",
|
850
|
-
" factors = [(\"Q1\", \"jan\"), (\"Q1\", \"feb\"), (\"Q1\", \"mar\"), ....]\n",
|
851
|
-
"\n",
|
852
|
-
"The plot also overlays a line representing average quarterly values, and this is accomplished by using only the \"quarter\" part of each nexted category:\n",
|
853
|
-
"\n",
|
854
|
-
" p.line(x=[\"Q1\", \"Q2\", \"Q3\", \"Q4\"], y=....)"
|
855
|
-
]
|
856
|
-
},
|
857
|
-
{
|
858
|
-
"cell_type": "code",
|
859
|
-
"execution_count": 11,
|
860
|
-
"metadata": {},
|
861
|
-
"outputs": [
|
862
|
-
{
|
863
|
-
"data": {
|
864
|
-
"text/html": [
|
865
|
-
"\n",
|
866
|
-
" <div class=\"bk-root\" id=\"7c736348-c628-4980-aa44-32afa2f18572\" data-root-id=\"1742\"></div>\n"
|
867
|
-
]
|
868
|
-
},
|
869
|
-
"metadata": {},
|
870
|
-
"output_type": "display_data"
|
871
|
-
},
|
872
|
-
{
|
873
|
-
"data": {
|
874
|
-
"application/javascript": [
|
875
|
-
"(function(root) {\n",
|
876
|
-
" function embed_document(root) {\n",
|
877
|
-
" const docs_json = {\"c2a1ae7d-d475-4ece-bc04-1809b7c4ce7d\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1750\"}],\"center\":[{\"id\":\"1752\"},{\"id\":\"1756\"}],\"height\":250,\"left\":[{\"id\":\"1753\"}],\"renderers\":[{\"id\":\"1775\"},{\"id\":\"1781\"},{\"id\":\"1787\"}],\"title\":{\"id\":\"1841\"},\"toolbar\":{\"id\":\"1764\"},\"x_range\":{\"id\":\"1741\"},\"x_scale\":{\"id\":\"1746\"},\"y_range\":{\"id\":\"1744\"},\"y_scale\":{\"id\":\"1748\"}},\"id\":\"1742\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"1841\",\"type\":\"Title\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1777\"},\"glyph\":{\"id\":\"1778\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1780\"},\"nonselection_glyph\":{\"id\":\"1779\"},\"view\":{\"id\":\"1782\"}},\"id\":\"1781\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"data\":{\"x\":[\"Q1\",\"Q2\",\"Q3\",\"Q4\"],\"y\":[12,9,13,14]},\"selected\":{\"id\":\"1852\"},\"selection_policy\":{\"id\":\"1851\"}},\"id\":\"1777\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1845\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1754\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1844\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"axis\":{\"id\":\"1753\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1756\",\"type\":\"Grid\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"red\",\"line_width\":3,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1780\",\"type\":\"Line\"},{\"attributes\":{\"factors\":[[\"Q1\",\"jan\"],[\"Q1\",\"feb\"],[\"Q1\",\"mar\"],[\"Q2\",\"apr\"],[\"Q2\",\"may\"],[\"Q2\",\"jun\"],[\"Q3\",\"jul\"],[\"Q3\",\"aug\"],[\"Q3\",\"sep\"],[\"Q4\",\"oct\"],[\"Q4\",\"nov\"],[\"Q4\",\"dec\"]],\"range_padding\":0.1},\"id\":\"1741\",\"type\":\"FactorRange\"},{\"attributes\":{},\"id\":\"1848\",\"type\":\"AllLabels\"},{\"attributes\":{\"data\":{\"x\":[\"Q1\",\"Q2\",\"Q3\",\"Q4\"],\"y\":[12,9,13,14]},\"selected\":{\"id\":\"1854\"},\"selection_policy\":{\"id\":\"1853\"}},\"id\":\"1783\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1847\",\"type\":\"CategoricalTickFormatter\"},{\"attributes\":{},\"id\":\"1849\",\"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\"},\"top\":{\"field\":\"top\"},\"width\":{\"value\":0.9},\"x\":{\"field\":\"x\"}},\"id\":\"1774\",\"type\":\"VBar\"},{\"attributes\":{\"source\":{\"id\":\"1777\"}},\"id\":\"1782\",\"type\":\"CDSView\"},{\"attributes\":{\"data\":{\"top\":[10,12,16,9,10,8,12,13,14,14,12,16],\"x\":[[\"Q1\",\"jan\"],[\"Q1\",\"feb\"],[\"Q1\",\"mar\"],[\"Q2\",\"apr\"],[\"Q2\",\"may\"],[\"Q2\",\"jun\"],[\"Q3\",\"jul\"],[\"Q3\",\"aug\"],[\"Q3\",\"sep\"],[\"Q4\",\"oct\"],[\"Q4\",\"nov\"],[\"Q4\",\"dec\"]]},\"selected\":{\"id\":\"1850\"},\"selection_policy\":{\"id\":\"1849\"}},\"id\":\"1771\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"#1f77b4\"},\"hatch_alpha\":{\"value\":0.5},\"line_alpha\":{\"value\":0.5},\"line_color\":{\"value\":\"#1f77b4\"},\"top\":{\"field\":\"top\"},\"width\":{\"value\":0.9},\"x\":{\"field\":\"x\"}},\"id\":\"1772\",\"type\":\"VBar\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"red\",\"line_width\":3,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1779\",\"type\":\"Line\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1771\"},\"glyph\":{\"id\":\"1772\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1774\"},\"nonselection_glyph\":{\"id\":\"1773\"},\"view\":{\"id\":\"1776\"}},\"id\":\"1775\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"axis\":{\"id\":\"1750\"},\"coordinates\":null,\"grid_line_color\":null,\"group\":null,\"ticker\":null},\"id\":\"1752\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1850\",\"type\":\"Selection\"},{\"attributes\":{\"source\":{\"id\":\"1771\"}},\"id\":\"1776\",\"type\":\"CDSView\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1783\"},\"glyph\":{\"id\":\"1784\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1786\"},\"nonselection_glyph\":{\"id\":\"1785\"},\"view\":{\"id\":\"1788\"}},\"id\":\"1787\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1757\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"1761\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"1851\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1758\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"start\":0},\"id\":\"1744\",\"type\":\"DataRange1d\"},{\"attributes\":{\"overlay\":{\"id\":\"1763\"}},\"id\":\"1759\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"1852\",\"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\":\"1763\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"fill_color\":{\"value\":\"white\"},\"line_color\":{\"value\":\"red\"},\"size\":{\"value\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1784\",\"type\":\"Circle\"},{\"attributes\":{\"line_color\":\"red\",\"line_width\":3,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1778\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1760\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"1853\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1751\",\"type\":\"CategoricalTicker\"},{\"attributes\":{},\"id\":\"1854\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1746\",\"type\":\"CategoricalScale\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"white\"},\"hatch_alpha\":{\"value\":0.1},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"red\"},\"size\":{\"value\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1785\",\"type\":\"Circle\"},{\"attributes\":{\"tools\":[{\"id\":\"1757\"},{\"id\":\"1758\"},{\"id\":\"1759\"},{\"id\":\"1760\"},{\"id\":\"1761\"},{\"id\":\"1762\"}]},\"id\":\"1764\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"1762\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"1748\",\"type\":\"LinearScale\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1847\"},\"group\":null,\"major_label_policy\":{\"id\":\"1848\"},\"ticker\":{\"id\":\"1751\"}},\"id\":\"1750\",\"type\":\"CategoricalAxis\"},{\"attributes\":{\"source\":{\"id\":\"1783\"}},\"id\":\"1788\",\"type\":\"CDSView\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1844\"},\"group\":null,\"major_label_policy\":{\"id\":\"1845\"},\"ticker\":{\"id\":\"1754\"}},\"id\":\"1753\",\"type\":\"LinearAxis\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"white\"},\"hatch_alpha\":{\"value\":0.2},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"red\"},\"size\":{\"value\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1786\",\"type\":\"Circle\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#1f77b4\"},\"hatch_alpha\":{\"value\":0.1},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"top\":{\"field\":\"top\"},\"width\":{\"value\":0.9},\"x\":{\"field\":\"x\"}},\"id\":\"1773\",\"type\":\"VBar\"}],\"root_ids\":[\"1742\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.3\"}};\n",
|
878
|
-
" const render_items = [{\"docid\":\"c2a1ae7d-d475-4ece-bc04-1809b7c4ce7d\",\"root_ids\":[\"1742\"],\"roots\":{\"1742\":\"7c736348-c628-4980-aa44-32afa2f18572\"}}];\n",
|
879
|
-
" root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
|
880
|
-
" }\n",
|
881
|
-
" if (root.Bokeh !== undefined) {\n",
|
882
|
-
" embed_document(root);\n",
|
883
|
-
" } else {\n",
|
884
|
-
" let attempts = 0;\n",
|
885
|
-
" const timer = setInterval(function(root) {\n",
|
886
|
-
" if (root.Bokeh !== undefined) {\n",
|
887
|
-
" clearInterval(timer);\n",
|
888
|
-
" embed_document(root);\n",
|
889
|
-
" } else {\n",
|
890
|
-
" attempts++;\n",
|
891
|
-
" if (attempts > 100) {\n",
|
892
|
-
" clearInterval(timer);\n",
|
893
|
-
" console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n",
|
894
|
-
" }\n",
|
895
|
-
" }\n",
|
896
|
-
" }, 10, root)\n",
|
897
|
-
" }\n",
|
898
|
-
"})(window);"
|
899
|
-
],
|
900
|
-
"application/vnd.bokehjs_exec.v0+json": ""
|
901
|
-
},
|
902
|
-
"metadata": {
|
903
|
-
"application/vnd.bokehjs_exec.v0+json": {
|
904
|
-
"id": "1742"
|
905
|
-
}
|
906
|
-
},
|
907
|
-
"output_type": "display_data"
|
908
|
-
}
|
909
|
-
],
|
910
|
-
"source": [
|
911
|
-
"factors = [(\"Q1\", \"jan\"), (\"Q1\", \"feb\"), (\"Q1\", \"mar\"),\n",
|
912
|
-
" (\"Q2\", \"apr\"), (\"Q2\", \"may\"), (\"Q2\", \"jun\"),\n",
|
913
|
-
" (\"Q3\", \"jul\"), (\"Q3\", \"aug\"), (\"Q3\", \"sep\"),\n",
|
914
|
-
" (\"Q4\", \"oct\"), (\"Q4\", \"nov\"), (\"Q4\", \"dec\")]\n",
|
915
|
-
"\n",
|
916
|
-
"p = figure(x_range=FactorRange(*factors), plot_height=250)\n",
|
917
|
-
"\n",
|
918
|
-
"x = [ 10, 12, 16, 9, 10, 8, 12, 13, 14, 14, 12, 16 ]\n",
|
919
|
-
"p.vbar(x=factors, top=x, width=0.9, alpha=0.5)\n",
|
920
|
-
"\n",
|
921
|
-
"qs, aves = [\"Q1\", \"Q2\", \"Q3\", \"Q4\"], [12, 9, 13, 14]\n",
|
922
|
-
"p.line(x=qs, y=aves, color=\"red\", line_width=3)\n",
|
923
|
-
"p.circle(x=qs, y=aves, line_color=\"red\", fill_color=\"white\", size=10)\n",
|
924
|
-
"\n",
|
925
|
-
"p.y_range.start = 0\n",
|
926
|
-
"p.x_range.range_padding = 0.1\n",
|
927
|
-
"p.xgrid.grid_line_color = None\n",
|
928
|
-
"\n",
|
929
|
-
"show(p)"
|
930
|
-
]
|
931
|
-
},
|
932
|
-
{
|
933
|
-
"cell_type": "markdown",
|
934
|
-
"metadata": {},
|
935
|
-
"source": [
|
936
|
-
"## Using Pandas `GroupBy`\n",
|
937
|
-
"\n",
|
938
|
-
"We may want to make charts based on the results of \"group by\" operations. Bokeh can utilize Pandas `GroupBy` objects directly to make this simpler. Let's take a look at how Bokeh deals with `GroupBy` objects by examining the \"cars\" data set."
|
939
|
-
]
|
940
|
-
},
|
941
|
-
{
|
942
|
-
"cell_type": "code",
|
943
|
-
"execution_count": 12,
|
944
|
-
"metadata": {},
|
945
|
-
"outputs": [
|
946
|
-
{
|
947
|
-
"data": {
|
948
|
-
"text/html": [
|
949
|
-
"<div>\n",
|
950
|
-
"<style scoped>\n",
|
951
|
-
" .dataframe tbody tr th:only-of-type {\n",
|
952
|
-
" vertical-align: middle;\n",
|
953
|
-
" }\n",
|
954
|
-
"\n",
|
955
|
-
" .dataframe tbody tr th {\n",
|
956
|
-
" vertical-align: top;\n",
|
957
|
-
" }\n",
|
958
|
-
"\n",
|
959
|
-
" .dataframe thead th {\n",
|
960
|
-
" text-align: right;\n",
|
961
|
-
" }\n",
|
962
|
-
"</style>\n",
|
963
|
-
"<table border=\"1\" class=\"dataframe\">\n",
|
964
|
-
" <thead>\n",
|
965
|
-
" <tr style=\"text-align: right;\">\n",
|
966
|
-
" <th></th>\n",
|
967
|
-
" <th>mpg</th>\n",
|
968
|
-
" <th>cyl</th>\n",
|
969
|
-
" <th>displ</th>\n",
|
970
|
-
" <th>hp</th>\n",
|
971
|
-
" <th>weight</th>\n",
|
972
|
-
" <th>accel</th>\n",
|
973
|
-
" <th>yr</th>\n",
|
974
|
-
" <th>origin</th>\n",
|
975
|
-
" <th>name</th>\n",
|
976
|
-
" <th>mfr</th>\n",
|
977
|
-
" </tr>\n",
|
978
|
-
" </thead>\n",
|
979
|
-
" <tbody>\n",
|
980
|
-
" <tr>\n",
|
981
|
-
" <th>0</th>\n",
|
982
|
-
" <td>18.0</td>\n",
|
983
|
-
" <td>8</td>\n",
|
984
|
-
" <td>307.0</td>\n",
|
985
|
-
" <td>130</td>\n",
|
986
|
-
" <td>3504</td>\n",
|
987
|
-
" <td>12.0</td>\n",
|
988
|
-
" <td>70</td>\n",
|
989
|
-
" <td>North America</td>\n",
|
990
|
-
" <td>chevrolet chevelle malibu</td>\n",
|
991
|
-
" <td>chevrolet</td>\n",
|
992
|
-
" </tr>\n",
|
993
|
-
" <tr>\n",
|
994
|
-
" <th>1</th>\n",
|
995
|
-
" <td>15.0</td>\n",
|
996
|
-
" <td>8</td>\n",
|
997
|
-
" <td>350.0</td>\n",
|
998
|
-
" <td>165</td>\n",
|
999
|
-
" <td>3693</td>\n",
|
1000
|
-
" <td>11.5</td>\n",
|
1001
|
-
" <td>70</td>\n",
|
1002
|
-
" <td>North America</td>\n",
|
1003
|
-
" <td>buick skylark 320</td>\n",
|
1004
|
-
" <td>buick</td>\n",
|
1005
|
-
" </tr>\n",
|
1006
|
-
" <tr>\n",
|
1007
|
-
" <th>2</th>\n",
|
1008
|
-
" <td>18.0</td>\n",
|
1009
|
-
" <td>8</td>\n",
|
1010
|
-
" <td>318.0</td>\n",
|
1011
|
-
" <td>150</td>\n",
|
1012
|
-
" <td>3436</td>\n",
|
1013
|
-
" <td>11.0</td>\n",
|
1014
|
-
" <td>70</td>\n",
|
1015
|
-
" <td>North America</td>\n",
|
1016
|
-
" <td>plymouth satellite</td>\n",
|
1017
|
-
" <td>plymouth</td>\n",
|
1018
|
-
" </tr>\n",
|
1019
|
-
" <tr>\n",
|
1020
|
-
" <th>3</th>\n",
|
1021
|
-
" <td>16.0</td>\n",
|
1022
|
-
" <td>8</td>\n",
|
1023
|
-
" <td>304.0</td>\n",
|
1024
|
-
" <td>150</td>\n",
|
1025
|
-
" <td>3433</td>\n",
|
1026
|
-
" <td>12.0</td>\n",
|
1027
|
-
" <td>70</td>\n",
|
1028
|
-
" <td>North America</td>\n",
|
1029
|
-
" <td>amc rebel sst</td>\n",
|
1030
|
-
" <td>amc</td>\n",
|
1031
|
-
" </tr>\n",
|
1032
|
-
" <tr>\n",
|
1033
|
-
" <th>4</th>\n",
|
1034
|
-
" <td>17.0</td>\n",
|
1035
|
-
" <td>8</td>\n",
|
1036
|
-
" <td>302.0</td>\n",
|
1037
|
-
" <td>140</td>\n",
|
1038
|
-
" <td>3449</td>\n",
|
1039
|
-
" <td>10.5</td>\n",
|
1040
|
-
" <td>70</td>\n",
|
1041
|
-
" <td>North America</td>\n",
|
1042
|
-
" <td>ford torino</td>\n",
|
1043
|
-
" <td>ford</td>\n",
|
1044
|
-
" </tr>\n",
|
1045
|
-
" </tbody>\n",
|
1046
|
-
"</table>\n",
|
1047
|
-
"</div>"
|
1048
|
-
],
|
1049
|
-
"text/plain": [
|
1050
|
-
" mpg cyl displ hp weight accel yr origin \\\n",
|
1051
|
-
"0 18.0 8 307.0 130 3504 12.0 70 North America \n",
|
1052
|
-
"1 15.0 8 350.0 165 3693 11.5 70 North America \n",
|
1053
|
-
"2 18.0 8 318.0 150 3436 11.0 70 North America \n",
|
1054
|
-
"3 16.0 8 304.0 150 3433 12.0 70 North America \n",
|
1055
|
-
"4 17.0 8 302.0 140 3449 10.5 70 North America \n",
|
1056
|
-
"\n",
|
1057
|
-
" name mfr \n",
|
1058
|
-
"0 chevrolet chevelle malibu chevrolet \n",
|
1059
|
-
"1 buick skylark 320 buick \n",
|
1060
|
-
"2 plymouth satellite plymouth \n",
|
1061
|
-
"3 amc rebel sst amc \n",
|
1062
|
-
"4 ford torino ford "
|
1063
|
-
]
|
1064
|
-
},
|
1065
|
-
"execution_count": 12,
|
1066
|
-
"metadata": {},
|
1067
|
-
"output_type": "execute_result"
|
1068
|
-
}
|
1069
|
-
],
|
1070
|
-
"source": [
|
1071
|
-
"from bokeh.sampledata.autompg import autompg_clean as df\n",
|
1072
|
-
"\n",
|
1073
|
-
"df.cyl = df.cyl.astype(str)\n",
|
1074
|
-
"df.head()"
|
1075
|
-
]
|
1076
|
-
},
|
1077
|
-
{
|
1078
|
-
"cell_type": "markdown",
|
1079
|
-
"metadata": {},
|
1080
|
-
"source": [
|
1081
|
-
"Suppose we would like to display some values grouped according to `\"cyl\"`. If we create `df.groupby(('cyl'))` then call `group.describe()` we can see that Pandas automatically computes various statistics for each group. "
|
1082
|
-
]
|
1083
|
-
},
|
1084
|
-
{
|
1085
|
-
"cell_type": "code",
|
1086
|
-
"execution_count": 13,
|
1087
|
-
"metadata": {},
|
1088
|
-
"outputs": [
|
1089
|
-
{
|
1090
|
-
"data": {
|
1091
|
-
"text/html": [
|
1092
|
-
"<div>\n",
|
1093
|
-
"<style scoped>\n",
|
1094
|
-
" .dataframe tbody tr th:only-of-type {\n",
|
1095
|
-
" vertical-align: middle;\n",
|
1096
|
-
" }\n",
|
1097
|
-
"\n",
|
1098
|
-
" .dataframe tbody tr th {\n",
|
1099
|
-
" vertical-align: top;\n",
|
1100
|
-
" }\n",
|
1101
|
-
"\n",
|
1102
|
-
" .dataframe thead tr th {\n",
|
1103
|
-
" text-align: left;\n",
|
1104
|
-
" }\n",
|
1105
|
-
"\n",
|
1106
|
-
" .dataframe thead tr:last-of-type th {\n",
|
1107
|
-
" text-align: right;\n",
|
1108
|
-
" }\n",
|
1109
|
-
"</style>\n",
|
1110
|
-
"<table border=\"1\" class=\"dataframe\">\n",
|
1111
|
-
" <thead>\n",
|
1112
|
-
" <tr>\n",
|
1113
|
-
" <th></th>\n",
|
1114
|
-
" <th colspan=\"8\" halign=\"left\">mpg</th>\n",
|
1115
|
-
" <th colspan=\"2\" halign=\"left\">displ</th>\n",
|
1116
|
-
" <th>...</th>\n",
|
1117
|
-
" <th colspan=\"2\" halign=\"left\">accel</th>\n",
|
1118
|
-
" <th colspan=\"8\" halign=\"left\">yr</th>\n",
|
1119
|
-
" </tr>\n",
|
1120
|
-
" <tr>\n",
|
1121
|
-
" <th></th>\n",
|
1122
|
-
" <th>count</th>\n",
|
1123
|
-
" <th>mean</th>\n",
|
1124
|
-
" <th>std</th>\n",
|
1125
|
-
" <th>min</th>\n",
|
1126
|
-
" <th>25%</th>\n",
|
1127
|
-
" <th>50%</th>\n",
|
1128
|
-
" <th>75%</th>\n",
|
1129
|
-
" <th>max</th>\n",
|
1130
|
-
" <th>count</th>\n",
|
1131
|
-
" <th>mean</th>\n",
|
1132
|
-
" <th>...</th>\n",
|
1133
|
-
" <th>75%</th>\n",
|
1134
|
-
" <th>max</th>\n",
|
1135
|
-
" <th>count</th>\n",
|
1136
|
-
" <th>mean</th>\n",
|
1137
|
-
" <th>std</th>\n",
|
1138
|
-
" <th>min</th>\n",
|
1139
|
-
" <th>25%</th>\n",
|
1140
|
-
" <th>50%</th>\n",
|
1141
|
-
" <th>75%</th>\n",
|
1142
|
-
" <th>max</th>\n",
|
1143
|
-
" </tr>\n",
|
1144
|
-
" <tr>\n",
|
1145
|
-
" <th>cyl</th>\n",
|
1146
|
-
" <th></th>\n",
|
1147
|
-
" <th></th>\n",
|
1148
|
-
" <th></th>\n",
|
1149
|
-
" <th></th>\n",
|
1150
|
-
" <th></th>\n",
|
1151
|
-
" <th></th>\n",
|
1152
|
-
" <th></th>\n",
|
1153
|
-
" <th></th>\n",
|
1154
|
-
" <th></th>\n",
|
1155
|
-
" <th></th>\n",
|
1156
|
-
" <th></th>\n",
|
1157
|
-
" <th></th>\n",
|
1158
|
-
" <th></th>\n",
|
1159
|
-
" <th></th>\n",
|
1160
|
-
" <th></th>\n",
|
1161
|
-
" <th></th>\n",
|
1162
|
-
" <th></th>\n",
|
1163
|
-
" <th></th>\n",
|
1164
|
-
" <th></th>\n",
|
1165
|
-
" <th></th>\n",
|
1166
|
-
" <th></th>\n",
|
1167
|
-
" </tr>\n",
|
1168
|
-
" </thead>\n",
|
1169
|
-
" <tbody>\n",
|
1170
|
-
" <tr>\n",
|
1171
|
-
" <th>3</th>\n",
|
1172
|
-
" <td>4.0</td>\n",
|
1173
|
-
" <td>20.550000</td>\n",
|
1174
|
-
" <td>2.564501</td>\n",
|
1175
|
-
" <td>18.0</td>\n",
|
1176
|
-
" <td>18.75</td>\n",
|
1177
|
-
" <td>20.25</td>\n",
|
1178
|
-
" <td>22.05</td>\n",
|
1179
|
-
" <td>23.7</td>\n",
|
1180
|
-
" <td>4.0</td>\n",
|
1181
|
-
" <td>72.500000</td>\n",
|
1182
|
-
" <td>...</td>\n",
|
1183
|
-
" <td>13.5</td>\n",
|
1184
|
-
" <td>13.5</td>\n",
|
1185
|
-
" <td>4.0</td>\n",
|
1186
|
-
" <td>75.500000</td>\n",
|
1187
|
-
" <td>3.696846</td>\n",
|
1188
|
-
" <td>72.0</td>\n",
|
1189
|
-
" <td>72.75</td>\n",
|
1190
|
-
" <td>75.0</td>\n",
|
1191
|
-
" <td>77.75</td>\n",
|
1192
|
-
" <td>80.0</td>\n",
|
1193
|
-
" </tr>\n",
|
1194
|
-
" <tr>\n",
|
1195
|
-
" <th>4</th>\n",
|
1196
|
-
" <td>199.0</td>\n",
|
1197
|
-
" <td>29.283920</td>\n",
|
1198
|
-
" <td>5.670546</td>\n",
|
1199
|
-
" <td>18.0</td>\n",
|
1200
|
-
" <td>25.00</td>\n",
|
1201
|
-
" <td>28.40</td>\n",
|
1202
|
-
" <td>32.95</td>\n",
|
1203
|
-
" <td>46.6</td>\n",
|
1204
|
-
" <td>199.0</td>\n",
|
1205
|
-
" <td>109.670854</td>\n",
|
1206
|
-
" <td>...</td>\n",
|
1207
|
-
" <td>18.0</td>\n",
|
1208
|
-
" <td>24.8</td>\n",
|
1209
|
-
" <td>199.0</td>\n",
|
1210
|
-
" <td>77.030151</td>\n",
|
1211
|
-
" <td>3.737484</td>\n",
|
1212
|
-
" <td>70.0</td>\n",
|
1213
|
-
" <td>74.00</td>\n",
|
1214
|
-
" <td>77.0</td>\n",
|
1215
|
-
" <td>80.00</td>\n",
|
1216
|
-
" <td>82.0</td>\n",
|
1217
|
-
" </tr>\n",
|
1218
|
-
" <tr>\n",
|
1219
|
-
" <th>5</th>\n",
|
1220
|
-
" <td>3.0</td>\n",
|
1221
|
-
" <td>27.366667</td>\n",
|
1222
|
-
" <td>8.228204</td>\n",
|
1223
|
-
" <td>20.3</td>\n",
|
1224
|
-
" <td>22.85</td>\n",
|
1225
|
-
" <td>25.40</td>\n",
|
1226
|
-
" <td>30.90</td>\n",
|
1227
|
-
" <td>36.4</td>\n",
|
1228
|
-
" <td>3.0</td>\n",
|
1229
|
-
" <td>145.000000</td>\n",
|
1230
|
-
" <td>...</td>\n",
|
1231
|
-
" <td>20.0</td>\n",
|
1232
|
-
" <td>20.1</td>\n",
|
1233
|
-
" <td>3.0</td>\n",
|
1234
|
-
" <td>79.000000</td>\n",
|
1235
|
-
" <td>1.000000</td>\n",
|
1236
|
-
" <td>78.0</td>\n",
|
1237
|
-
" <td>78.50</td>\n",
|
1238
|
-
" <td>79.0</td>\n",
|
1239
|
-
" <td>79.50</td>\n",
|
1240
|
-
" <td>80.0</td>\n",
|
1241
|
-
" </tr>\n",
|
1242
|
-
" <tr>\n",
|
1243
|
-
" <th>6</th>\n",
|
1244
|
-
" <td>83.0</td>\n",
|
1245
|
-
" <td>19.973494</td>\n",
|
1246
|
-
" <td>3.828809</td>\n",
|
1247
|
-
" <td>15.0</td>\n",
|
1248
|
-
" <td>18.00</td>\n",
|
1249
|
-
" <td>19.00</td>\n",
|
1250
|
-
" <td>21.00</td>\n",
|
1251
|
-
" <td>38.0</td>\n",
|
1252
|
-
" <td>83.0</td>\n",
|
1253
|
-
" <td>218.361446</td>\n",
|
1254
|
-
" <td>...</td>\n",
|
1255
|
-
" <td>17.6</td>\n",
|
1256
|
-
" <td>21.0</td>\n",
|
1257
|
-
" <td>83.0</td>\n",
|
1258
|
-
" <td>75.951807</td>\n",
|
1259
|
-
" <td>3.264381</td>\n",
|
1260
|
-
" <td>70.0</td>\n",
|
1261
|
-
" <td>74.00</td>\n",
|
1262
|
-
" <td>76.0</td>\n",
|
1263
|
-
" <td>78.00</td>\n",
|
1264
|
-
" <td>82.0</td>\n",
|
1265
|
-
" </tr>\n",
|
1266
|
-
" <tr>\n",
|
1267
|
-
" <th>8</th>\n",
|
1268
|
-
" <td>103.0</td>\n",
|
1269
|
-
" <td>14.963107</td>\n",
|
1270
|
-
" <td>2.836284</td>\n",
|
1271
|
-
" <td>9.0</td>\n",
|
1272
|
-
" <td>13.00</td>\n",
|
1273
|
-
" <td>14.00</td>\n",
|
1274
|
-
" <td>16.00</td>\n",
|
1275
|
-
" <td>26.6</td>\n",
|
1276
|
-
" <td>103.0</td>\n",
|
1277
|
-
" <td>345.009709</td>\n",
|
1278
|
-
" <td>...</td>\n",
|
1279
|
-
" <td>14.0</td>\n",
|
1280
|
-
" <td>22.2</td>\n",
|
1281
|
-
" <td>103.0</td>\n",
|
1282
|
-
" <td>73.902913</td>\n",
|
1283
|
-
" <td>3.021214</td>\n",
|
1284
|
-
" <td>70.0</td>\n",
|
1285
|
-
" <td>72.00</td>\n",
|
1286
|
-
" <td>73.0</td>\n",
|
1287
|
-
" <td>76.00</td>\n",
|
1288
|
-
" <td>81.0</td>\n",
|
1289
|
-
" </tr>\n",
|
1290
|
-
" </tbody>\n",
|
1291
|
-
"</table>\n",
|
1292
|
-
"<p>5 rows × 48 columns</p>\n",
|
1293
|
-
"</div>"
|
1294
|
-
],
|
1295
|
-
"text/plain": [
|
1296
|
-
" mpg displ \\\n",
|
1297
|
-
" count mean std min 25% 50% 75% max count \n",
|
1298
|
-
"cyl \n",
|
1299
|
-
"3 4.0 20.550000 2.564501 18.0 18.75 20.25 22.05 23.7 4.0 \n",
|
1300
|
-
"4 199.0 29.283920 5.670546 18.0 25.00 28.40 32.95 46.6 199.0 \n",
|
1301
|
-
"5 3.0 27.366667 8.228204 20.3 22.85 25.40 30.90 36.4 3.0 \n",
|
1302
|
-
"6 83.0 19.973494 3.828809 15.0 18.00 19.00 21.00 38.0 83.0 \n",
|
1303
|
-
"8 103.0 14.963107 2.836284 9.0 13.00 14.00 16.00 26.6 103.0 \n",
|
1304
|
-
"\n",
|
1305
|
-
" ... accel yr \\\n",
|
1306
|
-
" mean ... 75% max count mean std min 25% \n",
|
1307
|
-
"cyl ... \n",
|
1308
|
-
"3 72.500000 ... 13.5 13.5 4.0 75.500000 3.696846 72.0 72.75 \n",
|
1309
|
-
"4 109.670854 ... 18.0 24.8 199.0 77.030151 3.737484 70.0 74.00 \n",
|
1310
|
-
"5 145.000000 ... 20.0 20.1 3.0 79.000000 1.000000 78.0 78.50 \n",
|
1311
|
-
"6 218.361446 ... 17.6 21.0 83.0 75.951807 3.264381 70.0 74.00 \n",
|
1312
|
-
"8 345.009709 ... 14.0 22.2 103.0 73.902913 3.021214 70.0 72.00 \n",
|
1313
|
-
"\n",
|
1314
|
-
" \n",
|
1315
|
-
" 50% 75% max \n",
|
1316
|
-
"cyl \n",
|
1317
|
-
"3 75.0 77.75 80.0 \n",
|
1318
|
-
"4 77.0 80.00 82.0 \n",
|
1319
|
-
"5 79.0 79.50 80.0 \n",
|
1320
|
-
"6 76.0 78.00 82.0 \n",
|
1321
|
-
"8 73.0 76.00 81.0 \n",
|
1322
|
-
"\n",
|
1323
|
-
"[5 rows x 48 columns]"
|
1324
|
-
]
|
1325
|
-
},
|
1326
|
-
"execution_count": 13,
|
1327
|
-
"metadata": {},
|
1328
|
-
"output_type": "execute_result"
|
1329
|
-
}
|
1330
|
-
],
|
1331
|
-
"source": [
|
1332
|
-
"group = df.groupby(('cyl'))\n",
|
1333
|
-
"\n",
|
1334
|
-
"group.describe()"
|
1335
|
-
]
|
1336
|
-
},
|
1337
|
-
{
|
1338
|
-
"cell_type": "markdown",
|
1339
|
-
"metadata": {},
|
1340
|
-
"source": [
|
1341
|
-
"Bokeh allows us to create a `ColumnDataSource` directly from Pandas `GroupBy` objects, and when this happens, the data source is automatically filled with the summary values from `group.desribe()`. Observe the column names below, which correspond to the output above."
|
1342
|
-
]
|
1343
|
-
},
|
1344
|
-
{
|
1345
|
-
"cell_type": "code",
|
1346
|
-
"execution_count": 14,
|
1347
|
-
"metadata": {},
|
1348
|
-
"outputs": [
|
1349
|
-
{
|
1350
|
-
"data": {
|
1351
|
-
"text/plain": [
|
1352
|
-
"'cyl,mpg_count,mpg_mean,mpg_std,mpg_min,mpg_25%,mpg_50%,mpg_75%,mpg_max,displ_count,displ_mean,displ_std,displ_min,displ_25%,displ_50%,displ_75%,displ_max,hp_count,hp_mean,hp_std,hp_min,hp_25%,hp_50%,hp_75%,hp_max,weight_count,weight_mean,weight_std,weight_min,weight_25%,weight_50%,weight_75%,weight_max,accel_count,accel_mean,accel_std,accel_min,accel_25%,accel_50%,accel_75%,accel_max,yr_count,yr_mean,yr_std,yr_min,yr_25%,yr_50%,yr_75%,yr_max'"
|
1353
|
-
]
|
1354
|
-
},
|
1355
|
-
"execution_count": 14,
|
1356
|
-
"metadata": {},
|
1357
|
-
"output_type": "execute_result"
|
1358
|
-
}
|
1359
|
-
],
|
1360
|
-
"source": [
|
1361
|
-
"source = ColumnDataSource(group)\n",
|
1362
|
-
"\n",
|
1363
|
-
"\",\".join(source.column_names)"
|
1364
|
-
]
|
1365
|
-
},
|
1366
|
-
{
|
1367
|
-
"cell_type": "markdown",
|
1368
|
-
"metadata": {},
|
1369
|
-
"source": [
|
1370
|
-
"Knowing these column names, we can immediately create bar charts based on Pandas `GroupBy` objects. The example below plots the aveage MPG per cylinder, i.e. columns `\"mpg_mean\"` vs `\"cyl\"`"
|
1371
|
-
]
|
1372
|
-
},
|
1373
|
-
{
|
1374
|
-
"cell_type": "code",
|
1375
|
-
"execution_count": 15,
|
1376
|
-
"metadata": {},
|
1377
|
-
"outputs": [
|
1378
|
-
{
|
1379
|
-
"data": {
|
1380
|
-
"text/html": [
|
1381
|
-
"\n",
|
1382
|
-
" <div class=\"bk-root\" id=\"20cccf9d-d397-4620-ae13-a7d84e8e9cfa\" data-root-id=\"1933\"></div>\n"
|
1383
|
-
]
|
1384
|
-
},
|
1385
|
-
"metadata": {},
|
1386
|
-
"output_type": "display_data"
|
1387
|
-
},
|
1388
|
-
{
|
1389
|
-
"data": {
|
1390
|
-
"application/javascript": [
|
1391
|
-
"(function(root) {\n",
|
1392
|
-
" function embed_document(root) {\n",
|
1393
|
-
" const docs_json = {\"594035d7-a16f-45f4-8f55-60dcbd98275f\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1942\"}],\"center\":[{\"id\":\"1944\"},{\"id\":\"1948\"}],\"height\":350,\"left\":[{\"id\":\"1945\"}],\"renderers\":[{\"id\":\"1967\"}],\"title\":{\"id\":\"2036\"},\"toolbar\":{\"id\":\"1956\"},\"x_range\":{\"id\":\"1934\"},\"x_scale\":{\"id\":\"1938\"},\"y_range\":{\"id\":\"1936\"},\"y_scale\":{\"id\":\"1940\"}},\"id\":\"1933\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"source\":{\"id\":\"1931\"}},\"id\":\"1968\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1950\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"1938\",\"type\":\"CategoricalScale\"},{\"attributes\":{},\"id\":\"1949\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"2039\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"2045\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1940\",\"type\":\"LinearScale\"},{\"attributes\":{\"fill_color\":{\"field\":\"cyl\",\"transform\":{\"id\":\"1932\"}},\"line_color\":{\"value\":\"white\"},\"top\":{\"field\":\"mpg_mean\"},\"x\":{\"field\":\"cyl\"}},\"id\":\"1964\",\"type\":\"VBar\"},{\"attributes\":{\"data\":{\"accel_25%\":{\"__ndarray__\":\"AAAAAACAKkCamZmZmZktQGZmZmZm5jFAmpmZmZkZLkAAAAAAAAAnQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"accel_50%\":{\"__ndarray__\":\"AAAAAAAAK0AzMzMzMzMwQGZmZmZm5jNAAAAAAAAAMEAAAAAAAAAqQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"accel_75%\":{\"__ndarray__\":\"AAAAAAAAK0AAAAAAAAAyQAAAAAAAADRAmpmZmZmZMUAAAAAAAAAsQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"accel_count\":{\"__ndarray__\":\"AAAAAAAAEEAAAAAAAOBoQAAAAAAAAAhAAAAAAADAVEAAAAAAAMBZQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"accel_max\":{\"__ndarray__\":\"AAAAAAAAK0DNzMzMzMw4QJqZmZmZGTRAAAAAAAAANUAzMzMzMzM2QA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"accel_mean\":{\"__ndarray__\":\"AAAAAACAKkCRxCwG+JQwQCIiIiIiojJA7d9LWxRBMEA+LI1MIukpQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"accel_min\":{\"__ndarray__\":\"AAAAAAAAKUAzMzMzMzMnQM3MzMzMzC9AmpmZmZmZJkAAAAAAAAAgQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"accel_std\":{\"__ndarray__\":\"AAAAAAAA4D+b1TA5wxADQO1jrP039AJA0StM4BRBAED/ZpysTswBQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"cyl\":[\"3\",\"4\",\"5\",\"6\",\"8\"],\"displ_25%\":{\"__ndarray__\":\"AAAAAACAUUAAAAAAAMBWQAAAAAAAgF9AAAAAAADwaEAAAAAAABBzQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"displ_50%\":{\"__ndarray__\":\"AAAAAACAUUAAAAAAAEBaQAAAAAAAYGBAAAAAAADgbEAAAAAAAOB1QA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"displ_75%\":{\"__ndarray__\":\"AAAAAAAgUkAAAAAAAEBeQAAAAAAAoGNAAAAAAABAb0AAAAAAAIB2QA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"displ_count\":{\"__ndarray__\":\"AAAAAAAAEEAAAAAAAOBoQAAAAAAAAAhAAAAAAADAVEAAAAAAAMBZQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"displ_max\":{\"__ndarray__\":\"AAAAAAAAVEAAAAAAAIBjQAAAAAAA4GZAAAAAAABgcEAAAAAAAHB8QA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"displ_mean\":{\"__ndarray__\":\"AAAAAAAgUkD/9sBG72pbQAAAAAAAIGJAmjq/9pBLa0DJeVnEJ5B1QA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"displ_min\":{\"__ndarray__\":\"AAAAAACAUUAAAAAAAABRQAAAAAAAQF5AAAAAAAAgYkAAAAAAAEBwQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"displ_std\":{\"__ndarray__\":\"AAAAAAAAFEC8furRdmA1QLmT4WuwpEBAT4BvAbA2QEDXs8ZGYGNHQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"hp_25%\":{\"__ndarray__\":\"AAAAAADQV0AAAAAAAABRQAAAAAAAAFJAAAAAAAAgV0AAAAAAAIBhQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"hp_50%\":{\"__ndarray__\":\"AAAAAACgWEAAAAAAAIBTQAAAAAAAQFNAAAAAAAAAWUAAAAAAAMBiQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"hp_75%\":{\"__ndarray__\":\"AAAAAACgWUAAAAAAAABWQAAAAAAAgFZAAAAAAACAW0AAAAAAAOBlQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"hp_count\":{\"__ndarray__\":\"AAAAAAAAEEAAAAAAAOBoQAAAAAAAAAhAAAAAAADAVEAAAAAAAMBZQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"hp_max\":{\"__ndarray__\":\"AAAAAACAW0AAAAAAAMBcQAAAAAAAwFlAAAAAAACgZEAAAAAAAMBsQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"hp_mean\":{\"__ndarray__\":\"AAAAAADQWEB2PKeSApJTQFVVVVVVlVRAsD3ksmJgWUDCfquNocljQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"hp_min\":{\"__ndarray__\":\"AAAAAACAVkAAAAAAAABHQAAAAAAAwFBAAAAAAAAAUkAAAAAAAIBWQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"hp_std\":{\"__ndarray__\":\"sTIWI2yaIECGr0Go0wstQDKsjxZJlTJAxZAwIvaeLEBQwZb3G3Q8QA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"mpg_25%\":{\"__ndarray__\":\"AAAAAADAMkAAAAAAAAA5QJqZmZmZ2TZAAAAAAAAAMkAAAAAAAAAqQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"mpg_50%\":{\"__ndarray__\":\"AAAAAABANEBmZmZmZmY8QGZmZmZmZjlAAAAAAAAAM0AAAAAAAAAsQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"mpg_75%\":{\"__ndarray__\":\"zczMzMwMNkCamZmZmXlAQGZmZmZm5j5AAAAAAAAANUAAAAAAAAAwQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"mpg_count\":{\"__ndarray__\":\"AAAAAAAAEEAAAAAAAOBoQAAAAAAAAAhAAAAAAADAVEAAAAAAAMBZQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"mpg_max\":{\"__ndarray__\":\"MzMzMzOzN0DNzMzMzExHQDMzMzMzM0JAAAAAAAAAQ0CamZmZmZk6QA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"mpg_mean\":{\"__ndarray__\":\"zczMzMyMNEBwD2z0rkg9QN3d3d3dXTtA6lu15jb5M0BgwH9VHO0tQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"mpg_min\":{\"__ndarray__\":\"AAAAAAAAMkAAAAAAAAAyQM3MzMzMTDRAAAAAAAAALkAAAAAAAAAiQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"mpg_std\":{\"__ndarray__\":\"ca9eOxmEBECNLXOmo64WQOWG1RfXdCBALURKf2ahDkC0cW7BtbAGQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"weight_25%\":{\"__ndarray__\":\"AAAAAADNoUAAAAAAAP6fQAAAAAAAlKZAAAAAAAACp0AAAAAAAK6tQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"weight_50%\":{\"__ndarray__\":\"AAAAAACOokAAAAAAAGyhQAAAAAAADKdAAAAAAAAUqUAAAAAAACywQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"weight_75%\":{\"__ndarray__\":\"AAAAAAB+o0AAAAAAAAWkQAAAAAAAUKlAAAAAAADOqkAAAAAAgDOxQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"weight_count\":{\"__ndarray__\":\"AAAAAAAAEEAAAAAAAOBoQAAAAAAAAAhAAAAAAADAVEAAAAAAAMBZQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"weight_max\":{\"__ndarray__\":\"AAAAAABApUAAAAAAAIypQAAAAAAAlKtAAAAAAACGrkAAAAAAABS0QA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"weight_mean\":{\"__ndarray__\":\"AAAAAAC9okAsMl+aOAKiQKuqqqqqPqhAjqbOrz0EqUBD0x3stxKwQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"weight_min\":{\"__ndarray__\":\"AAAAAACYoEAAAAAAADSZQAAAAAAAHKZAAAAAAABQo0AAAAAAAByoQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"weight_std\":{\"__ndarray__\":\"udhs7B3ybkC6+VSg9G11QA9pSX6AZXdAdmeNgiLGdEC+UR6eVA18QA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"yr_25%\":{\"__ndarray__\":\"AAAAAAAwUkAAAAAAAIBSQAAAAAAAoFNAAAAAAACAUkAAAAAAAABSQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"yr_50%\":{\"__ndarray__\":\"AAAAAADAUkAAAAAAAEBTQAAAAAAAwFNAAAAAAAAAU0AAAAAAAEBSQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"yr_75%\":{\"__ndarray__\":\"AAAAAABwU0AAAAAAAABUQAAAAAAA4FNAAAAAAACAU0AAAAAAAABTQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"yr_count\":{\"__ndarray__\":\"AAAAAAAAEEAAAAAAAOBoQAAAAAAAAAhAAAAAAADAVEAAAAAAAMBZQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"yr_max\":{\"__ndarray__\":\"AAAAAAAAVEAAAAAAAIBUQAAAAAAAAFRAAAAAAACAVEAAAAAAAEBUQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"yr_mean\":{\"__ndarray__\":\"AAAAAADgUkDEWG397UFTQAAAAAAAwFNAghLeaOr8UkCL+ARSyXlSQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"yr_min\":{\"__ndarray__\":\"AAAAAAAAUkAAAAAAAIBRQAAAAAAAgFNAAAAAAACAUUAAAAAAAIBRQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"yr_std\":{\"__ndarray__\":\"p1MQvCOTDUAd5PLGXeYNQAAAAAAAAPA/p0OY+nMdCkAEv1x2cisIQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]}},\"selected\":{\"id\":\"2045\"},\"selection_policy\":{\"id\":\"2044\"}},\"id\":\"1931\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"tools\":[{\"id\":\"1949\"},{\"id\":\"1950\"},{\"id\":\"1951\"},{\"id\":\"1952\"},{\"id\":\"1953\"},{\"id\":\"1954\"}]},\"id\":\"1956\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"1953\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"2043\",\"type\":\"AllLabels\"},{\"attributes\":{\"factors\":[\"3\",\"4\",\"5\",\"6\",\"8\"],\"palette\":[\"#2b83ba\",\"#abdda4\",\"#ffffbf\",\"#fdae61\",\"#d7191c\"]},\"id\":\"1932\",\"type\":\"CategoricalColorMapper\"},{\"attributes\":{\"axis_label\":\"Mean MPG\",\"coordinates\":null,\"formatter\":{\"id\":\"2039\"},\"group\":null,\"major_label_policy\":{\"id\":\"2040\"},\"ticker\":{\"id\":\"1946\"}},\"id\":\"1945\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"2042\",\"type\":\"CategoricalTickFormatter\"},{\"attributes\":{\"axis_label\":\"number of cylinders\",\"coordinates\":null,\"formatter\":{\"id\":\"2042\"},\"group\":null,\"major_label_policy\":{\"id\":\"2043\"},\"ticker\":{\"id\":\"1943\"}},\"id\":\"1942\",\"type\":\"CategoricalAxis\"},{\"attributes\":{\"start\":0},\"id\":\"1936\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1946\",\"type\":\"BasicTicker\"},{\"attributes\":{\"factors\":[\"3\",\"4\",\"5\",\"6\",\"8\"]},\"id\":\"1934\",\"type\":\"FactorRange\"},{\"attributes\":{\"overlay\":{\"id\":\"1955\"}},\"id\":\"1951\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"field\":\"cyl\",\"transform\":{\"id\":\"1932\"}},\"hatch_alpha\":{\"value\":0.1},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"white\"},\"top\":{\"field\":\"mpg_mean\"},\"x\":{\"field\":\"cyl\"}},\"id\":\"1965\",\"type\":\"VBar\"},{\"attributes\":{},\"id\":\"1952\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"1943\",\"type\":\"CategoricalTicker\"},{\"attributes\":{\"axis\":{\"id\":\"1942\"},\"coordinates\":null,\"grid_line_color\":null,\"group\":null,\"ticker\":null},\"id\":\"1944\",\"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\":\"1955\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"2036\",\"type\":\"Title\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1931\"},\"glyph\":{\"id\":\"1964\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1966\"},\"nonselection_glyph\":{\"id\":\"1965\"},\"view\":{\"id\":\"1968\"}},\"id\":\"1967\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"field\":\"cyl\",\"transform\":{\"id\":\"1932\"}},\"hatch_alpha\":{\"value\":0.2},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"white\"},\"top\":{\"field\":\"mpg_mean\"},\"x\":{\"field\":\"cyl\"}},\"id\":\"1966\",\"type\":\"VBar\"},{\"attributes\":{},\"id\":\"2044\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"2040\",\"type\":\"AllLabels\"},{\"attributes\":{\"axis\":{\"id\":\"1945\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1948\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1954\",\"type\":\"HelpTool\"}],\"root_ids\":[\"1933\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.3\"}};\n",
|
1394
|
-
" const render_items = [{\"docid\":\"594035d7-a16f-45f4-8f55-60dcbd98275f\",\"root_ids\":[\"1933\"],\"roots\":{\"1933\":\"20cccf9d-d397-4620-ae13-a7d84e8e9cfa\"}}];\n",
|
1395
|
-
" root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
|
1396
|
-
" }\n",
|
1397
|
-
" if (root.Bokeh !== undefined) {\n",
|
1398
|
-
" embed_document(root);\n",
|
1399
|
-
" } else {\n",
|
1400
|
-
" let attempts = 0;\n",
|
1401
|
-
" const timer = setInterval(function(root) {\n",
|
1402
|
-
" if (root.Bokeh !== undefined) {\n",
|
1403
|
-
" clearInterval(timer);\n",
|
1404
|
-
" embed_document(root);\n",
|
1405
|
-
" } else {\n",
|
1406
|
-
" attempts++;\n",
|
1407
|
-
" if (attempts > 100) {\n",
|
1408
|
-
" clearInterval(timer);\n",
|
1409
|
-
" console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n",
|
1410
|
-
" }\n",
|
1411
|
-
" }\n",
|
1412
|
-
" }, 10, root)\n",
|
1413
|
-
" }\n",
|
1414
|
-
"})(window);"
|
1415
|
-
],
|
1416
|
-
"application/vnd.bokehjs_exec.v0+json": ""
|
1417
|
-
},
|
1418
|
-
"metadata": {
|
1419
|
-
"application/vnd.bokehjs_exec.v0+json": {
|
1420
|
-
"id": "1933"
|
1421
|
-
}
|
1422
|
-
},
|
1423
|
-
"output_type": "display_data"
|
1424
|
-
}
|
1425
|
-
],
|
1426
|
-
"source": [
|
1427
|
-
"from bokeh.palettes import Spectral5\n",
|
1428
|
-
"\n",
|
1429
|
-
"cyl_cmap = factor_cmap('cyl', palette=Spectral5, factors=sorted(df.cyl.unique()))\n",
|
1430
|
-
"\n",
|
1431
|
-
"p = figure(plot_height=350, x_range=group)\n",
|
1432
|
-
"p.vbar(x='cyl', top='mpg_mean', width=1, line_color=\"white\", \n",
|
1433
|
-
" fill_color=cyl_cmap, source=source)\n",
|
1434
|
-
"\n",
|
1435
|
-
"p.xgrid.grid_line_color = None\n",
|
1436
|
-
"p.xaxis.axis_label = \"number of cylinders\"\n",
|
1437
|
-
"p.yaxis.axis_label = \"Mean MPG\"\n",
|
1438
|
-
"p.y_range.start = 0\n",
|
1439
|
-
"\n",
|
1440
|
-
"show(p)"
|
1441
|
-
]
|
1442
|
-
},
|
1443
|
-
{
|
1444
|
-
"cell_type": "code",
|
1445
|
-
"execution_count": 16,
|
1446
|
-
"metadata": {},
|
1447
|
-
"outputs": [],
|
1448
|
-
"source": [
|
1449
|
-
"# Exercise: Use the same dataset to make a similar plot of mean horsepower (hp) by origin\n"
|
1450
|
-
]
|
1451
|
-
},
|
1452
|
-
{
|
1453
|
-
"cell_type": "markdown",
|
1454
|
-
"metadata": {},
|
1455
|
-
"source": [
|
1456
|
-
"## Categorical Scatterplots\n",
|
1457
|
-
"\n",
|
1458
|
-
"So far we have seen Categorical data used together with various bar glyphs. But Bokeh can use categorical coordinates for most any glyphs. Let's create a scatter plot with categorical coordinates on one axis. The `commits` data set simply has a series datetimes of GitHub commit. Additional columns to express the day and hour of day for each commit have already been added."
|
1459
|
-
]
|
1460
|
-
},
|
1461
|
-
{
|
1462
|
-
"cell_type": "code",
|
1463
|
-
"execution_count": 17,
|
1464
|
-
"metadata": {},
|
1465
|
-
"outputs": [
|
1466
|
-
{
|
1467
|
-
"data": {
|
1468
|
-
"text/html": [
|
1469
|
-
"<div>\n",
|
1470
|
-
"<style scoped>\n",
|
1471
|
-
" .dataframe tbody tr th:only-of-type {\n",
|
1472
|
-
" vertical-align: middle;\n",
|
1473
|
-
" }\n",
|
1474
|
-
"\n",
|
1475
|
-
" .dataframe tbody tr th {\n",
|
1476
|
-
" vertical-align: top;\n",
|
1477
|
-
" }\n",
|
1478
|
-
"\n",
|
1479
|
-
" .dataframe thead th {\n",
|
1480
|
-
" text-align: right;\n",
|
1481
|
-
" }\n",
|
1482
|
-
"</style>\n",
|
1483
|
-
"<table border=\"1\" class=\"dataframe\">\n",
|
1484
|
-
" <thead>\n",
|
1485
|
-
" <tr style=\"text-align: right;\">\n",
|
1486
|
-
" <th></th>\n",
|
1487
|
-
" <th>day</th>\n",
|
1488
|
-
" <th>time</th>\n",
|
1489
|
-
" </tr>\n",
|
1490
|
-
" <tr>\n",
|
1491
|
-
" <th>datetime</th>\n",
|
1492
|
-
" <th></th>\n",
|
1493
|
-
" <th></th>\n",
|
1494
|
-
" </tr>\n",
|
1495
|
-
" </thead>\n",
|
1496
|
-
" <tbody>\n",
|
1497
|
-
" <tr>\n",
|
1498
|
-
" <th>2017-04-22 15:11:58-05:00</th>\n",
|
1499
|
-
" <td>Sat</td>\n",
|
1500
|
-
" <td>15:11:58</td>\n",
|
1501
|
-
" </tr>\n",
|
1502
|
-
" <tr>\n",
|
1503
|
-
" <th>2017-04-21 14:20:57-05:00</th>\n",
|
1504
|
-
" <td>Fri</td>\n",
|
1505
|
-
" <td>14:20:57</td>\n",
|
1506
|
-
" </tr>\n",
|
1507
|
-
" <tr>\n",
|
1508
|
-
" <th>2017-04-20 14:35:08-05:00</th>\n",
|
1509
|
-
" <td>Thu</td>\n",
|
1510
|
-
" <td>14:35:08</td>\n",
|
1511
|
-
" </tr>\n",
|
1512
|
-
" <tr>\n",
|
1513
|
-
" <th>2017-04-20 10:34:29-05:00</th>\n",
|
1514
|
-
" <td>Thu</td>\n",
|
1515
|
-
" <td>10:34:29</td>\n",
|
1516
|
-
" </tr>\n",
|
1517
|
-
" <tr>\n",
|
1518
|
-
" <th>2017-04-20 09:17:23-05:00</th>\n",
|
1519
|
-
" <td>Thu</td>\n",
|
1520
|
-
" <td>09:17:23</td>\n",
|
1521
|
-
" </tr>\n",
|
1522
|
-
" </tbody>\n",
|
1523
|
-
"</table>\n",
|
1524
|
-
"</div>"
|
1525
|
-
],
|
1526
|
-
"text/plain": [
|
1527
|
-
" day time\n",
|
1528
|
-
"datetime \n",
|
1529
|
-
"2017-04-22 15:11:58-05:00 Sat 15:11:58\n",
|
1530
|
-
"2017-04-21 14:20:57-05:00 Fri 14:20:57\n",
|
1531
|
-
"2017-04-20 14:35:08-05:00 Thu 14:35:08\n",
|
1532
|
-
"2017-04-20 10:34:29-05:00 Thu 10:34:29\n",
|
1533
|
-
"2017-04-20 09:17:23-05:00 Thu 09:17:23"
|
1534
|
-
]
|
1535
|
-
},
|
1536
|
-
"execution_count": 17,
|
1537
|
-
"metadata": {},
|
1538
|
-
"output_type": "execute_result"
|
1539
|
-
}
|
1540
|
-
],
|
1541
|
-
"source": [
|
1542
|
-
"from bokeh.sampledata.commits import data\n",
|
1543
|
-
"\n",
|
1544
|
-
"data.head()"
|
1545
|
-
]
|
1546
|
-
},
|
1547
|
-
{
|
1548
|
-
"cell_type": "markdown",
|
1549
|
-
"metadata": {},
|
1550
|
-
"source": [
|
1551
|
-
"To create our scatter plot, we pass the list of categories as the range just as before\n",
|
1552
|
-
"\n",
|
1553
|
-
" p = figure(y_range=DAYS, ...)\n",
|
1554
|
-
" \n",
|
1555
|
-
"Then we can plot circles for each commit, with `\"time\"` driving the x-coordinate, and `\"day\"` driving the y-coordinate.\n",
|
1556
|
-
"\n",
|
1557
|
-
" p.circle(x='time', y='day', ...)\n",
|
1558
|
-
"\n",
|
1559
|
-
"To make the values more distinguishable, we can also add a `jitter` transform to the y-coordinate, which is shown in the complete example below."
|
1560
|
-
]
|
1561
|
-
},
|
1562
|
-
{
|
1563
|
-
"cell_type": "code",
|
1564
|
-
"execution_count": 18,
|
1565
|
-
"metadata": {},
|
1566
|
-
"outputs": [
|
1567
|
-
{
|
1568
|
-
"data": {
|
1569
|
-
"text/html": [
|
1570
|
-
"\n",
|
1571
|
-
" <div class=\"bk-root\" id=\"27f693df-6151-4320-988b-9989c6012bd8\" data-root-id=\"2103\"></div>\n"
|
1572
|
-
]
|
1573
|
-
},
|
1574
|
-
"metadata": {},
|
1575
|
-
"output_type": "display_data"
|
1576
|
-
},
|
1577
|
-
{
|
1578
|
-
"data": {
|
1579
|
-
"application/javascript": [
|
1580
|
-
"(function(root) {\n",
|
1581
|
-
" function embed_document(root) {\n",
|
1582
|
-
" const docs_json = {\"33657638-0484-425d-a373-72d98c9b108f\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"2114\"}],\"center\":[{\"id\":\"2117\"},{\"id\":\"2120\"}],\"height\":300,\"left\":[{\"id\":\"2118\"}],\"renderers\":[{\"id\":\"2140\"}],\"title\":{\"id\":\"2104\"},\"toolbar\":{\"id\":\"2128\"},\"width\":800,\"x_range\":{\"id\":\"2106\"},\"x_scale\":{\"id\":\"2110\"},\"y_range\":{\"id\":\"2108\"},\"y_scale\":{\"id\":\"2112\"}},\"id\":\"2103\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"factors\":[\"Sun\",\"Sat\",\"Fri\",\"Thu\",\"Wed\",\"Tue\",\"Mon\"]},\"id\":\"2108\",\"type\":\"FactorRange\"},{\"attributes\":{\"days\":[1,4,7,10,13,16,19,22,25,28]},\"id\":\"2235\",\"type\":\"DaysTicker\"},{\"attributes\":{\"range\":{\"id\":\"2108\"},\"width\":0.6},\"id\":\"2135\",\"type\":\"Jitter\"},{\"attributes\":{\"months\":[0,1,2,3,4,5,6,7,8,9,10,11]},\"id\":\"2238\",\"type\":\"MonthsTicker\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"2102\"},\"glyph\":{\"id\":\"2137\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"2139\"},\"nonselection_glyph\":{\"id\":\"2138\"},\"view\":{\"id\":\"2141\"}},\"id\":\"2140\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"days\":[1,8,15,22]},\"id\":\"2236\",\"type\":\"DaysTicker\"},{\"attributes\":{\"days\":[1,15]},\"id\":\"2237\",\"type\":\"DaysTicker\"},{\"attributes\":{\"source\":{\"id\":\"2102\"}},\"id\":\"2141\",\"type\":\"CDSView\"},{\"attributes\":{\"axis\":{\"id\":\"2114\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"2117\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"2121\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"2223\",\"type\":\"CategoricalTickFormatter\"},{\"attributes\":{\"range_padding\":0},\"id\":\"2106\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"2112\",\"type\":\"CategoricalScale\"},{\"attributes\":{\"months\":[0,2,4,6,8,10]},\"id\":\"2239\",\"type\":\"MonthsTicker\"},{\"attributes\":{},\"id\":\"2122\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"2119\",\"type\":\"CategoricalTicker\"},{\"attributes\":{\"days\":[\"%Hh\"]},\"id\":\"2142\",\"type\":\"DatetimeTickFormatter\"},{\"attributes\":{\"data\":{\"datetime\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[4916]},\"day\":[\"Sat\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Mon\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Wed\",\"Wed\",\"Wed\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sat\",\"Sat\",\"Sat\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Mon\",\"Fri\",\"Thu\",\"Sun\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sat\",\"Sat\",\"Wed\",\"Sat\",\"Sat\",\"Sat\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Tue\",\"Tue\",\"Mon\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Sun\",\"Sat\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Thu\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Fri\",\"Wed\",\"Wed\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Thu\",\"Wed\",\"Mon\",\"Fri\",\"Fri\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Mon\",\"Mon\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Fri\",\"Wed\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Sat\",\"Sat\",\"Wed\",\"Wed\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Wed\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Wed\",\"Tue\",\"Thu\",\"Thu\",\"Thu\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Sun\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Tue\",\"Tue\",\"Sat\",\"Sat\",\"Fri\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Sun\",\"Sun\",\"Sun\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Tue\",\"Tue\",\"Mon\",\"Sun\",\"Sun\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Tue\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Thu\",\"Thu\",\"Sun\",\"Sun\",\"Thu\",\"Sat\",\"Sat\",\"Sat\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Mon\",\"Sun\",\"Fri\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Mon\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Sun\",\"Sun\",\"Sun\",\"Thu\",\"Thu\",\"Thu\",\"Mon\",\"Mon\",\"Mon\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Sun\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Wed\",\"Tue\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Thu\",\"Tue\",\"Tue\",\"Tue\",\"Thu\",\"Thu\",\"Wed\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sun\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sun\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Sat\",\"Sat\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Thu\",\"Mon\",\"Sat\",\"Fri\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Sun\",\"Sun\",\"Tue\",\"Sat\",\"Sat\",\"Sat\",\"Mon\",\"Mon\",\"Mon\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Sat\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Wed\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Mon\",\"Mon\",\"Sat\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Tue\",\"Mon\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Mon\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Sat\",\"Sat\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Wed\",\"Tue\",\"Tue\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sun\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Mon\",\"Mon\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Sun\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Sat\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Sun\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Thu\",\"Thu\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Fri\",\"Fri\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Mon\",\"Fri\",\"Fri\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Sat\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Fri\",\"Fri\",\"Mon\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Mon\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Mon\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Thu\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Thu\",\"Thu\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Mon\",\"Fri\",\"Fri\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Wed\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Sun\",\"Wed\",\"Wed\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Sun\",\"Sun\",\"Sun\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sat\",\"Fri\",\"Thu\",\"Thu\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Fri\",\"Fri\",\"Wed\",\"Wed\",\"Wed\",\"Sat\",\"Mon\",\"Mon\",\"Mon\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sat\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sat\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Wed\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Sat\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sat\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Sat\",\"Sat\",\"Fri\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Wed\",\"Mon\",\"Mon\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sat\",\"Sat\",\"Sat\",\"Thu\",\"Thu\",\"Fri\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Tue\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Mon\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Wed\",\"Tue\",\"Thu\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Wed\",\"Tue\",\"Sun\",\"Thu\",\"Mon\",\"Mon\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Thu\",\"Sun\",\"Sun\",\"Fri\",\"Fri\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Fri\",\"Fri\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Sat\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sat\",\"Sat\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Mon\",\"Thu\",\"Wed\",\"Sat\"],\"time\":[54718000.0,51657000.0,52508000.0,38069000.0,33443000.0,81337000.0,80774000.0,80483000.0,74654000.0,72943000.0,72156000.0,79027000.0,73356000.0,60243000.0,59674000.0,54660000.0,47185000.0,46270000.0,42411000.0,41561000.0,76103000.0,75239000.0,75174000.0,69770000.0,69154000.0,68707000.0,68471000.0,68401000.0,51978000.0,80814000.0,80793000.0,80773000.0,80732000.0,78572000.0,78548000.0,78529000.0,78475000.0,81847000.0,81826000.0,81807000.0,67463000.0,70189000.0,70135000.0,52275000.0,52236000.0,52215000.0,39012000.0,38954000.0,47169000.0,36607000.0,36364000.0,34425000.0,71255000.0,71190000.0,71169000.0,68205000.0,33937000.0,40530000.0,37944000.0,46956000.0,46932000.0,46913000.0,45436000.0,53499000.0,58975000.0,31108000.0,54117000.0,40470000.0,40454000.0,40440000.0,40174000.0,70402000.0,70400000.0,70400000.0,59587000.0,40434000.0,45152000.0,43238000.0,35155000.0,70317000.0,47126000.0,37226000.0,31811000.0,48541000.0,48163000.0,42499000.0,75967000.0,75955000.0,75944000.0,75914000.0,68122000.0,68109000.0,68097000.0,67287000.0,62152000.0,62138000.0,62125000.0,61982000.0,43111000.0,36084000.0,50209000.0,44569000.0,75183000.0,85934000.0,85925000.0,85918000.0,85849000.0,71895000.0,71886000.0,71879000.0,71834000.0,68865000.0,68857000.0,68851000.0,68811000.0,63582000.0,63575000.0,63567000.0,62720000.0,59907000.0,59897000.0,59890000.0,59849000.0,56496000.0,56482000.0,56475000.0,56442000.0,53682000.0,53675000.0,53667000.0,53615000.0,69040000.0,69018000.0,69011000.0,67813000.0,55512000.0,55397000.0,51445000.0,51425000.0,51418000.0,51311000.0,51088000.0,51077000.0,51069000.0,51009000.0,47045000.0,46565000.0,44348000.0,44335000.0,44328000.0,44042000.0,2219000.0,45646000.0,49042000.0,48758000.0,61312000.0,50302000.0,41519000.0,37043000.0,36998000.0,36988000.0,36976000.0,36792000.0,43712000.0,43692000.0,43678000.0,41292000.0,42722000.0,43898000.0,43882000.0,43871000.0,43354000.0,40720000.0,40706000.0,40694000.0,40624000.0,38166000.0,38153000.0,38142000.0,59743000.0,59727000.0,59715000.0,59599000.0,53830000.0,62242000.0,56549000.0,56480000.0,66262000.0,66247000.0,66234000.0,50611000.0,71529000.0,54458000.0,71051000.0,47096000.0,61719000.0,52324000.0,52291000.0,52279000.0,52220000.0,50887000.0,63378000.0,56446000.0,47421000.0,46206000.0,46183000.0,44168000.0,43447000.0,41524000.0,62394000.0,59276000.0,57466000.0,57441000.0,57429000.0,57355000.0,52299000.0,46974000.0,44299000.0,58061000.0,49650000.0,56890000.0,54241000.0,48833000.0,44169000.0,43954000.0,43755000.0,43626000.0,40980000.0,52584000.0,50328000.0,56425000.0,61735000.0,56482000.0,64856000.0,46846000.0,43053000.0,52398000.0,52384000.0,52372000.0,31011000.0,61055000.0,53864000.0,53349000.0,64316000.0,61674000.0,49820000.0,48360000.0,48343000.0,48332000.0,48191000.0,37944000.0,37924000.0,37913000.0,53255000.0,53200000.0,53188000.0,53130000.0,52881000.0,52790000.0,46106000.0,46087000.0,46077000.0,46018000.0,45234000.0,44818000.0,39772000.0,37709000.0,36720000.0,34548000.0,27248000.0,60404000.0,36766000.0,36758000.0,36748000.0,36740000.0,35590000.0,35530000.0,34591000.0,34583000.0,34574000.0,34483000.0,34474000.0,34465000.0,34458000.0,34415000.0,33875000.0,63320000.0,62046000.0,60834000.0,9838000.0,9828000.0,7804000.0,7669000.0,54510000.0,54500000.0,37664000.0,78546000.0,78531000.0,69191000.0,65977000.0,85661000.0,41194000.0,80371000.0,80363000.0,78471000.0,78441000.0,75704000.0,75678000.0,65355000.0,65347000.0,57952000.0,85175000.0,44065000.0,44057000.0,43875000.0,41688000.0,41679000.0,39363000.0,56073000.0,3036000.0,33045000.0,52440000.0,47646000.0,29693000.0,37841000.0,46460000.0,46451000.0,46439000.0,44107000.0,48050000.0,47995000.0,50303000.0,75933000.0,63719000.0,75605000.0,65922000.0,81052000.0,39749000.0,43021000.0,41867000.0,80122000.0,78253000.0,74103000.0,66842000.0,64330000.0,49777000.0,42703000.0,35216000.0,35138000.0,59684000.0,56137000.0,3048000.0,68177000.0,68175000.0,68166000.0,63236000.0,63189000.0,12312000.0,10394000.0,9505000.0,66733000.0,65064000.0,51603000.0,36555000.0,60879000.0,21296000.0,38199000.0,63259000.0,40172000.0,13349000.0,83312000.0,77880000.0,82713000.0,78949000.0,45989000.0,45818000.0,45645000.0,60725000.0,80506000.0,76895000.0,67858000.0,38452000.0,58409000.0,57004000.0,47065000.0,54975000.0,47841000.0,35726000.0,56391000.0,33847000.0,74645000.0,53603000.0,51167000.0,44153000.0,44009000.0,43367000.0,43230000.0,34923000.0,34314000.0,31239000.0,67619000.0,66255000.0,64804000.0,64388000.0,63956000.0,63274000.0,58477000.0,48924000.0,47080000.0,40584000.0,35438000.0,43447000.0,41030000.0,34406000.0,34087000.0,41042000.0,40843000.0,27238000.0,27209000.0,15266000.0,40183000.0,36134000.0,33930000.0,32806000.0,32745000.0,48823000.0,22760000.0,21892000.0,21362000.0,15461000.0,14748000.0,72231000.0,47260000.0,47057000.0,38537000.0,3538000.0,3510000.0,35856000.0,34993000.0,4099000.0,2628000.0,53131000.0,52951000.0,61288000.0,59220000.0,57272000.0,47644000.0,47616000.0,39007000.0,38727000.0,38668000.0,58901000.0,58865000.0,49027000.0,47792000.0,44508000.0,44413000.0,44362000.0,40529000.0,41496000.0,38855000.0,38673000.0,62405000.0,62118000.0,58796000.0,58394000.0,57792000.0,50799000.0,50675000.0,34543000.0,43072000.0,66350000.0,63434000.0,62384000.0,62050000.0,50761000.0,50376000.0,48901000.0,39786000.0,44410000.0,44363000.0,39206000.0,38694000.0,38222000.0,37157000.0,43054000.0,41805000.0,40888000.0,37323000.0,66415000.0,34477000.0,1838000.0,85934000.0,85921000.0,83216000.0,83153000.0,82938000.0,54598000.0,36217000.0,32123000.0,55861000.0,53483000.0,47641000.0,47130000.0,45003000.0,44887000.0,42209000.0,41667000.0,41571000.0,36708000.0,31440000.0,31353000.0,31297000.0,31258000.0,66314000.0,60499000.0,51780000.0,51715000.0,3460000.0,81186000.0,76709000.0,73832000.0,72821000.0,61085000.0,50936000.0,44614000.0,40423000.0,39652000.0,36003000.0,53692000.0,53624000.0,49706000.0,46885000.0,43548000.0,38702000.0,53457000.0,52214000.0,45036000.0,37010000.0,67001000.0,64599000.0,63686000.0,51408000.0,49282000.0,41272000.0,40543000.0,35077000.0,4117000.0,55337000.0,49427000.0,48025000.0,38599000.0,37870000.0,50284000.0,50247000.0,43525000.0,43323000.0,41666000.0,80501000.0,80139000.0,58979000.0,58950000.0,48243000.0,48203000.0,48981000.0,41459000.0,41391000.0,53745000.0,49100000.0,48919000.0,46771000.0,58283000.0,56327000.0,55385000.0,82410000.0,81496000.0,53667000.0,52708000.0,52082000.0,50373000.0,50178000.0,49918000.0,50831000.0,30256000.0,81778000.0,80306000.0,64220000.0,46478000.0,46108000.0,46029000.0,45743000.0,45387000.0,43038000.0,43016000.0,48572000.0,42364000.0,41907000.0,44991000.0,32623000.0,32580000.0,75754000.0,57633000.0,57571000.0,55589000.0,53498000.0,53456000.0,48807000.0,48703000.0,48691000.0,46688000.0,38982000.0,34809000.0,57481000.0,54179000.0,45478000.0,63642000.0,60305000.0,52393000.0,49036000.0,48763000.0,48094000.0,33458000.0,31651000.0,31215000.0,61436000.0,60199000.0,60038000.0,59499000.0,54540000.0,50934000.0,50916000.0,43843000.0,43763000.0,43446000.0,67724000.0,67058000.0,64768000.0,59475000.0,57605000.0,56436000.0,50065000.0,70146000.0,62579000.0,40061000.0,39798000.0,39448000.0,63541000.0,64473000.0,63566000.0,36695000.0,34807000.0,31150000.0,31121000.0,31089000.0,85362000.0,81807000.0,73737000.0,71432000.0,64942000.0,64881000.0,51437000.0,38957000.0,58465000.0,56642000.0,48599000.0,46911000.0,38051000.0,35973000.0,71493000.0,66933000.0,66902000.0,60316000.0,58316000.0,58241000.0,58219000.0,50584000.0,36547000.0,36386000.0,41438000.0,35408000.0,53273000.0,70255000.0,66510000.0,57390000.0,54071000.0,55280000.0,54087000.0,52895000.0,52715000.0,39505000.0,39443000.0,31217000.0,75574000.0,75559000.0,73796000.0,73785000.0,71970000.0,66377000.0,47416000.0,47414000.0,47410000.0,47392000.0,47388000.0,42520000.0,73118000.0,70415000.0,68384000.0,68365000.0,51873000.0,51488000.0,49451000.0,48830000.0,46415000.0,46212000.0,44799000.0,43413000.0,43287000.0,60013000.0,42457000.0,42235000.0,42035000.0,41842000.0,41689000.0,41364000.0,40986000.0,39544000.0,38832000.0,64378000.0,64178000.0,60304000.0,54989000.0,54935000.0,54736000.0,52707000.0,50900000.0,38579000.0,38492000.0,37984000.0,85504000.0,84163000.0,84015000.0,81760000.0,77211000.0,72969000.0,71348000.0,63218000.0,62803000.0,62497000.0,61534000.0,60940000.0,59142000.0,58599000.0,57410000.0,60591000.0,33966000.0,54492000.0,84654000.0,83015000.0,82293000.0,82250000.0,80383000.0,79252000.0,79143000.0,78952000.0,78533000.0,78321000.0,62402000.0,62386000.0,60862000.0,59992000.0,57658000.0,52798000.0,46140000.0,44250000.0,43193000.0,42949000.0,42790000.0,34698000.0,34387000.0,33908000.0,78597000.0,65884000.0,75128000.0,71538000.0,69146000.0,68819000.0,66476000.0,62218000.0,62128000.0,61921000.0,61859000.0,61790000.0,43361000.0,62991000.0,62962000.0,49055000.0,41134000.0,78480000.0,36296000.0,66450000.0,66426000.0,66317000.0,63116000.0,49777000.0,49456000.0,44457000.0,44366000.0,39261000.0,34537000.0,55526000.0,54315000.0,32183000.0,69172000.0,67843000.0,62502000.0,39943000.0,36610000.0,36299000.0,68209000.0,62135000.0,61580000.0,64471000.0,63562000.0,63541000.0,62985000.0,62963000.0,56566000.0,52610000.0,49243000.0,47613000.0,47563000.0,46711000.0,46015000.0,45665000.0,45313000.0,41507000.0,39195000.0,32698000.0,46835000.0,44019000.0,41790000.0,39940000.0,35810000.0,70722000.0,70019000.0,68590000.0,63064000.0,56571000.0,56447000.0,54146000.0,54070000.0,58831000.0,56590000.0,49002000.0,52639000.0,51260000.0,48750000.0,48641000.0,47734000.0,32943000.0,32491000.0,77188000.0,56382000.0,53520000.0,42009000.0,35259000.0,56946000.0,56894000.0,56864000.0,51397000.0,42380000.0,42350000.0,37827000.0,37103000.0,1626000.0,75650000.0,75619000.0,75614000.0,75567000.0,75546000.0,75519000.0,75451000.0,75419000.0,62423000.0,62417000.0,50773000.0,50755000.0,50466000.0,45938000.0,42675000.0,42668000.0,39469000.0,37599000.0,35633000.0,78146000.0,69550000.0,69523000.0,67000000.0,66759000.0,63006000.0,62539000.0,61030000.0,55089000.0,79469000.0,76905000.0,69481000.0,62320000.0,60675000.0,57670000.0,55774000.0,55421000.0,55368000.0,54588000.0,43801000.0,40912000.0,40172000.0,40123000.0,36526000.0,33593000.0,33568000.0,33521000.0,33414000.0,33156000.0,74254000.0,73609000.0,70177000.0,69473000.0,65778000.0,65634000.0,62989000.0,61188000.0,60697000.0,60642000.0,52365000.0,49480000.0,49340000.0,48204000.0,46854000.0,42969000.0,41213000.0,40447000.0,40357000.0,40103000.0,39675000.0,39484000.0,39305000.0,38641000.0,38625000.0,38582000.0,38067000.0,37641000.0,37447000.0,37335000.0,37315000.0,37095000.0,37066000.0,36941000.0,36889000.0,36852000.0,36574000.0,36543000.0,36463000.0,34803000.0,32726000.0,32639000.0,1456000.0,1262000.0,1245000.0,653000.0,85584000.0,83938000.0,81599000.0,79689000.0,79396000.0,79230000.0,61797000.0,61068000.0,60027000.0,58779000.0,56751000.0,54757000.0,51564000.0,44277000.0,42766000.0,42733000.0,42565000.0,41520000.0,38004000.0,34280000.0,34251000.0,31324000.0,31308000.0,30483000.0,81978000.0,81473000.0,81356000.0,79956000.0,75803000.0,72347000.0,64663000.0,59235000.0,57699000.0,57132000.0,47349000.0,35117000.0,34674000.0,34623000.0,31243000.0,80745000.0,79775000.0,78932000.0,78700000.0,76236000.0,74565000.0,62517000.0,62390000.0,60955000.0,60883000.0,60045000.0,54419000.0,43005000.0,39161000.0,39069000.0,36292000.0,36268000.0,36245000.0,33873000.0,33863000.0,5625000.0,80727000.0,80698000.0,80661000.0,80260000.0,71981000.0,71968000.0,71567000.0,69805000.0,69745000.0,69478000.0,68675000.0,68395000.0,68224000.0,67905000.0,67805000.0,62721000.0,62649000.0,58871000.0,58710000.0,58227000.0,44051000.0,79332000.0,79309000.0,76725000.0,76612000.0,76029000.0,37024000.0,29983000.0,30043000.0,56111000.0,30623000.0,32348000.0,29882000.0,66331000.0,56735000.0,56524000.0,56263000.0,31145000.0,36987000.0,54137000.0,53221000.0,51304000.0,51003000.0,50925000.0,43370000.0,67542000.0,65628000.0,63774000.0,54917000.0,63398000.0,40162000.0,40023000.0,40235000.0,37009000.0,62354000.0,65348000.0,61807000.0,60051000.0,59381000.0,58626000.0,58382000.0,58297000.0,58129000.0,58034000.0,48235000.0,48179000.0,46169000.0,40550000.0,40533000.0,34668000.0,34646000.0,82399000.0,82066000.0,78591000.0,74304000.0,74298000.0,74204000.0,74151000.0,74132000.0,74110000.0,74091000.0,73425000.0,73336000.0,72955000.0,72756000.0,71539000.0,71207000.0,70896000.0,70779000.0,70270000.0,70157000.0,70127000.0,70023000.0,69630000.0,69300000.0,68689000.0,68019000.0,67924000.0,67598000.0,67381000.0,67035000.0,66202000.0,66109000.0,65606000.0,65557000.0,65529000.0,65235000.0,65085000.0,64528000.0,64415000.0,64268000.0,64177000.0,64063000.0,63823000.0,63518000.0,63402000.0,63395000.0,63300000.0,63127000.0,62813000.0,62670000.0,62181000.0,61980000.0,60258000.0,60122000.0,59627000.0,58725000.0,58624000.0,58520000.0,57980000.0,57558000.0,57471000.0,57426000.0,57387000.0,56283000.0,54360000.0,53684000.0,53372000.0,52650000.0,50303000.0,50183000.0,50166000.0,50104000.0,46274000.0,40235000.0,40162000.0,40023000.0,74850000.0,74559000.0,74545000.0,68860000.0,56380000.0,54557000.0,54335000.0,54311000.0,48824000.0,46204000.0,44930000.0,83471000.0,63219000.0,62156000.0,61845000.0,61188000.0,60370000.0,58748000.0,58013000.0,57705000.0,57690000.0,57252000.0,52513000.0,52360000.0,52280000.0,52224000.0,52166000.0,51053000.0,50848000.0,1664000.0,82507000.0,82413000.0,73496000.0,73355000.0,73333000.0,70149000.0,69647000.0,69540000.0,69491000.0,66395000.0,66354000.0,66336000.0,66282000.0,64636000.0,63380000.0,63270000.0,63160000.0,62709000.0,61853000.0,59626000.0,59152000.0,59144000.0,59133000.0,58143000.0,56444000.0,56432000.0,55414000.0,54727000.0,54248000.0,53156000.0,52881000.0,52277000.0,51032000.0,50877000.0,50492000.0,49047000.0,48469000.0,48257000.0,47629000.0,52750000.0,52734000.0,51375000.0,50561000.0,48458000.0,35521000.0,35294000.0,34483000.0,34407000.0,34335000.0,33207000.0,32845000.0,78033000.0,65236000.0,65190000.0,64798000.0,43056000.0,43038000.0,43026000.0,74091000.0,58215000.0,58000000.0,50740000.0,34569000.0,34230000.0,50905000.0,50447000.0,50249000.0,42024000.0,41933000.0,39483000.0,37185000.0,36402000.0,34967000.0,34694000.0,33989000.0,33814000.0,33604000.0,85040000.0,55743000.0,47096000.0,45266000.0,40874000.0,40070000.0,39406000.0,37564000.0,32709000.0,33195000.0,32811000.0,32683000.0,32664000.0,31219000.0,30791000.0,78739000.0,74202000.0,73551000.0,72010000.0,71595000.0,64746000.0,61483000.0,61226000.0,80293000.0,80242000.0,55851000.0,41152000.0,72135000.0,70482000.0,54614000.0,54261000.0,54210000.0,69066000.0,62106000.0,61920000.0,61456000.0,61434000.0,61387000.0,61340000.0,61310000.0,35433000.0,35392000.0,60046000.0,59319000.0,58782000.0,55561000.0,55514000.0,53587000.0,45509000.0,44572000.0,43846000.0,38772000.0,38683000.0,38372000.0,34996000.0,34861000.0,34751000.0,72313000.0,72156000.0,70425000.0,70417000.0,70409000.0,70402000.0,60296000.0,60193000.0,58089000.0,56907000.0,56894000.0,56881000.0,55636000.0,55594000.0,49708000.0,48929000.0,48925000.0,44313000.0,43558000.0,43350000.0,28283000.0,28257000.0,28183000.0,62998000.0,56450000.0,53039000.0,52216000.0,52116000.0,47057000.0,46238000.0,46115000.0,39001000.0,38974000.0,37546000.0,35856000.0,35779000.0,23962000.0,21516000.0,68476000.0,61136000.0,56309000.0,38420000.0,79754000.0,67698000.0,65292000.0,43106000.0,42062000.0,40951000.0,36310000.0,1451000.0,84323000.0,82362000.0,59279000.0,59260000.0,59235000.0,54814000.0,54770000.0,54297000.0,51535000.0,51479000.0,51143000.0,47415000.0,39472000.0,69349000.0,68923000.0,66212000.0,66039000.0,65914000.0,61325000.0,61301000.0,61055000.0,58355000.0,54670000.0,39693000.0,83879000.0,80221000.0,78185000.0,77892000.0,77851000.0,66337000.0,62072000.0,59746000.0,53063000.0,52953000.0,52573000.0,51820000.0,51805000.0,50894000.0,38338000.0,38211000.0,38116000.0,37823000.0,37663000.0,37577000.0,34142000.0,34127000.0,34038000.0,33935000.0,76572000.0,62996000.0,58614000.0,57797000.0,57566000.0,56880000.0,56546000.0,56525000.0,55215000.0,54764000.0,54547000.0,54506000.0,80079000.0,75988000.0,75534000.0,75186000.0,75171000.0,73936000.0,73864000.0,73505000.0,73128000.0,72372000.0,71724000.0,65245000.0,64610000.0,64519000.0,64406000.0,58443000.0,53031000.0,63665000.0,39648000.0,39545000.0,34276000.0,42453000.0,77756000.0,55106000.0,54356000.0,49890000.0,46122000.0,32160000.0,32114000.0,75995000.0,67265000.0,65916000.0,63345000.0,63135000.0,60580000.0,56203000.0,56014000.0,42091000.0,41627000.0,34357000.0,82151000.0,75136000.0,74693000.0,29586000.0,54924000.0,54030000.0,48968000.0,48866000.0,48603000.0,69892000.0,29698000.0,29205000.0,38278000.0,38076000.0,38009000.0,36355000.0,36143000.0,74007000.0,73571000.0,72441000.0,79616000.0,79524000.0,79471000.0,79433000.0,52942000.0,52714000.0,52305000.0,51883000.0,22707000.0,79347000.0,79231000.0,56735000.0,56626000.0,56069000.0,46967000.0,45729000.0,42597000.0,42237000.0,42148000.0,42112000.0,42010000.0,41947000.0,39606000.0,39467000.0,38931000.0,32984000.0,32949000.0,32921000.0,30965000.0,30809000.0,73767000.0,73748000.0,73664000.0,64933000.0,64917000.0,64885000.0,64800000.0,62743000.0,65825000.0,42466000.0,42453000.0,42450000.0,42399000.0,38935000.0,33929000.0,77339000.0,52896000.0,47264000.0,46204000.0,44368000.0,44361000.0,70833000.0,81986000.0,81922000.0,81909000.0,71810000.0,71704000.0,71358000.0,70369000.0,70173000.0,69795000.0,69681000.0,58735000.0,53158000.0,74845000.0,84769000.0,44666000.0,76156000.0,53548000.0,42763000.0,37445000.0,66513000.0,66799000.0,29431000.0,57385000.0,57466000.0,57448000.0,64898000.0,43645000.0,40850000.0,53141000.0,51489000.0,46595000.0,40185000.0,39710000.0,76221000.0,75794000.0,75054000.0,52535000.0,41700000.0,41640000.0,41556000.0,75023000.0,74110000.0,60349000.0,60132000.0,60117000.0,45237000.0,45144000.0,34576000.0,51417000.0,76882000.0,61403000.0,60513000.0,60445000.0,69411000.0,68982000.0,68962000.0,68935000.0,66894000.0,65906000.0,36042000.0,34848000.0,32759000.0,50167000.0,66579000.0,84240000.0,84183000.0,58745000.0,47595000.0,33124000.0,32611000.0,26014000.0,25507000.0,25435000.0,25416000.0,68835000.0,68338000.0,67433000.0,65494000.0,65064000.0,65001000.0,64414000.0,58659000.0,47205000.0,40796000.0,36386000.0,36368000.0,67306000.0,57702000.0,56284000.0,55117000.0,55049000.0,54713000.0,53674000.0,52735000.0,52443000.0,52347000.0,51083000.0,50479000.0,50452000.0,50346000.0,49847000.0,49527000.0,49363000.0,49233000.0,49018000.0,48431000.0,46519000.0,46506000.0,46488000.0,46461000.0,58067000.0,43360000.0,43247000.0,38556000.0,28887000.0,58580000.0,57355000.0,64525000.0,81718000.0,77707000.0,76039000.0,57798000.0,47075000.0,46625000.0,40736000.0,40602000.0,39602000.0,39509000.0,52618000.0,76203000.0,53724000.0,48095000.0,46267000.0,59510000.0,55925000.0,50273000.0,50100000.0,50012000.0,37995000.0,69249000.0,76804000.0,76569000.0,76561000.0,75790000.0,75523000.0,60654000.0,60409000.0,32706000.0,49570000.0,47845000.0,1018000.0,68415000.0,68097000.0,67901000.0,67842000.0,67686000.0,67231000.0,67203000.0,67182000.0,53295000.0,52882000.0,51224000.0,56782000.0,64002000.0,63982000.0,63951000.0,43342000.0,42797000.0,46291000.0,46139000.0,43724000.0,42879000.0,42414000.0,42934000.0,28953000.0,43683000.0,43577000.0,43378000.0,44727000.0,39358000.0,61384000.0,59580000.0,49860000.0,38910000.0,74879000.0,73013000.0,72767000.0,70901000.0,69737000.0,58491000.0,39774000.0,36390000.0,34227000.0,34141000.0,31202000.0,56320000.0,59405000.0,49217000.0,49073000.0,48714000.0,45153000.0,42208000.0,42139000.0,41846000.0,40043000.0,38474000.0,38394000.0,37683000.0,37615000.0,68834000.0,68772000.0,39008000.0,38967000.0,38938000.0,60630000.0,60532000.0,59928000.0,57568000.0,80394000.0,74312000.0,73534000.0,46392000.0,38725000.0,36497000.0,74341000.0,66550000.0,63874000.0,62789000.0,56989000.0,56819000.0,53298000.0,40612000.0,63002000.0,38672000.0,91000.0,81857000.0,54299000.0,44503000.0,32780000.0,28393000.0,84454000.0,84161000.0,84049000.0,80356000.0,80351000.0,80229000.0,79394000.0,75173000.0,75115000.0,74656000.0,74532000.0,63370000.0,63052000.0,59150000.0,57851000.0,48626000.0,34127000.0,61487000.0,58599000.0,58091000.0,57006000.0,56976000.0,56503000.0,54219000.0,36671000.0,36649000.0,36625000.0,56410000.0,2651000.0,86305000.0,84521000.0,82929000.0,77856000.0,77726000.0,70972000.0,70539000.0,69762000.0,67841000.0,66313000.0,64791000.0,60784000.0,60744000.0,60605000.0,60592000.0,50552000.0,42397000.0,59083000.0,51528000.0,50906000.0,43307000.0,41841000.0,41600000.0,41571000.0,71049000.0,46470000.0,34913000.0,34319000.0,33545000.0,32433000.0,63991000.0,63853000.0,63118000.0,62976000.0,62757000.0,43762000.0,43720000.0,56442000.0,63776000.0,60663000.0,60248000.0,34677000.0,32916000.0,70351000.0,70081000.0,69477000.0,65716000.0,64279000.0,53365000.0,28478000.0,22522000.0,22392000.0,21025000.0,19873000.0,19223000.0,19143000.0,81970000.0,73359000.0,70913000.0,70772000.0,70653000.0,68861000.0,68837000.0,68795000.0,66743000.0,66147000.0,51698000.0,49128000.0,34600000.0,71232000.0,38286000.0,38199000.0,38163000.0,27210000.0,27189000.0,27155000.0,32176000.0,31084000.0,30443000.0,30354000.0,29088000.0,28808000.0,28324000.0,22433000.0,59708000.0,68833000.0,64106000.0,54481000.0,54464000.0,54110000.0,49080000.0,43791000.0,28384000.0,42418000.0,42214000.0,83025000.0,79447000.0,79347000.0,79320000.0,79218000.0,78163000.0,49993000.0,42412000.0,42378000.0,28179000.0,53748000.0,51500000.0,51479000.0,42661000.0,41324000.0,38717000.0,38663000.0,33938000.0,77640000.0,77600000.0,77551000.0,57694000.0,48291000.0,36853000.0,65899000.0,64056000.0,61760000.0,61461000.0,60881000.0,60394000.0,58792000.0,58691000.0,58344000.0,55933000.0,55921000.0,44440000.0,44258000.0,72682000.0,53196000.0,51286000.0,42898000.0,39821000.0,62687000.0,57587000.0,50164000.0,48044000.0,59411000.0,46692000.0,56460000.0,55219000.0,55138000.0,52815000.0,49965000.0,49449000.0,37829000.0,35982000.0,34291000.0,66845000.0,66558000.0,65250000.0,64637000.0,59083000.0,50079000.0,49986000.0,49441000.0,49243000.0,43898000.0,41749000.0,39683000.0,81494000.0,79502000.0,75944000.0,74285000.0,72869000.0,71627000.0,69631000.0,65052000.0,62793000.0,60429000.0,60293000.0,34831000.0,32672000.0,32599000.0,32577000.0,32539000.0,32441000.0,32386000.0,54238000.0,60458000.0,39066000.0,38109000.0,38055000.0,36475000.0,35263000.0,34265000.0,44455000.0,44099000.0,38390000.0,38306000.0,47541000.0,44255000.0,30340000.0,74235000.0,51196000.0,46750000.0,38833000.0,59782000.0,59745000.0,52729000.0,52710000.0,49397000.0,41225000.0,37977000.0,84743000.0,84439000.0,83334000.0,79600000.0,79566000.0,77448000.0,77436000.0,77417000.0,77389000.0,77363000.0,76332000.0,73674000.0,59695000.0,58902000.0,44234000.0,42585000.0,42577000.0,41770000.0,41760000.0,41682000.0,40732000.0,33878000.0,33873000.0,32610000.0,32560000.0,32478000.0,32441000.0,75175000.0,74001000.0,70948000.0,67680000.0,53219000.0,50782000.0,44605000.0,66363000.0,66337000.0,63701000.0,63666000.0,63633000.0,45359000.0,45346000.0,44898000.0,30703000.0,29728000.0,63982000.0,63336000.0,62054000.0,61956000.0,56496000.0,55561000.0,52167000.0,41550000.0,37626000.0,36995000.0,56439000.0,57088000.0,57069000.0,56999000.0,56974000.0,38399000.0,38109000.0,35993000.0,35601000.0,33356000.0,76016000.0,72430000.0,50542000.0,50533000.0,30747000.0,30694000.0,49251000.0,47992000.0,47961000.0,47827000.0,74293000.0,37669000.0,32009000.0,34589000.0,34056000.0,32312000.0,30741000.0,49633000.0,18718000.0,52753000.0,52079000.0,51842000.0,32841000.0,32634000.0,32580000.0,21193000.0,18667000.0,49992000.0,49975000.0,49653000.0,45600000.0,40382000.0,32416000.0,30558000.0,28305000.0,24933000.0,24731000.0,24689000.0,70621000.0,70466000.0,70456000.0,67971000.0,67503000.0,63884000.0,63628000.0,63503000.0,62447000.0,58211000.0,57176000.0,51741000.0,36115000.0,32289000.0,66685000.0,64901000.0,53381000.0,52599000.0,50892000.0,45883000.0,45857000.0,42057000.0,40967000.0,40488000.0,38876000.0,38829000.0,37441000.0,37388000.0,33278000.0,63374000.0,55120000.0,35783000.0,34607000.0,32420000.0,84813000.0,84795000.0,84778000.0,80190000.0,80119000.0,79761000.0,73748000.0,71111000.0,68441000.0,67624000.0,67616000.0,61509000.0,61499000.0,48951000.0,12157000.0,11256000.0,11209000.0,8290000.0,8179000.0,8169000.0,8154000.0,78420000.0,77050000.0,76955000.0,76946000.0,76544000.0,76184000.0,73716000.0,69129000.0,66189000.0,64541000.0,59571000.0,59566000.0,57504000.0,57496000.0,55744000.0,50910000.0,50904000.0,44300000.0,43904000.0,43825000.0,43778000.0,32087000.0,31630000.0,30315000.0,24792000.0,24756000.0,74351000.0,72633000.0,49727000.0,47297000.0,35519000.0,69140000.0,42018000.0,40641000.0,40332000.0,38799000.0,60962000.0,57870000.0,54962000.0,54770000.0,49468000.0,48266000.0,45789000.0,45674000.0,39307000.0,34498000.0,31883000.0,31230000.0,78023000.0,75050000.0,71047000.0,70317000.0,62188000.0,53632000.0,50970000.0,51766000.0,35411000.0,41166000.0,41119000.0,60294000.0,59330000.0,55917000.0,50762000.0,50599000.0,49631000.0,35146000.0,33483000.0,51765000.0,51682000.0,29641000.0,62681000.0,57639000.0,40482000.0,58231000.0,57783000.0,45511000.0,34301000.0,34133000.0,34070000.0,34025000.0,33952000.0,33902000.0,33865000.0,33832000.0,33721000.0,46329000.0,54811000.0,53871000.0,42574000.0,42303000.0,42111000.0,37396000.0,34495000.0,72968000.0,70083000.0,69377000.0,61453000.0,61343000.0,60523000.0,60083000.0,59625000.0,58718000.0,54322000.0,53329000.0,53222000.0,51694000.0,51306000.0,44858000.0,35055000.0,34990000.0,34971000.0,60607000.0,42617000.0,36465000.0,36431000.0,34245000.0,74795000.0,50759000.0,49947000.0,49883000.0,49847000.0,49610000.0,48642000.0,48370000.0,48341000.0,46083000.0,46040000.0,79211000.0,54429000.0,53296000.0,51206000.0,48806000.0,48671000.0,43116000.0,42961000.0,35836000.0,35799000.0,59135000.0,58701000.0,57573000.0,55474000.0,55411000.0,54097000.0,51491000.0,43775000.0,40353000.0,38043000.0,37303000.0,33238000.0,33231000.0,37930000.0,72514000.0,72121000.0,58177000.0,43423000.0,43066000.0,37249000.0,37139000.0,56503000.0,56476000.0,59062000.0,57431000.0,57402000.0,33052000.0,32554000.0,35244000.0,34416000.0,34140000.0,32474000.0,32038000.0,6365000.0,66239000.0,56635000.0,56326000.0,24893000.0,72137000.0,54898000.0,51230000.0,46219000.0,46137000.0,43438000.0,43373000.0,42150000.0,42075000.0,41816000.0,41785000.0,41733000.0,41175000.0,40566000.0,40478000.0,39741000.0,39588000.0,39034000.0,37972000.0,37703000.0,37301000.0,32789000.0,32397000.0,29047000.0,27164000.0,26436000.0,24662000.0,85300000.0,69903000.0,69170000.0,68305000.0,67284000.0,64564000.0,57850000.0,54369000.0,54954000.0,49975000.0,49826000.0,64147000.0,45938000.0,33433000.0,72620000.0,61787000.0,60751000.0,59033000.0,54081000.0,52426000.0,51191000.0,49728000.0,49600000.0,34775000.0,83726000.0,82418000.0,77821000.0,77437000.0,77250000.0,77184000.0,77061000.0,76893000.0,65445000.0,65314000.0,65119000.0,59739000.0,51799000.0,75208000.0,49978000.0,49770000.0,44376000.0,44307000.0,43915000.0,43813000.0,40736000.0,58136000.0,52881000.0,42343000.0,42134000.0,41726000.0,40518000.0,40071000.0,39930000.0,39727000.0,37497000.0,36698000.0,33523000.0,32707000.0,52045000.0,51611000.0,47282000.0,47019000.0,44344000.0,44268000.0,43869000.0,43556000.0,41219000.0,37434000.0,81902000.0,81334000.0,80659000.0,80124000.0,77669000.0,77445000.0,77377000.0,76637000.0,54356000.0,47904000.0,47245000.0,45745000.0,45254000.0,56499000.0,56434000.0,56001000.0,51266000.0,48664000.0,47510000.0,44500000.0,35644000.0,31778000.0,28404000.0,78573000.0,40548000.0,36600000.0,62423000.0,35464000.0,35448000.0,35413000.0,29712000.0,40448000.0,48439000.0,42897000.0,74955000.0,74844000.0,69762000.0,59913000.0,40952000.0,37512000.0,36955000.0,67002000.0,58450000.0,58432000.0,57035000.0,44693000.0,37489000.0,35533000.0,33420000.0,57183000.0,57134000.0,43851000.0,42457000.0,36139000.0,35295000.0,34739000.0,33298000.0,32882000.0,83393000.0,75721000.0,29996000.0,80242000.0,79780000.0,79763000.0,79732000.0,79687000.0,50577000.0,50501000.0,48528000.0,41833000.0,36524000.0,36216000.0,31774000.0,85529000.0,75260000.0,75187000.0,74934000.0,74934000.0,69902000.0,69871000.0,67905000.0,57252000.0,52229000.0,52194000.0,83203000.0,82700000.0,82634000.0,62684000.0,31330000.0,30851000.0,71822000.0,68103000.0,66493000.0,65227000.0,56252000.0,56009000.0,55333000.0,54901000.0,54324000.0,53588000.0,53203000.0,52796000.0,52776000.0,51985000.0,39960000.0,35791000.0,32086000.0,31037000.0,81182000.0,51462000.0,51309000.0,82360000.0,70073000.0,64598000.0,63916000.0,63049000.0,62119000.0,61760000.0,77780000.0,52808000.0,79136000.0,79018000.0,78979000.0,78965000.0,76993000.0,61036000.0,56508000.0,55013000.0,35686000.0,28774000.0,79755000.0,76170000.0,76149000.0,75776000.0,65068000.0,62048000.0,48963000.0,43501000.0,35371000.0,34442000.0,31904000.0,53114000.0,45999000.0,45515000.0,45299000.0,43895000.0,41164000.0,39119000.0,38194000.0,68256000.0,63781000.0,61466000.0,59879000.0,59830000.0,55275000.0,52753000.0,51196000.0,50494000.0,48581000.0,42418000.0,40523000.0,78622000.0,61178000.0,61080000.0,54290000.0,52659000.0,52216000.0,51415000.0,51242000.0,50185000.0,47832000.0,39244000.0,37492000.0,53841000.0,55322000.0,55300000.0,51637000.0,51596000.0,51543000.0,76241000.0,72855000.0,63937000.0,63729000.0,41202000.0,40025000.0,39503000.0,35075000.0,34383000.0,32730000.0,31587000.0,39848000.0,39114000.0,36421000.0,36375000.0,36325000.0,36291000.0,36266000.0,78966000.0,78945000.0,65875000.0,65297000.0,65249000.0,64800000.0,64722000.0,74419000.0,71919000.0,71668000.0,70117000.0,69951000.0,69925000.0,69899000.0,69861000.0,56141000.0,55075000.0,42347000.0,48668000.0,47907000.0,29416000.0,29334000.0,73235000.0,72785000.0,72633000.0,72598000.0,72540000.0,72371000.0,72362000.0,69170000.0,68735000.0,67532000.0,65984000.0,65004000.0,64980000.0,83006000.0,36552000.0,35876000.0,31954000.0,52461000.0,46436000.0,42040000.0,40292000.0,47401000.0,47317000.0,60682000.0,58769000.0,58616000.0,57992000.0,56244000.0,77323000.0,51176000.0,41361000.0,39728000.0,37132000.0,36170000.0,58482000.0,76998000.0,72750000.0,55263000.0,49994000.0,49534000.0,49163000.0,41052000.0,36947000.0,36585000.0,35089000.0,33793000.0,33665000.0,32252000.0,31991000.0,51297000.0,50415000.0,40728000.0,46258000.0,46194000.0,46052000.0,46028000.0,43732000.0,43703000.0,40029000.0,39920000.0,34985000.0,61268000.0,61228000.0,61077000.0,57190000.0,57160000.0,57117000.0,53377000.0,52964000.0,52378000.0,51441000.0,51428000.0,50030000.0,49578000.0,49549000.0,33378000.0,33169000.0,52994000.0,49404000.0,46150000.0,56281000.0,36674000.0,36641000.0,46946000.0,45294000.0,44192000.0,33011000.0,26219000.0,25851000.0,74628000.0,72221000.0,67924000.0,67529000.0,73663000.0,72020000.0,57182000.0,57150000.0,44926000.0,41204000.0,40980000.0,36275000.0,41977000.0,41931000.0,64992000.0,59714000.0,55678000.0,74103000.0,58517000.0,58485000.0,52692000.0,52663000.0,49804000.0,49747000.0,48634000.0,40757000.0,33738000.0,15785000.0,58194000.0,51569000.0,51551000.0,51286000.0,41104000.0,41061000.0,55415000.0,50304000.0,48993000.0,48901000.0,48875000.0,47949000.0,37876000.0,37837000.0,36444000.0,36388000.0,62547000.0,62535000.0,81818000.0,80262000.0,80180000.0,80002000.0,71794000.0,50777000.0,40796000.0,40165000.0,49758000.0,38162000.0,38126000.0,36647000.0,6515000.0,65558000.0,65499000.0,46341000.0,46324000.0,33974000.0,78197000.0,59427000.0,43521000.0,66222000.0,64677000.0,64638000.0,60602000.0,46664000.0,46595000.0,46403000.0,31743000.0,41355000.0,55236000.0,54645000.0,54529000.0,48142000.0,47462000.0,47430000.0,44974000.0,38701000.0,57439000.0,56015000.0,52333000.0,51967000.0,38813000.0,37125000.0,34767000.0,4313000.0,51378000.0,42398000.0,42373000.0,74472000.0,73109000.0,72311000.0,72248000.0,58730000.0,54022000.0,52666000.0,52582000.0,40178000.0,35271000.0,34460000.0,27378000.0,26178000.0,76851000.0,73655000.0,69820000.0,34591000.0,73065000.0,72235000.0,72224000.0,72158000.0,72039000.0,71701000.0,55156000.0,54896000.0,53755000.0,43135000.0,35883000.0,33990000.0,32216000.0,50431000.0,47628000.0,47352000.0,36087000.0,61244000.0,61224000.0,60872000.0,57122000.0,48608000.0,47352000.0,46346000.0,44905000.0,43893000.0,42422000.0,42362000.0,33284000.0,33018000.0,53472000.0,76955000.0,74495000.0,46906000.0,31989000.0,31021000.0,30921000.0,55106000.0,45044000.0,46786000.0,46755000.0,35948000.0,79096000.0,76609000.0,74826000.0,74041000.0,56053000.0,54852000.0,35471000.0,83008000.0,81712000.0,80965000.0,79791000.0,79664000.0,79582000.0,50216000.0,30827000.0,30817000.0,41547000.0,41528000.0,27785000.0,26607000.0,26538000.0,26502000.0,54767000.0,50505000.0,33170000.0,72957000.0,72554000.0,55986000.0,51798000.0,27791000.0,24971000.0,76325000.0,75359000.0,63022000.0,61542000.0,54312000.0,83358000.0,77425000.0,73904000.0,73862000.0,73731000.0,73701000.0,53046000.0,53008000.0,35604000.0,35546000.0,33737000.0,61171000.0,43105000.0,42457000.0,36571000.0,27052000.0,77184000.0,75410000.0,53324000.0,49999000.0,49956000.0,49858000.0,49740000.0,46393000.0,52986000.0,52717000.0,52684000.0,50821000.0,41806000.0,56417000.0,35110000.0,29089000.0,29083000.0,28983000.0,28915000.0,80946000.0,76894000.0,53933000.0,50563000.0,30091000.0,30073000.0,30006000.0,79370000.0,79333000.0,78228000.0,78072000.0,59475000.0,44837000.0,44154000.0,44140000.0,41108000.0,40901000.0,40564000.0,40239000.0,40202000.0,38996000.0,38236000.0,38217000.0,36543000.0,35448000.0,33738000.0,33654000.0,33639000.0,33040000.0,80018000.0,77385000.0,77110000.0,67746000.0,65772000.0,65460000.0,59596000.0,57676000.0,55952000.0,54536000.0,53854000.0,52279000.0,50362000.0,48984000.0,47316000.0,47261000.0,47249000.0,46783000.0,44098000.0,43860000.0,43860000.0,43090000.0,43060000.0,41515000.0,41336000.0,39696000.0,39043000.0,36651000.0,34136000.0,32514000.0,31616000.0,29336000.0,72469000.0,68172000.0,63092000.0,63059000.0,45220000.0,45053000.0,41033000.0,41016000.0,48865000.0,30256000.0,28490000.0,24722000.0,84095000.0,73328000.0,64797000.0,57692000.0,54070000.0,54064000.0,51460000.0,51447000.0,47926000.0,41922000.0,35666000.0,33675000.0,33439000.0,32148000.0,31929000.0,30449000.0,76058000.0,75931000.0,73842000.0,70906000.0,62125000.0,61390000.0,58179000.0,44738000.0,38097000.0,78565000.0,76366000.0,71203000.0,71034000.0,69517000.0,69394000.0,60956000.0,59215000.0,55713000.0,55704000.0,51066000.0,46887000.0,46040000.0,45927000.0,39888000.0,34544000.0,33775000.0,26928000.0,26909000.0,26150000.0,26110000.0,78647000.0,63532000.0,63490000.0,63316000.0,62136000.0,61700000.0,60172000.0,58904000.0,46542000.0,35545000.0,34616000.0,34058000.0,33567000.0,59302000.0,45580000.0,37612000.0,82940000.0,82896000.0,67139000.0,67117000.0,65093000.0,62326000.0,59943000.0,59369000.0,59305000.0,45121000.0,45104000.0,43838000.0,80381000.0,80365000.0,75710000.0,49416000.0,43247000.0,41685000.0,40995000.0,40742000.0,39606000.0,37452000.0,58599000.0,54556000.0,53750000.0,50523000.0,50397000.0,50387000.0,45808000.0,35729000.0,83632000.0,83597000.0,77317000.0,77213000.0,76762000.0,76545000.0,76091000.0,67659000.0,62009000.0,58187000.0,56609000.0,54493000.0,54097000.0,53988000.0,47446000.0,42727000.0,84305000.0,83287000.0,82974000.0,63108000.0,62351000.0,61548000.0,60459000.0,57330000.0,51982000.0,47978000.0,47423000.0,42293000.0,41824000.0,35654000.0,35209000.0,34146000.0,32354000.0,24055000.0,80984000.0,79634000.0,78805000.0,76539000.0,76184000.0,70020000.0,54568000.0,54182000.0,50880000.0,50695000.0,49311000.0,45610000.0,43739000.0,42055000.0,40395000.0,40355000.0,40332000.0,39561000.0,39561000.0,37540000.0,63196000.0,58905000.0,57902000.0,55452000.0,45329000.0,58946000.0,58669000.0,58643000.0,56368000.0,4984000.0,4969000.0,3510000.0,2807000.0,79356000.0,76485000.0,76336000.0,68855000.0,68827000.0,68799000.0,68714000.0,59604000.0,44906000.0,41551000.0,36253000.0,36200000.0,58507000.0,57375000.0,49336000.0,76409000.0,76255000.0,58902000.0,55372000.0,54549000.0,54512000.0,54492000.0,49386000.0,49117000.0,48608000.0,46294000.0,46072000.0,42514000.0,34150000.0,33912000.0,40367000.0,38752000.0,37674000.0,37500000.0,36267000.0,34099000.0,34068000.0,32750000.0,81705000.0,60098000.0,56894000.0,56419000.0,56366000.0,53226000.0,52530000.0,45394000.0,39516000.0,76860000.0,76829000.0,62184000.0,62009000.0,58591000.0,57855000.0,40891000.0,739000.0,85729000.0,85643000.0,85469000.0,84044000.0,82924000.0,81866000.0,81708000.0,74104000.0,59317000.0,58603000.0,57043000.0,55934000.0,43487000.0,48196000.0,34944000.0,32302000.0,29122000.0,21519000.0,19334000.0,26447000.0,47116000.0,43910000.0,43827000.0,33619000.0,32809000.0,31872000.0,25849000.0,25689000.0,22487000.0,11445000.0,9228000.0,67939000.0,67923000.0,53640000.0,49819000.0,48353000.0,45478000.0,67364000.0,67333000.0,64799000.0,64510000.0,64494000.0,63296000.0,58167000.0,57730000.0,13496000.0,12784000.0,11956000.0,11146000.0,4533000.0,55909000.0,55175000.0,31738000.0,30957000.0,20115000.0,19296000.0,13284000.0,6557000.0,6542000.0,6481000.0,41707000.0,41121000.0,33720000.0,15895000.0,15886000.0,10644000.0,72280000.0,72256000.0,69627000.0,69617000.0,45683000.0,42385000.0,36726000.0,38884000.0,112000.0,85146000.0,84839000.0,84695000.0,83565000.0,82950000.0,82159000.0,77905000.0,77880000.0,72767000.0,71059000.0,71007000.0,58635000.0,57041000.0,42451000.0,42419000.0,32323000.0,32238000.0,29183000.0,26365000.0,26180000.0,80698000.0,57837000.0,40554000.0,29410000.0,28882000.0,27650000.0,80121000.0,39791000.0,30511000.0,30506000.0,30403000.0,35188000.0,35181000.0,72450000.0,50755000.0,50217000.0,49901000.0,49892000.0,49845000.0,49686000.0,49621000.0,76587000.0,60008000.0,59873000.0,56157000.0,55501000.0,55409000.0,54526000.0,54205000.0,50747000.0,45945000.0,45032000.0,44144000.0,44099000.0,43364000.0,38917000.0,37918000.0,37820000.0,36614000.0,36222000.0,35593000.0,32905000.0,54507000.0,38502000.0,37737000.0,36158000.0,86226000.0,55318000.0,53664000.0,50055000.0,43471000.0,35253000.0,35015000.0,34914000.0,33759000.0,33753000.0,32858000.0,31147000.0,86102000.0,73764000.0,71389000.0,36189000.0,34207000.0,82292000.0,1524000.0,72547000.0,71214000.0,70568000.0,64061000.0,63622000.0,59887000.0,58809000.0,58618000.0,56178000.0,49833000.0,46536000.0,44954000.0,63853000.0,61672000.0,52521000.0,47261000.0,79389000.0,79034000.0,78995000.0,78944000.0,7643000.0,6316000.0,5834000.0,5002000.0,2968000.0,81908000.0,80383000.0,78372000.0,38563000.0,71443000.0,62222000.0,54813000.0,43153000.0,36962000.0,53193000.0,35747000.0,35738000.0,35490000.0,35301000.0,56218000.0,78037000.0,49752000.0,56620000.0,50390000.0,47973000.0,44406000.0,40521000.0,40490000.0,69215000.0,68922000.0,52275000.0,48689000.0,47192000.0,69394000.0,65213000.0,63776000.0,62789000.0,54609000.0,54579000.0,38467000.0,58631000.0,55948000.0,54732000.0,54469000.0,40347000.0,40019000.0,38220000.0,38188000.0,59033000.0,58954000.0,58626000.0,56535000.0,56423000.0,37559000.0,47884000.0,40827000.0,40377000.0,28812000.0,28797000.0,28770000.0,28090000.0,24100000.0,24021000.0,23947000.0,23896000.0,52598000.0,50604000.0,40206000.0,39343000.0,33040000.0,33001000.0,66689000.0,65681000.0,65668000.0,65640000.0,32501000.0,68916000.0,68665000.0,68644000.0,37672000.0,37663000.0,69821000.0,69815000.0,69799000.0,66859000.0,86290000.0,85789000.0,84028000.0,69123000.0,69116000.0,69097000.0,59416000.0,58632000.0,57116000.0,57099000.0,54527000.0,54158000.0,41708000.0,79853000.0,53563000.0,53116000.0,52742000.0,52459000.0,50959000.0,43589000.0,43047000.0,41032000.0,40886000.0,40838000.0,32461000.0,63693000.0,60689000.0,55857000.0,55851000.0,53105000.0,50411000.0,49522000.0,49254000.0,49094000.0,86233000.0,57294000.0,53244000.0,53228000.0,55732000.0,55515000.0,44473000.0,37828000.0,37821000.0,81973000.0,60480000.0,36487000.0,36423000.0,59732000.0,56659000.0,55100000.0,50949000.0,43744000.0,43262000.0,81918000.0,66986000.0,66193000.0,62374000.0,55516000.0,46693000.0,45753000.0,44567000.0,42491000.0,41876000.0,41428000.0,40703000.0,40239000.0,38502000.0,38483000.0,37038000.0,36241000.0,35646000.0,54484000.0,46667000.0,36335000.0,42411000.0,60637000.0,59782000.0,59756000.0,59626000.0,56561000.0,56520000.0,32840000.0,63410000.0,63386000.0,63344000.0,63232000.0,61926000.0,61813000.0,61790000.0,61753000.0,36891000.0,33460000.0,32465000.0,32135000.0,27736000.0,27720000.0,86032000.0,84089000.0,84050000.0,84003000.0,81543000.0,81122000.0,81119000.0,81102000.0,61825000.0,59620000.0,55794000.0,49289000.0,48297000.0,47797000.0,46758000.0,43503000.0,42923000.0,41991000.0,40234000.0,38783000.0,79109000.0,78351000.0,76279000.0,74857000.0,73416000.0,73214000.0,25160000.0,25126000.0,82385000.0,81899000.0,80547000.0,79668000.0,78051000.0,75802000.0,75309000.0,73747000.0,72380000.0,23725000.0,23317000.0,75875000.0,75843000.0,73795000.0,71146000.0,58385000.0,57988000.0,57908000.0,57482000.0,56673000.0,53675000.0,53644000.0,53320000.0,52324000.0,52304000.0,50930000.0,49442000.0,47952000.0,59034000.0,57860000.0,22927000.0,19298000.0,10643000.0,10507000.0,9088000.0,8384000.0,59273000.0,58781000.0,27137000.0,27111000.0,27013000.0,19671000.0,36677000.0,34856000.0,34722000.0,67534000.0,67513000.0,63058000.0,63001000.0,62970000.0,45707000.0,44276000.0,33295000.0,81979000.0,75713000.0,74061000.0,61369000.0,61319000.0,61243000.0,61210000.0,61143000.0,55967000.0,55509000.0,54960000.0,54928000.0,54826000.0,52195000.0,33627000.0,77719000.0,59383000.0,58451000.0,41668000.0,61138000.0,61070000.0,57086000.0,53665000.0,53626000.0,52010000.0,38108000.0,64100000.0,56185000.0,56125000.0,39216000.0,43698000.0,39611000.0,37993000.0,34634000.0,28727000.0,26693000.0,79127000.0,78719000.0,78695000.0,45447000.0,45442000.0,40252000.0,34805000.0,34576000.0,42049000.0,42025000.0,41739000.0,74553000.0,74070000.0,73483000.0,64675000.0,64151000.0,64067000.0,59289000.0,59158000.0,58180000.0,58072000.0,57330000.0,56703000.0,56653000.0,55366000.0,55024000.0,54833000.0,53381000.0,52498000.0,50852000.0,50838000.0,47967000.0,47499000.0,45198000.0,45094000.0,42976000.0,35734000.0,32284000.0,32265000.0,31905000.0,27790000.0,74363000.0,57760000.0,56937000.0,56864000.0,56858000.0,53944000.0,53802000.0,53545000.0,53528000.0,52474000.0,32767000.0,31896000.0,31792000.0,27501000.0,47251000.0,47017000.0,46463000.0,46442000.0,40339000.0,31051000.0,50750000.0,50599000.0,49578000.0,49554000.0,73500000.0,73475000.0,70621000.0,70614000.0,70586000.0,56388000.0,55535000.0,55528000.0,48308000.0,48281000.0,47245000.0,46978000.0,40198000.0,40014000.0,39776000.0,39024000.0,36546000.0,35742000.0,30924000.0,30526000.0,30435000.0,24963000.0,24620000.0,24168000.0,23729000.0,23686000.0,23636000.0,21645000.0,21299000.0,19977000.0,55604000.0,24595000.0,24299000.0,23375000.0,23269000.0,49089000.0,48249000.0,48241000.0,36382000.0,33153000.0,33127000.0,32806000.0,27653000.0,27634000.0,27589000.0,26947000.0,18320000.0,44018000.0,43230000.0,81764000.0,81676000.0,81586000.0,80755000.0,80211000.0,80184000.0,80175000.0,79955000.0,79901000.0,59168000.0,58252000.0,50757000.0,50749000.0,50189000.0,50151000.0,50020000.0,40623000.0,31877000.0,30722000.0,30656000.0,77259000.0,77021000.0,76988000.0,73108000.0,65320000.0,63270000.0,63231000.0,54727000.0,54716000.0,54648000.0,53347000.0,53302000.0,49285000.0,48227000.0,40139000.0,83071000.0,83035000.0,66583000.0,66545000.0,66424000.0,52594000.0,52372000.0,52327000.0,59947000.0,59923000.0,32204000.0,84194000.0,82425000.0,76388000.0,74825000.0,73729000.0,70470000.0,68899000.0,64203000.0,53992000.0,53625000.0,54554000.0,53632000.0,50358000.0,49921000.0,47637000.0,47526000.0,40643000.0,3917000.0,3153000.0,3127000.0,81053000.0,81020000.0,80358000.0,77986000.0,76563000.0,74807000.0,67486000.0,67471000.0,60115000.0,57414000.0,57407000.0,84293000.0,61519000.0,61511000.0,51456000.0,51322000.0,37148000.0,37013000.0,36948000.0,60065000.0,59609000.0,53798000.0,53288000.0,52834000.0,51805000.0,51610000.0,85784000.0,56799000.0,55419000.0,52873000.0,52842000.0,52809000.0,51258000.0,51200000.0,43811000.0,43802000.0,43777000.0,38214000.0,37902000.0,36933000.0,85876000.0,85836000.0,85319000.0,78959000.0,78765000.0,75720000.0,73593000.0,70916000.0,69733000.0,69713000.0,69630000.0,65614000.0,57332000.0,56598000.0,51852000.0,51754000.0,40586000.0,37457000.0,75153000.0,73337000.0,70551000.0,70121000.0,64818000.0,64790000.0,56418000.0,55193000.0,51519000.0,49186000.0,48787000.0,48701000.0,48667000.0,34436000.0,34391000.0,2749000.0,2254000.0,84792000.0,83476000.0,83196000.0,83162000.0,79492000.0,59597000.0,55819000.0,53468000.0,58280000.0,58273000.0,57142000.0,57106000.0,54679000.0,54655000.0,34278000.0,83411000.0,53820000.0,42068000.0,41153000.0,36890000.0,36635000.0,36179000.0,58922000.0,58595000.0,43580000.0,39588000.0,33646000.0,73218000.0,38810000.0,46672000.0,46332000.0,77175000.0,59963000.0,57307000.0,57303000.0,57279000.0,57174000.0,55784000.0,54912000.0,53559000.0,53342000.0,52983000.0,52977000.0,52948000.0,35352000.0,61961000.0,56662000.0,56562000.0,55779000.0,53456000.0,51856000.0,51761000.0,50343000.0,50331000.0,48743000.0,58610000.0,58570000.0,50932000.0,40855000.0,80639000.0,82783000.0,73741000.0,72741000.0,48247000.0,46986000.0,58202000.0,55449000.0,55255000.0,54996000.0,38285000.0,38252000.0,64791000.0,60054000.0,59837000.0,59283000.0,56943000.0,50335000.0,50242000.0,50224000.0,36745000.0,77982000.0,77860000.0,77749000.0,77676000.0,77609000.0,76843000.0,69350000.0,69308000.0,69064000.0,69022000.0,49919000.0,49389000.0,49330000.0,26581000.0,26581000.0,38699000.0,71775000.0,71775000.0,28481000.0,55517000.0,51548000.0,40124000.0,54399000.0,79978000.0,76335000.0,53610000.0,53590000.0,53541000.0,47291000.0,42229000.0,42203000.0,58174000.0,51371000.0,43404000.0,42330000.0,40242000.0,48990000.0,48670000.0,48230000.0,47018000.0,46681000.0,46550000.0,46454000.0,37557000.0,37530000.0,36264000.0,36212000.0,34387000.0,34368000.0,34348000.0,33723000.0,206000.0,85903000.0,82838000.0,77590000.0,76504000.0,41269000.0,71278000.0,43723000.0,71280000.0,71209000.0,68127000.0,15066000.0,13813000.0,35482000.0,50395000.0,52968000.0,49195000.0,49154000.0,48184000.0,44294000.0,44116000.0,42304000.0,42298000.0,83805000.0,83798000.0,53396000.0,53071000.0,52735000.0,48994000.0,48087000.0,48024000.0,32253000.0,80700000.0,80572000.0,78825000.0,78340000.0,78220000.0,78152000.0,77845000.0,74165000.0,74026000.0,74007000.0,73240000.0,72779000.0,72765000.0,68470000.0,68392000.0,66351000.0,58664000.0,58556000.0,58471000.0,58410000.0,55520000.0,39043000.0,38847000.0,36048000.0,35978000.0,34567000.0,85722000.0,84971000.0,81266000.0,77481000.0,76556000.0,76549000.0,74456000.0,74432000.0,71135000.0,70133000.0,69336000.0,68279000.0,67948000.0,65438000.0,65417000.0,40248000.0,40231000.0,40203000.0,35120000.0,34990000.0,34945000.0,79692000.0,78240000.0,78063000.0,55979000.0,55506000.0,54063000.0,54045000.0,49334000.0,48928000.0,47168000.0,46973000.0,46665000.0,46628000.0,61565000.0,61557000.0,57158000.0,56724000.0,56172000.0,54208000.0,54025000.0,54004000.0,50873000.0,50137000.0,49876000.0,49767000.0,76282000.0,75757000.0,75634000.0,61555000.0,59844000.0,59822000.0,57680000.0,56600000.0,54278000.0,54270000.0,44645000.0,43744000.0,43708000.0,37592000.0,37556000.0,34488000.0,34395000.0,34066000.0,3371000.0,76163000.0,81899000.0,79167000.0,78857000.0,58644000.0,71341000.0,69101000.0,51533000.0,40796000.0,40796000.0,64417000.0,62735000.0,57061000.0,51092000.0,39167000.0,83345000.0,5031000.0,4323000.0,76308000.0,76091000.0,76054000.0,72072000.0,43412000.0,43395000.0,42798000.0,38143000.0,38143000.0,63146000.0,61822000.0,61399000.0,61399000.0,61087000.0,61052000.0,59572000.0,59572000.0,51141000.0,51119000.0,50744000.0,49818000.0,49371000.0,47146000.0,46104000.0,44380000.0,43783000.0,43738000.0,43198000.0,625000.0,85413000.0,79072000.0,67396000.0,65276000.0,65276000.0,65231000.0,65183000.0,65172000.0,63669000.0,58138000.0,58115000.0,44178000.0,41567000.0,5731000.0,5164000.0,85901000.0,84027000.0,83232000.0,83204000.0,66962000.0,64246000.0,30309000.0,30262000.0,25525000.0,19045000.0,16786000.0,14885000.0,14035000.0,74469000.0,16813000.0,13944000.0,1495000.0,636000.0,86131000.0,85834000.0,83399000.0,83005000.0,82969000.0,63672000.0,45993000.0,45903000.0,45154000.0,45011000.0,40972000.0,40022000.0,39507000.0,34603000.0,32580000.0,73855000.0,59956000.0,49214000.0,48780000.0,48687000.0,48417000.0,48042000.0,47967000.0,37772000.0,23070000.0,22212000.0,22212000.0,22207000.0,6301000.0,85578000.0,83806000.0,82348000.0,80754000.0,79868000.0,79369000.0,79079000.0,78594000.0,74387000.0,72603000.0,72411000.0,72298000.0,72243000.0,58032000.0,57687000.0,57183000.0,56232000.0,56232000.0,55851000.0,54433000.0,54433000.0,54075000.0,48724000.0,50857000.0,33694000.0,33675000.0,31727000.0,31693000.0,31318000.0,31303000.0,2661000.0,80838000.0,80529000.0,77748000.0,77717000.0,77649000.0,77649000.0,77633000.0,75795000.0,75134000.0,72702000.0,52416000.0,51092000.0,51085000.0,51005000.0,50972000.0,50921000.0,45532000.0,45571000.0,45532000.0,45532000.0,81515000.0,81487000.0,81487000.0,76745000.0,76707000.0,76707000.0,67691000.0,67626000.0,67626000.0,67275000.0,67275000.0,67241000.0,66456000.0,66456000.0,64142000.0,63946000.0,61167000.0,61167000.0,61133000.0,61097000.0,60953000.0,52826000.0,46569000.0,46569000.0,46535000.0,46467000.0,62317000.0,62003000.0,62003000.0,61986000.0,60916000.0,60916000.0,60886000.0,49334000.0,48415000.0,47429000.0,46990000.0,45503000.0,69735000.0,35737000.0,35737000.0,35223000.0,35223000.0,35030000.0,35002000.0,85167000.0,85049000.0,84687000.0,33359000.0,63046000.0,63032000.0,62772000.0,62772000.0,62751000.0,62751000.0,62711000.0,62711000.0,58236000.0,58236000.0,58219000.0,57297000.0,57297000.0,57123000.0,54419000.0,54356000.0,48560000.0,45573000.0,42332000.0,63906000.0,63436000.0,61720000.0,61720000.0,61716000.0,61250000.0,55424000.0,53272000.0,52281000.0,52281000.0,52277000.0,40071000.0,38028000.0,61703000.0,53345000.0,51975000.0,41524000.0,41415000.0,41323000.0,49644000.0,55157000.0,54822000.0,54249000.0,54217000.0,64432000.0,64432000.0,64416000.0,64409000.0,61838000.0,61773000.0,60755000.0,60755000.0,56076000.0,56076000.0,56076000.0,55886000.0,55337000.0,55337000.0,55300000.0,53314000.0,52410000.0,52393000.0,52360000.0,50150000.0,40355000.0,40355000.0,40355000.0,36397000.0,30988000.0,29905000.0,29892000.0,28336000.0,28336000.0,28336000.0,28270000.0,28235000.0,67199000.0,67199000.0,67199000.0,57981000.0,57028000.0,57028000.0,56979000.0,54608000.0,53834000.0,53777000.0,51719000.0,51139000.0,49757000.0,49715000.0,49083000.0,48312000.0,78007000.0,68975000.0,45100000.0,63842000.0,52473000.0,50129000.0,42009000.0,41784000.0,41784000.0,41784000.0,58122000.0,58083000.0,84858000.0,84858000.0,80007000.0,78298000.0,78210000.0,76316000.0,76316000.0,67772000.0,67772000.0,62663000.0,62663000.0,48674000.0,48374000.0,45002000.0,43522000.0,43423000.0,41122000.0,40894000.0,40367000.0,40334000.0,64888000.0,64888000.0,45996000.0,45818000.0,30657000.0,30006000.0,28261000.0,26749000.0,26621000.0,26471000.0,30559000.0,62093000.0,62093000.0,62075000.0,62075000.0,58420000.0,58420000.0,56039000.0,56039000.0,52777000.0,52765000.0,48024000.0,48024000.0,48024000.0,41543000.0,28149000.0,50594000.0,27602000.0,26763000.0,26357000.0,83769000.0,83761000.0,2628000.0,80945000.0,80707000.0,80696000.0,76922000.0,76904000.0,54485000.0,53794000.0,53014000.0,51085000.0,84398000.0,81980000.0,80332000.0,77740000.0,4253000.0,4067000.0,4042000.0,84846000.0,75533000.0,80035000.0,79998000.0,67907000.0,63188000.0,63182000.0,60625000.0,58662000.0,57946000.0,57068000.0,57068000.0,56934000.0,33638000.0,37885000.0,28196000.0,3423000.0,81697000.0,56334000.0,56138000.0,65209000.0,65176000.0,64135000.0,62472000.0,51618000.0,51182000.0,40855000.0,38331000.0,62068000.0,61284000.0,47947000.0,43909000.0,48434000.0,40596000.0,47419000.0,47415000.0,41514000.0,78888000.0,77918000.0,60773000.0,59130000.0,57409000.0,57369000.0,57357000.0,61475000.0,452000.0,60975000.0,56470000.0,55840000.0,51767000.0,36749000.0,36749000.0,35654000.0,66609000.0,66580000.0,2660000.0,2640000.0,79241000.0,74090000.0,73954000.0,73929000.0,69075000.0,68299000.0,64160000.0,48520000.0,48232000.0,48187000.0,40351000.0,39271000.0,36995000.0,68327000.0,66688000.0,66619000.0,66549000.0,66517000.0,58018000.0,52174000.0,40663000.0,37143000.0,58275000.0,36784000.0,57283000.0,54595000.0,46216000.0,52251000.0,36022000.0,44999000.0,44981000.0,44956000.0,36787000.0,50487000.0,43481000.0,37909000.0,62709000.0,61307000.0,61245000.0,39157000.0,39145000.0,39123000.0,38191000.0,62125000.0,62100000.0,62073000.0,58882000.0,58680000.0,43473000.0,58896000.0,58817000.0,58088000.0,58034000.0,58002000.0,38945000.0,38735000.0,36025000.0,32942000.0,32450000.0,32223000.0,83088000.0,79089000.0,56078000.0,55119000.0,48269000.0,54173000.0,24670000.0,56039000.0,50378000.0,84915000.0,68171000.0,61022000.0,38879000.0,38351000.0,37812000.0,36962000.0,36576000.0,36354000.0,36220000.0,67657000.0,61284000.0,67657000.0,61284000.0,50909000.0,45721000.0,45660000.0,47461000.0,47199000.0,66949000.0,65840000.0,4593000.0,1539000.0,79802000.0,79784000.0,62536000.0,56579000.0,56546000.0,63575000.0,63404000.0,40853000.0,40647000.0,46983000.0,46935000.0,78728000.0,63742000.0,3911000.0,962000.0,82465000.0,82442000.0,73077000.0,37792000.0,74378000.0,36876000.0,3605000.0,34000.0,78431000.0,78329000.0,77662000.0,76448000.0,76407000.0,36622000.0,36615000.0,9103000.0,9092000.0,79647000.0,77109000.0,63049000.0,76929000.0,76060000.0,54967000.0,39283000.0,61304000.0,47123000.0,62197000.0,39102000.0,39081000.0,82004000.0,80813000.0,80773000.0,80714000.0,80653000.0,61876000.0,60136000.0,54458000.0,50655000.0,50578000.0,50364000.0,50345000.0,47927000.0,47654000.0,46104000.0,39062000.0,36291000.0,35773000.0,77004000.0,69883000.0,65543000.0,64924000.0,62284000.0,58566000.0,57673000.0,57648000.0,57618000.0,47624000.0,82306000.0,80716000.0,76243000.0,6217000.0,6045000.0,83173000.0,76451000.0,55319000.0,52787000.0,52188000.0,50328000.0,48660000.0,48607000.0,48217000.0,47833000.0,45455000.0,44825000.0,40637000.0,54712000.0,33404000.0,32280000.0,47359000.0,47340000.0,45452000.0,45276000.0,45209000.0,45045000.0,44990000.0,44848000.0,44793000.0,44730000.0,47379000.0,46358000.0,44532000.0,39204000.0,65908000.0,61737000.0,58959000.0,59329000.0,64003000.0,43070000.0]},\"selected\":{\"id\":\"2229\"},\"selection_policy\":{\"id\":\"2228\"}},\"id\":\"2102\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"2125\",\"type\":\"ResetTool\"},{\"attributes\":{\"months\":[0,4,8]},\"id\":\"2240\",\"type\":\"MonthsTicker\"},{\"attributes\":{},\"id\":\"2124\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"2126\",\"type\":\"HelpTool\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"2223\"},\"group\":null,\"major_label_policy\":{\"id\":\"2224\"},\"ticker\":{\"id\":\"2119\"}},\"id\":\"2118\",\"type\":\"CategoricalAxis\"},{\"attributes\":{},\"id\":\"2229\",\"type\":\"Selection\"},{\"attributes\":{\"months\":[0,6]},\"id\":\"2241\",\"type\":\"MonthsTicker\"},{\"attributes\":{},\"id\":\"2224\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"2110\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"2227\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"2228\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"tools\":[{\"id\":\"2121\"},{\"id\":\"2122\"},{\"id\":\"2123\"},{\"id\":\"2124\"},{\"id\":\"2125\"},{\"id\":\"2126\"}]},\"id\":\"2128\",\"type\":\"Toolbar\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.3},\"fill_color\":{\"value\":\"#1f77b4\"},\"hatch_alpha\":{\"value\":0.3},\"line_alpha\":{\"value\":0.3},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"time\"},\"y\":{\"field\":\"day\",\"transform\":{\"id\":\"2135\"}}},\"id\":\"2137\",\"type\":\"Circle\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"text\":\"Commits by Time of Day (US/Central) 2012\\u20142016\"},\"id\":\"2104\",\"type\":\"Title\"},{\"attributes\":{\"mantissas\":[1,2,5],\"max_interval\":500.0,\"num_minor_ticks\":0},\"id\":\"2231\",\"type\":\"AdaptiveTicker\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"2142\"},\"group\":null,\"major_label_policy\":{\"id\":\"2227\"},\"ticker\":{\"id\":\"2115\"}},\"id\":\"2114\",\"type\":\"DatetimeAxis\"},{\"attributes\":{},\"id\":\"2242\",\"type\":\"YearsTicker\"},{\"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\":\"time\"},\"y\":{\"field\":\"day\",\"transform\":{\"id\":\"2135\"}}},\"id\":\"2138\",\"type\":\"Circle\"},{\"attributes\":{\"base\":60,\"mantissas\":[1,2,5,10,15,20,30],\"max_interval\":1800000.0,\"min_interval\":1000.0,\"num_minor_ticks\":0},\"id\":\"2232\",\"type\":\"AdaptiveTicker\"},{\"attributes\":{\"axis\":{\"id\":\"2118\"},\"coordinates\":null,\"dimension\":1,\"grid_line_color\":null,\"group\":null,\"ticker\":null},\"id\":\"2120\",\"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\":\"2127\",\"type\":\"BoxAnnotation\"},{\"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\":\"time\"},\"y\":{\"field\":\"day\",\"transform\":{\"id\":\"2135\"}}},\"id\":\"2139\",\"type\":\"Circle\"},{\"attributes\":{\"num_minor_ticks\":5,\"tickers\":[{\"id\":\"2231\"},{\"id\":\"2232\"},{\"id\":\"2233\"},{\"id\":\"2234\"},{\"id\":\"2235\"},{\"id\":\"2236\"},{\"id\":\"2237\"},{\"id\":\"2238\"},{\"id\":\"2239\"},{\"id\":\"2240\"},{\"id\":\"2241\"},{\"id\":\"2242\"}]},\"id\":\"2115\",\"type\":\"DatetimeTicker\"},{\"attributes\":{\"base\":24,\"mantissas\":[1,2,4,6,8,12],\"max_interval\":43200000.0,\"min_interval\":3600000.0,\"num_minor_ticks\":0},\"id\":\"2233\",\"type\":\"AdaptiveTicker\"},{\"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\":\"2234\",\"type\":\"DaysTicker\"},{\"attributes\":{\"overlay\":{\"id\":\"2127\"}},\"id\":\"2123\",\"type\":\"BoxZoomTool\"}],\"root_ids\":[\"2103\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.3\"}};\n",
|
1583
|
-
" const render_items = [{\"docid\":\"33657638-0484-425d-a373-72d98c9b108f\",\"root_ids\":[\"2103\"],\"roots\":{\"2103\":\"27f693df-6151-4320-988b-9989c6012bd8\"}}];\n",
|
1584
|
-
" root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
|
1585
|
-
" }\n",
|
1586
|
-
" if (root.Bokeh !== undefined) {\n",
|
1587
|
-
" embed_document(root);\n",
|
1588
|
-
" } else {\n",
|
1589
|
-
" let attempts = 0;\n",
|
1590
|
-
" const timer = setInterval(function(root) {\n",
|
1591
|
-
" if (root.Bokeh !== undefined) {\n",
|
1592
|
-
" clearInterval(timer);\n",
|
1593
|
-
" embed_document(root);\n",
|
1594
|
-
" } else {\n",
|
1595
|
-
" attempts++;\n",
|
1596
|
-
" if (attempts > 100) {\n",
|
1597
|
-
" clearInterval(timer);\n",
|
1598
|
-
" console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n",
|
1599
|
-
" }\n",
|
1600
|
-
" }\n",
|
1601
|
-
" }, 10, root)\n",
|
1602
|
-
" }\n",
|
1603
|
-
"})(window);"
|
1604
|
-
],
|
1605
|
-
"application/vnd.bokehjs_exec.v0+json": ""
|
1606
|
-
},
|
1607
|
-
"metadata": {
|
1608
|
-
"application/vnd.bokehjs_exec.v0+json": {
|
1609
|
-
"id": "2103"
|
1610
|
-
}
|
1611
|
-
},
|
1612
|
-
"output_type": "display_data"
|
1613
|
-
}
|
1614
|
-
],
|
1615
|
-
"source": [
|
1616
|
-
"from bokeh.transform import jitter\n",
|
1617
|
-
"\n",
|
1618
|
-
"DAYS = ['Sun', 'Sat', 'Fri', 'Thu', 'Wed', 'Tue', 'Mon']\n",
|
1619
|
-
"\n",
|
1620
|
-
"source = ColumnDataSource(data)\n",
|
1621
|
-
"\n",
|
1622
|
-
"p = figure(plot_width=800, plot_height=300, y_range=DAYS, x_axis_type='datetime', \n",
|
1623
|
-
" title=\"Commits by Time of Day (US/Central) 2012—2016\")\n",
|
1624
|
-
"\n",
|
1625
|
-
"p.circle(x='time', y=jitter('day', width=0.6, range=p.y_range), source=source, alpha=0.3)\n",
|
1626
|
-
"\n",
|
1627
|
-
"p.xaxis[0].formatter.days = ['%Hh']\n",
|
1628
|
-
"p.x_range.range_padding = 0\n",
|
1629
|
-
"p.ygrid.grid_line_color = None\n",
|
1630
|
-
"\n",
|
1631
|
-
"show(p)"
|
1632
|
-
]
|
1633
|
-
},
|
1634
|
-
{
|
1635
|
-
"cell_type": "code",
|
1636
|
-
"execution_count": 19,
|
1637
|
-
"metadata": {},
|
1638
|
-
"outputs": [],
|
1639
|
-
"source": [
|
1640
|
-
"# Exercise: Create a plot using categorical coordinates and any non-\"bar\" glyphs\n"
|
1641
|
-
]
|
1642
|
-
},
|
1643
|
-
{
|
1644
|
-
"cell_type": "markdown",
|
1645
|
-
"metadata": {},
|
1646
|
-
"source": [
|
1647
|
-
"# Next Section"
|
1648
|
-
]
|
1649
|
-
},
|
1650
|
-
{
|
1651
|
-
"cell_type": "markdown",
|
1652
|
-
"metadata": {},
|
1653
|
-
"source": [
|
1654
|
-
"Click on this link to go to the next notebook: [08 - Graph and Network Plots](08%20-%20Graph%20and%20Network%20Plots.ipynb).\n",
|
1655
|
-
"\n",
|
1656
|
-
"To go back to the overview, click [here](00%20-%20Introduction%20and%20Setup.ipynb)."
|
1657
|
-
]
|
1658
|
-
}
|
1659
|
-
],
|
1660
|
-
"metadata": {
|
1661
|
-
"kernelspec": {
|
1662
|
-
"display_name": "Python 3",
|
1663
|
-
"language": "python",
|
1664
|
-
"name": "python3"
|
1665
|
-
},
|
1666
|
-
"language_info": {
|
1667
|
-
"codemirror_mode": {
|
1668
|
-
"name": "ipython",
|
1669
|
-
"version": 3
|
1670
|
-
},
|
1671
|
-
"file_extension": ".py",
|
1672
|
-
"mimetype": "text/x-python",
|
1673
|
-
"name": "python",
|
1674
|
-
"nbconvert_exporter": "python",
|
1675
|
-
"pygments_lexer": "ipython3",
|
1676
|
-
"version": "3.7.9"
|
1677
|
-
}
|
1678
|
-
},
|
1679
|
-
"nbformat": 4,
|
1680
|
-
"nbformat_minor": 4
|
1681
|
-
}
|