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