j1-template 2022.5.0.rc1 → 2022.5.0.rc4

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