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,1681 @@
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "markdown",
5
+ "metadata": {},
6
+ "source": [
7
+ "<table style=\"float:left; border:none\">\n",
8
+ " <tr style=\"border:none\">\n",
9
+ " <td style=\"border:none\">\n",
10
+ " <a href=\"https://bokeh.org/\"> \n",
11
+ " <img \n",
12
+ " src=\"assets/bokeh-transparent.png\" \n",
13
+ " style=\"width:50px\"\n",
14
+ " >\n",
15
+ " </a> \n",
16
+ " </td>\n",
17
+ " <td style=\"border:none\">\n",
18
+ " <h1>Bokeh Tutorial</h1>\n",
19
+ " </td>\n",
20
+ " </tr>\n",
21
+ "</table>\n",
22
+ "\n",
23
+ "<div style=\"float:right;\"><h2>07. Bar and Categorical Data Plots</h2></div>"
24
+ ]
25
+ },
26
+ {
27
+ "cell_type": "code",
28
+ "execution_count": 1,
29
+ "metadata": {},
30
+ "outputs": [
31
+ {
32
+ "data": {
33
+ "text/html": [
34
+ "<div class=\"bk-root\">\n",
35
+ " <a href=\"https://bokeh.org\" target=\"_blank\" class=\"bk-logo bk-logo-small bk-logo-notebook\"></a>\n",
36
+ " <span id=\"1002\">Loading BokehJS ...</span>\n",
37
+ " </div>\n"
38
+ ]
39
+ },
40
+ "metadata": {},
41
+ "output_type": "display_data"
42
+ },
43
+ {
44
+ "data": {
45
+ "application/javascript": [
46
+ "(function(root) {\n",
47
+ " function now() {\n",
48
+ " return new Date();\n",
49
+ " }\n",
50
+ "\n",
51
+ " const force = true;\n",
52
+ "\n",
53
+ " if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n",
54
+ " root._bokeh_onload_callbacks = [];\n",
55
+ " root._bokeh_is_loading = undefined;\n",
56
+ " }\n",
57
+ "\n",
58
+ "const JS_MIME_TYPE = 'application/javascript';\n",
59
+ " const HTML_MIME_TYPE = 'text/html';\n",
60
+ " const EXEC_MIME_TYPE = 'application/vnd.bokehjs_exec.v0+json';\n",
61
+ " const CLASS_NAME = 'output_bokeh rendered_html';\n",
62
+ "\n",
63
+ " /**\n",
64
+ " * Render data to the DOM node\n",
65
+ " */\n",
66
+ " function render(props, node) {\n",
67
+ " const script = document.createElement(\"script\");\n",
68
+ " node.appendChild(script);\n",
69
+ " }\n",
70
+ "\n",
71
+ " /**\n",
72
+ " * Handle when an output is cleared or removed\n",
73
+ " */\n",
74
+ " function handleClearOutput(event, handle) {\n",
75
+ " const cell = handle.cell;\n",
76
+ "\n",
77
+ " const id = cell.output_area._bokeh_element_id;\n",
78
+ " const server_id = cell.output_area._bokeh_server_id;\n",
79
+ " // Clean up Bokeh references\n",
80
+ " if (id != null && id in Bokeh.index) {\n",
81
+ " Bokeh.index[id].model.document.clear();\n",
82
+ " delete Bokeh.index[id];\n",
83
+ " }\n",
84
+ "\n",
85
+ " if (server_id !== undefined) {\n",
86
+ " // Clean up Bokeh references\n",
87
+ " const cmd_clean = \"from bokeh.io.state import curstate; print(curstate().uuid_to_server['\" + server_id + \"'].get_sessions()[0].document.roots[0]._id)\";\n",
88
+ " cell.notebook.kernel.execute(cmd_clean, {\n",
89
+ " iopub: {\n",
90
+ " output: function(msg) {\n",
91
+ " const id = msg.content.text.trim();\n",
92
+ " if (id in Bokeh.index) {\n",
93
+ " Bokeh.index[id].model.document.clear();\n",
94
+ " delete Bokeh.index[id];\n",
95
+ " }\n",
96
+ " }\n",
97
+ " }\n",
98
+ " });\n",
99
+ " // Destroy server and session\n",
100
+ " const cmd_destroy = \"import bokeh.io.notebook as ion; ion.destroy_server('\" + server_id + \"')\";\n",
101
+ " cell.notebook.kernel.execute(cmd_destroy);\n",
102
+ " }\n",
103
+ " }\n",
104
+ "\n",
105
+ " /**\n",
106
+ " * Handle when a new output is added\n",
107
+ " */\n",
108
+ " function handleAddOutput(event, handle) {\n",
109
+ " const output_area = handle.output_area;\n",
110
+ " const output = handle.output;\n",
111
+ "\n",
112
+ " // limit handleAddOutput to display_data with EXEC_MIME_TYPE content only\n",
113
+ " if ((output.output_type != \"display_data\") || (!Object.prototype.hasOwnProperty.call(output.data, EXEC_MIME_TYPE))) {\n",
114
+ " return\n",
115
+ " }\n",
116
+ "\n",
117
+ " const toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n",
118
+ "\n",
119
+ " if (output.metadata[EXEC_MIME_TYPE][\"id\"] !== undefined) {\n",
120
+ " toinsert[toinsert.length - 1].firstChild.textContent = output.data[JS_MIME_TYPE];\n",
121
+ " // store reference to embed id on output_area\n",
122
+ " output_area._bokeh_element_id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n",
123
+ " }\n",
124
+ " if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n",
125
+ " const bk_div = document.createElement(\"div\");\n",
126
+ " bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n",
127
+ " const script_attrs = bk_div.children[0].attributes;\n",
128
+ " for (let i = 0; i < script_attrs.length; i++) {\n",
129
+ " toinsert[toinsert.length - 1].firstChild.setAttribute(script_attrs[i].name, script_attrs[i].value);\n",
130
+ " toinsert[toinsert.length - 1].firstChild.textContent = bk_div.children[0].textContent\n",
131
+ " }\n",
132
+ " // store reference to server id on output_area\n",
133
+ " output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n",
134
+ " }\n",
135
+ " }\n",
136
+ "\n",
137
+ " function register_renderer(events, OutputArea) {\n",
138
+ "\n",
139
+ " function append_mime(data, metadata, element) {\n",
140
+ " // create a DOM node to render to\n",
141
+ " const toinsert = this.create_output_subarea(\n",
142
+ " metadata,\n",
143
+ " CLASS_NAME,\n",
144
+ " EXEC_MIME_TYPE\n",
145
+ " );\n",
146
+ " this.keyboard_manager.register_events(toinsert);\n",
147
+ " // Render to node\n",
148
+ " const props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n",
149
+ " render(props, toinsert[toinsert.length - 1]);\n",
150
+ " element.append(toinsert);\n",
151
+ " return toinsert\n",
152
+ " }\n",
153
+ "\n",
154
+ " /* Handle when an output is cleared or removed */\n",
155
+ " events.on('clear_output.CodeCell', handleClearOutput);\n",
156
+ " events.on('delete.Cell', handleClearOutput);\n",
157
+ "\n",
158
+ " /* Handle when a new output is added */\n",
159
+ " events.on('output_added.OutputArea', handleAddOutput);\n",
160
+ "\n",
161
+ " /**\n",
162
+ " * Register the mime type and append_mime function with output_area\n",
163
+ " */\n",
164
+ " OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n",
165
+ " /* Is output safe? */\n",
166
+ " safe: true,\n",
167
+ " /* Index of renderer in `output_area.display_order` */\n",
168
+ " index: 0\n",
169
+ " });\n",
170
+ " }\n",
171
+ "\n",
172
+ " // register the mime type if in Jupyter Notebook environment and previously unregistered\n",
173
+ " if (root.Jupyter !== undefined) {\n",
174
+ " const events = require('base/js/events');\n",
175
+ " const OutputArea = require('notebook/js/outputarea').OutputArea;\n",
176
+ "\n",
177
+ " if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n",
178
+ " register_renderer(events, OutputArea);\n",
179
+ " }\n",
180
+ " }\n",
181
+ " if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n",
182
+ " root._bokeh_timeout = Date.now() + 5000;\n",
183
+ " root._bokeh_failed_load = false;\n",
184
+ " }\n",
185
+ "\n",
186
+ " const NB_LOAD_WARNING = {'data': {'text/html':\n",
187
+ " \"<div style='background-color: #fdd'>\\n\"+\n",
188
+ " \"<p>\\n\"+\n",
189
+ " \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n",
190
+ " \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n",
191
+ " \"</p>\\n\"+\n",
192
+ " \"<ul>\\n\"+\n",
193
+ " \"<li>re-rerun `output_notebook()` to attempt to load from CDN again, or</li>\\n\"+\n",
194
+ " \"<li>use INLINE resources instead, as so:</li>\\n\"+\n",
195
+ " \"</ul>\\n\"+\n",
196
+ " \"<code>\\n\"+\n",
197
+ " \"from bokeh.resources import INLINE\\n\"+\n",
198
+ " \"output_notebook(resources=INLINE)\\n\"+\n",
199
+ " \"</code>\\n\"+\n",
200
+ " \"</div>\"}};\n",
201
+ "\n",
202
+ " function display_loaded() {\n",
203
+ " const el = document.getElementById(\"1002\");\n",
204
+ " if (el != null) {\n",
205
+ " el.textContent = \"BokehJS is loading...\";\n",
206
+ " }\n",
207
+ " if (root.Bokeh !== undefined) {\n",
208
+ " if (el != null) {\n",
209
+ " el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n",
210
+ " }\n",
211
+ " } else if (Date.now() < root._bokeh_timeout) {\n",
212
+ " setTimeout(display_loaded, 100)\n",
213
+ " }\n",
214
+ " }\n",
215
+ "\n",
216
+ " function run_callbacks() {\n",
217
+ " try {\n",
218
+ " root._bokeh_onload_callbacks.forEach(function(callback) {\n",
219
+ " if (callback != null)\n",
220
+ " callback();\n",
221
+ " });\n",
222
+ " } finally {\n",
223
+ " delete root._bokeh_onload_callbacks\n",
224
+ " }\n",
225
+ " console.debug(\"Bokeh: all callbacks have finished\");\n",
226
+ " }\n",
227
+ "\n",
228
+ " function load_libs(css_urls, js_urls, callback) {\n",
229
+ " if (css_urls == null) css_urls = [];\n",
230
+ " if (js_urls == null) js_urls = [];\n",
231
+ "\n",
232
+ " root._bokeh_onload_callbacks.push(callback);\n",
233
+ " if (root._bokeh_is_loading > 0) {\n",
234
+ " console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n",
235
+ " return null;\n",
236
+ " }\n",
237
+ " if (js_urls == null || js_urls.length === 0) {\n",
238
+ " run_callbacks();\n",
239
+ " return null;\n",
240
+ " }\n",
241
+ " console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n",
242
+ " root._bokeh_is_loading = css_urls.length + js_urls.length;\n",
243
+ "\n",
244
+ " function on_load() {\n",
245
+ " root._bokeh_is_loading--;\n",
246
+ " if (root._bokeh_is_loading === 0) {\n",
247
+ " console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n",
248
+ " run_callbacks()\n",
249
+ " }\n",
250
+ " }\n",
251
+ "\n",
252
+ " function on_error(url) {\n",
253
+ " console.error(\"failed to load \" + url);\n",
254
+ " }\n",
255
+ "\n",
256
+ " for (let i = 0; i < css_urls.length; i++) {\n",
257
+ " const url = css_urls[i];\n",
258
+ " const element = document.createElement(\"link\");\n",
259
+ " element.onload = on_load;\n",
260
+ " element.onerror = on_error.bind(null, url);\n",
261
+ " element.rel = \"stylesheet\";\n",
262
+ " element.type = \"text/css\";\n",
263
+ " element.href = url;\n",
264
+ " console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n",
265
+ " document.body.appendChild(element);\n",
266
+ " }\n",
267
+ "\n",
268
+ " for (let i = 0; i < js_urls.length; i++) {\n",
269
+ " const url = js_urls[i];\n",
270
+ " const element = document.createElement('script');\n",
271
+ " element.onload = on_load;\n",
272
+ " element.onerror = on_error.bind(null, url);\n",
273
+ " element.async = false;\n",
274
+ " element.src = url;\n",
275
+ " console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n",
276
+ " document.head.appendChild(element);\n",
277
+ " }\n",
278
+ " };\n",
279
+ "\n",
280
+ " function inject_raw_css(css) {\n",
281
+ " const element = document.createElement(\"style\");\n",
282
+ " element.appendChild(document.createTextNode(css));\n",
283
+ " document.body.appendChild(element);\n",
284
+ " }\n",
285
+ "\n",
286
+ " const js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-2.4.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-2.4.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.4.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.4.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-2.4.3.min.js\"];\n",
287
+ " const css_urls = [];\n",
288
+ "\n",
289
+ " const inline_js = [ function(Bokeh) {\n",
290
+ " Bokeh.set_log_level(\"info\");\n",
291
+ " },\n",
292
+ "function(Bokeh) {\n",
293
+ " }\n",
294
+ " ];\n",
295
+ "\n",
296
+ " function run_inline_js() {\n",
297
+ " if (root.Bokeh !== undefined || force === true) {\n",
298
+ " for (let i = 0; i < inline_js.length; i++) {\n",
299
+ " inline_js[i].call(root, root.Bokeh);\n",
300
+ " }\n",
301
+ "if (force === true) {\n",
302
+ " display_loaded();\n",
303
+ " }} else if (Date.now() < root._bokeh_timeout) {\n",
304
+ " setTimeout(run_inline_js, 100);\n",
305
+ " } else if (!root._bokeh_failed_load) {\n",
306
+ " console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n",
307
+ " root._bokeh_failed_load = true;\n",
308
+ " } else if (force !== true) {\n",
309
+ " const cell = $(document.getElementById(\"1002\")).parents('.cell').data().cell;\n",
310
+ " cell.output_area.append_execute_result(NB_LOAD_WARNING)\n",
311
+ " }\n",
312
+ " }\n",
313
+ "\n",
314
+ " if (root._bokeh_is_loading === 0) {\n",
315
+ " console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n",
316
+ " run_inline_js();\n",
317
+ " } else {\n",
318
+ " load_libs(css_urls, js_urls, function() {\n",
319
+ " console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n",
320
+ " run_inline_js();\n",
321
+ " });\n",
322
+ " }\n",
323
+ "}(window));"
324
+ ],
325
+ "application/vnd.bokehjs_load.v0+json": "(function(root) {\n function now() {\n return new Date();\n }\n\n const force = true;\n\n if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n root._bokeh_onload_callbacks = [];\n root._bokeh_is_loading = undefined;\n }\n\n\n if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n const NB_LOAD_WARNING = {'data': {'text/html':\n \"<div style='background-color: #fdd'>\\n\"+\n \"<p>\\n\"+\n \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n \"</p>\\n\"+\n \"<ul>\\n\"+\n \"<li>re-rerun `output_notebook()` to attempt to load from CDN again, or</li>\\n\"+\n \"<li>use INLINE resources instead, as so:</li>\\n\"+\n \"</ul>\\n\"+\n \"<code>\\n\"+\n \"from bokeh.resources import INLINE\\n\"+\n \"output_notebook(resources=INLINE)\\n\"+\n \"</code>\\n\"+\n \"</div>\"}};\n\n function display_loaded() {\n const el = document.getElementById(\"1002\");\n if (el != null) {\n el.textContent = \"BokehJS is loading...\";\n }\n if (root.Bokeh !== undefined) {\n if (el != null) {\n el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n }\n } else if (Date.now() < root._bokeh_timeout) {\n setTimeout(display_loaded, 100)\n }\n }\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) {\n if (callback != null)\n callback();\n });\n } finally {\n delete root._bokeh_onload_callbacks\n }\n console.debug(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(css_urls, js_urls, callback) {\n if (css_urls == null) css_urls = [];\n if (js_urls == null) js_urls = [];\n\n root._bokeh_onload_callbacks.push(callback);\n if (root._bokeh_is_loading > 0) {\n console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n }\n if (js_urls == null || js_urls.length === 0) {\n run_callbacks();\n return null;\n }\n console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n root._bokeh_is_loading = css_urls.length + js_urls.length;\n\n function on_load() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n run_callbacks()\n }\n }\n\n function on_error(url) {\n console.error(\"failed to load \" + url);\n }\n\n for (let i = 0; i < css_urls.length; i++) {\n const url = css_urls[i];\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.rel = \"stylesheet\";\n element.type = \"text/css\";\n element.href = url;\n console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n document.body.appendChild(element);\n }\n\n for (let i = 0; i < js_urls.length; i++) {\n const url = js_urls[i];\n const element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.async = false;\n element.src = url;\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n };\n\n function inject_raw_css(css) {\n const element = document.createElement(\"style\");\n element.appendChild(document.createTextNode(css));\n document.body.appendChild(element);\n }\n\n const js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-2.4.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-2.4.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.4.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.4.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-2.4.3.min.js\"];\n const css_urls = [];\n\n const inline_js = [ function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\nfunction(Bokeh) {\n }\n ];\n\n function run_inline_js() {\n if (root.Bokeh !== undefined || force === true) {\n for (let i = 0; i < inline_js.length; i++) {\n inline_js[i].call(root, root.Bokeh);\n }\nif (force === true) {\n display_loaded();\n }} else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n } else if (force !== true) {\n const cell = $(document.getElementById(\"1002\")).parents('.cell').data().cell;\n cell.output_area.append_execute_result(NB_LOAD_WARNING)\n }\n }\n\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n run_inline_js();\n } else {\n load_libs(css_urls, js_urls, function() {\n console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n run_inline_js();\n });\n }\n}(window));"
326
+ },
327
+ "metadata": {},
328
+ "output_type": "display_data"
329
+ }
330
+ ],
331
+ "source": [
332
+ "from bokeh.io import show, output_notebook\n",
333
+ "from bokeh.plotting import figure\n",
334
+ "\n",
335
+ "output_notebook()"
336
+ ]
337
+ },
338
+ {
339
+ "cell_type": "markdown",
340
+ "metadata": {},
341
+ "source": [
342
+ "## Basic Bar Charts\n",
343
+ "\n",
344
+ "Bar charts are a common and important type of plot. Bokeh makes it simple to create all sorts of stacked or nested bar charts, and to deal with categorical data in general."
345
+ ]
346
+ },
347
+ {
348
+ "cell_type": "markdown",
349
+ "metadata": {},
350
+ "source": [
351
+ "The example below shows a simple bar chart created using the `vbar` method for drawing vertical bars. (There is a corresponding `hbar` for horizontal bars.) We also set a few plot properties to make the chart look nicer, see chapter [Styling and Theming](02 - Styling and Theming.ipynb) for information about visual properties."
352
+ ]
353
+ },
354
+ {
355
+ "cell_type": "code",
356
+ "execution_count": 2,
357
+ "metadata": {},
358
+ "outputs": [
359
+ {
360
+ "data": {
361
+ "text/html": [
362
+ "\n",
363
+ " <div class=\"bk-root\" id=\"61868680-7e56-48f2-beb9-009b240f1a1a\" data-root-id=\"1003\"></div>\n"
364
+ ]
365
+ },
366
+ "metadata": {},
367
+ "output_type": "display_data"
368
+ },
369
+ {
370
+ "data": {
371
+ "application/javascript": [
372
+ "(function(root) {\n",
373
+ " function embed_document(root) {\n",
374
+ " const docs_json = {\"7cab2b88-4e21-453e-93e8-1c4d7882896b\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1014\"}],\"center\":[{\"id\":\"1016\"},{\"id\":\"1020\"}],\"height\":250,\"left\":[{\"id\":\"1017\"}],\"renderers\":[{\"id\":\"1039\"}],\"title\":{\"id\":\"1004\"},\"toolbar\":{\"id\":\"1028\"},\"x_range\":{\"id\":\"1006\"},\"x_scale\":{\"id\":\"1010\"},\"y_range\":{\"id\":\"1008\"},\"y_scale\":{\"id\":\"1012\"}},\"id\":\"1003\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"1018\",\"type\":\"BasicTicker\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1043\"},\"group\":null,\"major_label_policy\":{\"id\":\"1044\"},\"ticker\":{\"id\":\"1018\"}},\"id\":\"1017\",\"type\":\"LinearAxis\"},{\"attributes\":{\"fill_color\":{\"value\":\"#1f77b4\"},\"line_color\":{\"value\":\"#1f77b4\"},\"top\":{\"field\":\"top\"},\"width\":{\"value\":0.9},\"x\":{\"field\":\"x\"}},\"id\":\"1036\",\"type\":\"VBar\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#1f77b4\"},\"hatch_alpha\":{\"value\":0.1},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"top\":{\"field\":\"top\"},\"width\":{\"value\":0.9},\"x\":{\"field\":\"x\"}},\"id\":\"1037\",\"type\":\"VBar\"},{\"attributes\":{},\"id\":\"1010\",\"type\":\"CategoricalScale\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1027\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"axis\":{\"id\":\"1017\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1020\",\"type\":\"Grid\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"#1f77b4\"},\"hatch_alpha\":{\"value\":0.2},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"#1f77b4\"},\"top\":{\"field\":\"top\"},\"width\":{\"value\":0.9},\"x\":{\"field\":\"x\"}},\"id\":\"1038\",\"type\":\"VBar\"},{\"attributes\":{\"factors\":[\"Apples\",\"Pears\",\"Nectarines\",\"Plums\",\"Grapes\",\"Strawberries\"]},\"id\":\"1006\",\"type\":\"FactorRange\"},{\"attributes\":{\"data\":{\"top\":[5,3,4,2,4,6],\"x\":[\"Apples\",\"Pears\",\"Nectarines\",\"Plums\",\"Grapes\",\"Strawberries\"]},\"selected\":{\"id\":\"1049\"},\"selection_policy\":{\"id\":\"1048\"}},\"id\":\"1035\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1021\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"1025\",\"type\":\"ResetTool\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"text\":\"Fruit Counts\"},\"id\":\"1004\",\"type\":\"Title\"},{\"attributes\":{\"source\":{\"id\":\"1035\"}},\"id\":\"1040\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1022\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"overlay\":{\"id\":\"1027\"}},\"id\":\"1023\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"start\":0},\"id\":\"1008\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1024\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"1049\",\"type\":\"Selection\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1035\"},\"glyph\":{\"id\":\"1036\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1038\"},\"nonselection_glyph\":{\"id\":\"1037\"},\"view\":{\"id\":\"1040\"}},\"id\":\"1039\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"axis\":{\"id\":\"1014\"},\"coordinates\":null,\"grid_line_color\":null,\"group\":null,\"ticker\":null},\"id\":\"1016\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1046\",\"type\":\"CategoricalTickFormatter\"},{\"attributes\":{},\"id\":\"1026\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"1015\",\"type\":\"CategoricalTicker\"},{\"attributes\":{},\"id\":\"1012\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1043\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1047\",\"type\":\"AllLabels\"},{\"attributes\":{\"tools\":[{\"id\":\"1021\"},{\"id\":\"1022\"},{\"id\":\"1023\"},{\"id\":\"1024\"},{\"id\":\"1025\"},{\"id\":\"1026\"}]},\"id\":\"1028\",\"type\":\"Toolbar\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1046\"},\"group\":null,\"major_label_policy\":{\"id\":\"1047\"},\"ticker\":{\"id\":\"1015\"}},\"id\":\"1014\",\"type\":\"CategoricalAxis\"},{\"attributes\":{},\"id\":\"1048\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1044\",\"type\":\"AllLabels\"}],\"root_ids\":[\"1003\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.3\"}};\n",
375
+ " const render_items = [{\"docid\":\"7cab2b88-4e21-453e-93e8-1c4d7882896b\",\"root_ids\":[\"1003\"],\"roots\":{\"1003\":\"61868680-7e56-48f2-beb9-009b240f1a1a\"}}];\n",
376
+ " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
377
+ " }\n",
378
+ " if (root.Bokeh !== undefined) {\n",
379
+ " embed_document(root);\n",
380
+ " } else {\n",
381
+ " let attempts = 0;\n",
382
+ " const timer = setInterval(function(root) {\n",
383
+ " if (root.Bokeh !== undefined) {\n",
384
+ " clearInterval(timer);\n",
385
+ " embed_document(root);\n",
386
+ " } else {\n",
387
+ " attempts++;\n",
388
+ " if (attempts > 100) {\n",
389
+ " clearInterval(timer);\n",
390
+ " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n",
391
+ " }\n",
392
+ " }\n",
393
+ " }, 10, root)\n",
394
+ " }\n",
395
+ "})(window);"
396
+ ],
397
+ "application/vnd.bokehjs_exec.v0+json": ""
398
+ },
399
+ "metadata": {
400
+ "application/vnd.bokehjs_exec.v0+json": {
401
+ "id": "1003"
402
+ }
403
+ },
404
+ "output_type": "display_data"
405
+ }
406
+ ],
407
+ "source": [
408
+ "# Here is a list of categorical values (or factors)\n",
409
+ "fruits = ['Apples', 'Pears', 'Nectarines', 'Plums', 'Grapes', 'Strawberries']\n",
410
+ "\n",
411
+ "# Set the x_range to the list of categories above\n",
412
+ "p = figure(x_range=fruits, plot_height=250, title=\"Fruit Counts\")\n",
413
+ "\n",
414
+ "# Categorical values can also be used as coordinates\n",
415
+ "p.vbar(x=fruits, top=[5, 3, 4, 2, 4, 6], width=0.9)\n",
416
+ "\n",
417
+ "# Set some properties to make the plot look better\n",
418
+ "p.xgrid.grid_line_color = None\n",
419
+ "p.y_range.start = 0\n",
420
+ "\n",
421
+ "show(p)"
422
+ ]
423
+ },
424
+ {
425
+ "cell_type": "markdown",
426
+ "metadata": {},
427
+ "source": [
428
+ "When we want to create a plot with a categorical range, we pass the ordered list of categorical values to `figure`, e.g. `x_range=['a', 'b', 'c']`. In the plot above, we passed the list of fruits as `x_range`, and we can see those refelected as the x-axis.\n",
429
+ "\n",
430
+ "The `vbar` glyph method takes an `x` location for the center of the bar, a `top` and `bottom` (which defaults to 0), and a `width`. When we are using a categorical range as we are here, each category implicitly has width of 1, so setting `width=0.9` as we have done here makes the bars shrink away from each other. (Another option would be to add some padding to the range.)"
431
+ ]
432
+ },
433
+ {
434
+ "cell_type": "code",
435
+ "execution_count": 3,
436
+ "metadata": {},
437
+ "outputs": [],
438
+ "source": [
439
+ "# Exercise: Create your own simple bar chart\n"
440
+ ]
441
+ },
442
+ {
443
+ "cell_type": "markdown",
444
+ "metadata": {},
445
+ "source": [
446
+ "Since `vbar` is a glyph method, we can use it with a `ColumnDataSource` just as we would with any other glyph. In the example below, we put the data (including color data) in a `ColumnDataSource` and use that to drive our plot. We also add a legend, see chapter [Adding Annotations.ipynb](03 - Adding Annotations.ipynb) for more information about legends and other annotations."
447
+ ]
448
+ },
449
+ {
450
+ "cell_type": "code",
451
+ "execution_count": 4,
452
+ "metadata": {},
453
+ "outputs": [
454
+ {
455
+ "data": {
456
+ "text/html": [
457
+ "\n",
458
+ " <div class=\"bk-root\" id=\"9aa2b85c-244f-409f-8b71-8c5816e3e009\" data-root-id=\"1102\"></div>\n"
459
+ ]
460
+ },
461
+ "metadata": {},
462
+ "output_type": "display_data"
463
+ },
464
+ {
465
+ "data": {
466
+ "application/javascript": [
467
+ "(function(root) {\n",
468
+ " function embed_document(root) {\n",
469
+ " const docs_json = {\"0b32873b-db26-40c9-a68b-be1e6693e332\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1113\"}],\"center\":[{\"id\":\"1115\"},{\"id\":\"1119\"},{\"id\":\"1150\"}],\"height\":250,\"left\":[{\"id\":\"1116\"}],\"renderers\":[{\"id\":\"1138\"}],\"title\":{\"id\":\"1103\"},\"toolbar\":{\"id\":\"1127\"},\"x_range\":{\"id\":\"1105\"},\"x_scale\":{\"id\":\"1109\"},\"y_range\":{\"id\":\"1107\"},\"y_scale\":{\"id\":\"1111\"}},\"id\":\"1102\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"1123\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"1147\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1101\"},\"glyph\":{\"id\":\"1135\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1137\"},\"nonselection_glyph\":{\"id\":\"1136\"},\"view\":{\"id\":\"1139\"}},\"id\":\"1138\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1146\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1114\",\"type\":\"CategoricalTicker\"},{\"attributes\":{},\"id\":\"1148\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1125\",\"type\":\"HelpTool\"},{\"attributes\":{\"axis\":{\"id\":\"1113\"},\"coordinates\":null,\"grid_line_color\":null,\"group\":null,\"ticker\":null},\"id\":\"1115\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1145\",\"type\":\"CategoricalTickFormatter\"},{\"attributes\":{},\"id\":\"1111\",\"type\":\"LinearScale\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1145\"},\"group\":null,\"major_label_policy\":{\"id\":\"1146\"},\"ticker\":{\"id\":\"1114\"}},\"id\":\"1113\",\"type\":\"CategoricalAxis\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1142\"},\"group\":null,\"major_label_policy\":{\"id\":\"1143\"},\"ticker\":{\"id\":\"1117\"}},\"id\":\"1116\",\"type\":\"LinearAxis\"},{\"attributes\":{\"label\":{\"field\":\"fruits\"},\"renderers\":[{\"id\":\"1138\"}]},\"id\":\"1151\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"1117\",\"type\":\"BasicTicker\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"field\":\"color\"},\"hatch_alpha\":{\"value\":0.2},\"hatch_color\":{\"field\":\"color\"},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"field\":\"color\"},\"top\":{\"field\":\"counts\"},\"width\":{\"value\":0.9},\"x\":{\"field\":\"fruits\"}},\"id\":\"1137\",\"type\":\"VBar\"},{\"attributes\":{\"data\":{\"color\":[\"#3288bd\",\"#99d594\",\"#e6f598\",\"#fee08b\",\"#fc8d59\",\"#d53e4f\"],\"counts\":[5,3,4,2,4,6],\"fruits\":[\"Apples\",\"Pears\",\"Nectarines\",\"Plums\",\"Grapes\",\"Strawberries\"]},\"selected\":{\"id\":\"1148\"},\"selection_policy\":{\"id\":\"1147\"}},\"id\":\"1101\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"1151\"}],\"location\":\"top_center\",\"orientation\":\"horizontal\"},\"id\":\"1150\",\"type\":\"Legend\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"field\":\"color\"},\"hatch_alpha\":{\"value\":0.1},\"hatch_color\":{\"field\":\"color\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"field\":\"color\"},\"top\":{\"field\":\"counts\"},\"width\":{\"value\":0.9},\"x\":{\"field\":\"fruits\"}},\"id\":\"1136\",\"type\":\"VBar\"},{\"attributes\":{\"axis\":{\"id\":\"1116\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1119\",\"type\":\"Grid\"},{\"attributes\":{\"source\":{\"id\":\"1101\"}},\"id\":\"1139\",\"type\":\"CDSView\"},{\"attributes\":{\"factors\":[\"Apples\",\"Pears\",\"Nectarines\",\"Plums\",\"Grapes\",\"Strawberries\"]},\"id\":\"1105\",\"type\":\"FactorRange\"},{\"attributes\":{\"tools\":[{\"id\":\"1120\"},{\"id\":\"1121\"},{\"id\":\"1122\"},{\"id\":\"1123\"},{\"id\":\"1124\"},{\"id\":\"1125\"}]},\"id\":\"1127\",\"type\":\"Toolbar\"},{\"attributes\":{\"fill_color\":{\"field\":\"color\"},\"hatch_color\":{\"field\":\"color\"},\"line_color\":{\"field\":\"color\"},\"top\":{\"field\":\"counts\"},\"width\":{\"value\":0.9},\"x\":{\"field\":\"fruits\"}},\"id\":\"1135\",\"type\":\"VBar\"},{\"attributes\":{},\"id\":\"1109\",\"type\":\"CategoricalScale\"},{\"attributes\":{},\"id\":\"1143\",\"type\":\"AllLabels\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1126\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"text\":\"Fruit Counts\"},\"id\":\"1103\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"1120\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"1124\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"1142\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1121\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"overlay\":{\"id\":\"1126\"}},\"id\":\"1122\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"end\":9},\"id\":\"1107\",\"type\":\"Range1d\"}],\"root_ids\":[\"1102\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.3\"}};\n",
470
+ " const render_items = [{\"docid\":\"0b32873b-db26-40c9-a68b-be1e6693e332\",\"root_ids\":[\"1102\"],\"roots\":{\"1102\":\"9aa2b85c-244f-409f-8b71-8c5816e3e009\"}}];\n",
471
+ " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
472
+ " }\n",
473
+ " if (root.Bokeh !== undefined) {\n",
474
+ " embed_document(root);\n",
475
+ " } else {\n",
476
+ " let attempts = 0;\n",
477
+ " const timer = setInterval(function(root) {\n",
478
+ " if (root.Bokeh !== undefined) {\n",
479
+ " clearInterval(timer);\n",
480
+ " embed_document(root);\n",
481
+ " } else {\n",
482
+ " attempts++;\n",
483
+ " if (attempts > 100) {\n",
484
+ " clearInterval(timer);\n",
485
+ " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n",
486
+ " }\n",
487
+ " }\n",
488
+ " }, 10, root)\n",
489
+ " }\n",
490
+ "})(window);"
491
+ ],
492
+ "application/vnd.bokehjs_exec.v0+json": ""
493
+ },
494
+ "metadata": {
495
+ "application/vnd.bokehjs_exec.v0+json": {
496
+ "id": "1102"
497
+ }
498
+ },
499
+ "output_type": "display_data"
500
+ }
501
+ ],
502
+ "source": [
503
+ "from bokeh.models import ColumnDataSource\n",
504
+ "from bokeh.palettes import Spectral6\n",
505
+ "\n",
506
+ "fruits = ['Apples', 'Pears', 'Nectarines', 'Plums', 'Grapes', 'Strawberries']\n",
507
+ "counts = [5, 3, 4, 2, 4, 6]\n",
508
+ "\n",
509
+ "source = ColumnDataSource(data=dict(fruits=fruits, counts=counts, color=Spectral6))\n",
510
+ "\n",
511
+ "p = figure(x_range=fruits, plot_height=250, y_range=(0, 9), title=\"Fruit Counts\")\n",
512
+ "p.vbar(x='fruits', top='counts', width=0.9, color='color', legend_field=\"fruits\", source=source)\n",
513
+ "\n",
514
+ "p.xgrid.grid_line_color = None\n",
515
+ "p.legend.orientation = \"horizontal\"\n",
516
+ "p.legend.location = \"top_center\"\n",
517
+ "\n",
518
+ "show(p)"
519
+ ]
520
+ },
521
+ {
522
+ "cell_type": "code",
523
+ "execution_count": 5,
524
+ "metadata": {},
525
+ "outputs": [],
526
+ "source": [
527
+ "# Exercise: Create your own simple bar chart driven by a ColumnDataSource\n"
528
+ ]
529
+ },
530
+ {
531
+ "cell_type": "markdown",
532
+ "metadata": {},
533
+ "source": [
534
+ "## Stacked Bars\n",
535
+ "\n",
536
+ "It's often desirable to stack bars together. Bokeh makes this straightforward using the `vbar_stack` and `hbar_stack` methods. When passing data to one of these methods, the data source should have a series for each \"row\" in the stack. You will provide an ordered list of column names to stack together from the data source. \n",
537
+ "\n",
538
+ "In the example below, we see simulated data for fruit exports (positive values) and imports (negative values) stacked using two calls to `hbar_stack`. The values in the columns for each year are ordered according to the `fruits`, i.e. this is not a \"tidy\" data format."
539
+ ]
540
+ },
541
+ {
542
+ "cell_type": "code",
543
+ "execution_count": 6,
544
+ "metadata": {},
545
+ "outputs": [
546
+ {
547
+ "data": {
548
+ "text/html": [
549
+ "\n",
550
+ " <div class=\"bk-root\" id=\"6d9ac7c0-116e-4589-a0eb-c7774a044b3a\" data-root-id=\"1222\"></div>\n"
551
+ ]
552
+ },
553
+ "metadata": {},
554
+ "output_type": "display_data"
555
+ },
556
+ {
557
+ "data": {
558
+ "application/javascript": [
559
+ "(function(root) {\n",
560
+ " function embed_document(root) {\n",
561
+ " const docs_json = {\"b0d7f621-2ade-436b-b2fe-f909f6bb0830\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1233\"}],\"center\":[{\"id\":\"1236\"},{\"id\":\"1239\"},{\"id\":\"1277\"}],\"height\":250,\"left\":[{\"id\":\"1237\"}],\"renderers\":[{\"id\":\"1265\"},{\"id\":\"1283\"},{\"id\":\"1300\"},{\"id\":\"1324\"},{\"id\":\"1343\"},{\"id\":\"1362\"}],\"title\":{\"id\":\"1223\"},\"toolbar\":{\"id\":\"1247\"},\"x_range\":{\"id\":\"1225\"},\"x_scale\":{\"id\":\"1229\"},\"y_range\":{\"id\":\"1227\"},\"y_scale\":{\"id\":\"1231\"}},\"id\":\"1222\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1254\"},\"glyph\":{\"id\":\"1262\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1264\"},\"name\":\"2015\",\"nonselection_glyph\":{\"id\":\"1263\"},\"view\":{\"id\":\"1266\"}},\"id\":\"1265\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"fields\":[\"2015\"]},\"id\":\"1316\",\"type\":\"Stack\"},{\"attributes\":{\"fields\":[\"2015\"]},\"id\":\"1315\",\"type\":\"Stack\"},{\"attributes\":{\"source\":{\"id\":\"1254\"}},\"id\":\"1266\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1274\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"fields\":[\"2015\",\"2016\"]},\"id\":\"1318\",\"type\":\"Stack\"},{\"attributes\":{},\"id\":\"1273\",\"type\":\"AllLabels\"},{\"attributes\":{\"fields\":[\"2015\",\"2016\"]},\"id\":\"1317\",\"type\":\"Stack\"},{\"attributes\":{},\"id\":\"1275\",\"type\":\"Selection\"},{\"attributes\":{\"fields\":[\"2015\",\"2016\",\"2017\"]},\"id\":\"1319\",\"type\":\"Stack\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"1278\"},{\"id\":\"1295\"},{\"id\":\"1312\"},{\"id\":\"1338\"},{\"id\":\"1357\"},{\"id\":\"1376\"}],\"location\":\"center_left\"},\"id\":\"1277\",\"type\":\"Legend\"},{\"attributes\":{\"label\":{\"value\":\"2015 exports\"},\"renderers\":[{\"id\":\"1265\"}]},\"id\":\"1278\",\"type\":\"LegendItem\"},{\"attributes\":{\"label\":{\"value\":\"2015 imports\"},\"renderers\":[{\"id\":\"1324\"}]},\"id\":\"1338\",\"type\":\"LegendItem\"},{\"attributes\":{\"fill_color\":{\"value\":\"#e34a33\"},\"hatch_color\":{\"value\":\"#e34a33\"},\"height\":{\"value\":0.9},\"left\":{\"expr\":{\"id\":\"1314\"}},\"line_color\":{\"value\":\"#e34a33\"},\"right\":{\"expr\":{\"id\":\"1315\"}},\"y\":{\"field\":\"fruits\"}},\"id\":\"1321\",\"type\":\"HBar\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1313\"},\"glyph\":{\"id\":\"1321\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1323\"},\"name\":\"2015\",\"nonselection_glyph\":{\"id\":\"1322\"},\"view\":{\"id\":\"1325\"}},\"id\":\"1324\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#e34a33\"},\"hatch_alpha\":{\"value\":0.1},\"hatch_color\":{\"value\":\"#e34a33\"},\"height\":{\"value\":0.9},\"left\":{\"expr\":{\"id\":\"1314\"}},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#e34a33\"},\"right\":{\"expr\":{\"id\":\"1315\"}},\"y\":{\"field\":\"fruits\"}},\"id\":\"1322\",\"type\":\"HBar\"},{\"attributes\":{\"source\":{\"id\":\"1313\"}},\"id\":\"1325\",\"type\":\"CDSView\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"#e34a33\"},\"hatch_alpha\":{\"value\":0.2},\"hatch_color\":{\"value\":\"#e34a33\"},\"height\":{\"value\":0.9},\"left\":{\"expr\":{\"id\":\"1314\"}},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"#e34a33\"},\"right\":{\"expr\":{\"id\":\"1315\"}},\"y\":{\"field\":\"fruits\"}},\"id\":\"1323\",\"type\":\"HBar\"},{\"attributes\":{\"label\":{\"value\":\"2016 exports\"},\"renderers\":[{\"id\":\"1283\"}]},\"id\":\"1295\",\"type\":\"LegendItem\"},{\"attributes\":{\"fill_color\":{\"value\":\"#a8ddb5\"},\"hatch_color\":{\"value\":\"#a8ddb5\"},\"height\":{\"value\":0.9},\"left\":{\"expr\":{\"id\":\"1257\"}},\"line_color\":{\"value\":\"#a8ddb5\"},\"right\":{\"expr\":{\"id\":\"1258\"}},\"y\":{\"field\":\"fruits\"}},\"id\":\"1280\",\"type\":\"HBar\"},{\"attributes\":{},\"id\":\"1336\",\"type\":\"Selection\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1254\"},\"glyph\":{\"id\":\"1280\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1282\"},\"name\":\"2016\",\"nonselection_glyph\":{\"id\":\"1281\"},\"view\":{\"id\":\"1284\"}},\"id\":\"1283\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#a8ddb5\"},\"hatch_alpha\":{\"value\":0.1},\"hatch_color\":{\"value\":\"#a8ddb5\"},\"height\":{\"value\":0.9},\"left\":{\"expr\":{\"id\":\"1257\"}},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#a8ddb5\"},\"right\":{\"expr\":{\"id\":\"1258\"}},\"y\":{\"field\":\"fruits\"}},\"id\":\"1281\",\"type\":\"HBar\"},{\"attributes\":{\"source\":{\"id\":\"1254\"}},\"id\":\"1284\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1335\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"#a8ddb5\"},\"hatch_alpha\":{\"value\":0.2},\"hatch_color\":{\"value\":\"#a8ddb5\"},\"height\":{\"value\":0.9},\"left\":{\"expr\":{\"id\":\"1257\"}},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"#a8ddb5\"},\"right\":{\"expr\":{\"id\":\"1258\"}},\"y\":{\"field\":\"fruits\"}},\"id\":\"1282\",\"type\":\"HBar\"},{\"attributes\":{\"fill_color\":{\"value\":\"#fdbb84\"},\"hatch_color\":{\"value\":\"#fdbb84\"},\"height\":{\"value\":0.9},\"left\":{\"expr\":{\"id\":\"1316\"}},\"line_color\":{\"value\":\"#fdbb84\"},\"right\":{\"expr\":{\"id\":\"1317\"}},\"y\":{\"field\":\"fruits\"}},\"id\":\"1340\",\"type\":\"HBar\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1313\"},\"glyph\":{\"id\":\"1340\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1342\"},\"name\":\"2016\",\"nonselection_glyph\":{\"id\":\"1341\"},\"view\":{\"id\":\"1344\"}},\"id\":\"1343\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"label\":{\"value\":\"2017 exports\"},\"renderers\":[{\"id\":\"1300\"}]},\"id\":\"1312\",\"type\":\"LegendItem\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#fdbb84\"},\"hatch_alpha\":{\"value\":0.1},\"hatch_color\":{\"value\":\"#fdbb84\"},\"height\":{\"value\":0.9},\"left\":{\"expr\":{\"id\":\"1316\"}},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#fdbb84\"},\"right\":{\"expr\":{\"id\":\"1317\"}},\"y\":{\"field\":\"fruits\"}},\"id\":\"1341\",\"type\":\"HBar\"},{\"attributes\":{\"source\":{\"id\":\"1313\"}},\"id\":\"1344\",\"type\":\"CDSView\"},{\"attributes\":{\"fill_color\":{\"value\":\"#e0f3db\"},\"hatch_color\":{\"value\":\"#e0f3db\"},\"height\":{\"value\":0.9},\"left\":{\"expr\":{\"id\":\"1259\"}},\"line_color\":{\"value\":\"#e0f3db\"},\"right\":{\"expr\":{\"id\":\"1260\"}},\"y\":{\"field\":\"fruits\"}},\"id\":\"1297\",\"type\":\"HBar\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1254\"},\"glyph\":{\"id\":\"1297\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1299\"},\"name\":\"2017\",\"nonselection_glyph\":{\"id\":\"1298\"},\"view\":{\"id\":\"1301\"}},\"id\":\"1300\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#e0f3db\"},\"hatch_alpha\":{\"value\":0.1},\"hatch_color\":{\"value\":\"#e0f3db\"},\"height\":{\"value\":0.9},\"left\":{\"expr\":{\"id\":\"1259\"}},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#e0f3db\"},\"right\":{\"expr\":{\"id\":\"1260\"}},\"y\":{\"field\":\"fruits\"}},\"id\":\"1298\",\"type\":\"HBar\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"#fdbb84\"},\"hatch_alpha\":{\"value\":0.2},\"hatch_color\":{\"value\":\"#fdbb84\"},\"height\":{\"value\":0.9},\"left\":{\"expr\":{\"id\":\"1316\"}},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"#fdbb84\"},\"right\":{\"expr\":{\"id\":\"1317\"}},\"y\":{\"field\":\"fruits\"}},\"id\":\"1342\",\"type\":\"HBar\"},{\"attributes\":{\"source\":{\"id\":\"1254\"}},\"id\":\"1301\",\"type\":\"CDSView\"},{\"attributes\":{\"label\":{\"value\":\"2016 imports\"},\"renderers\":[{\"id\":\"1343\"}]},\"id\":\"1357\",\"type\":\"LegendItem\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"#e0f3db\"},\"hatch_alpha\":{\"value\":0.2},\"hatch_color\":{\"value\":\"#e0f3db\"},\"height\":{\"value\":0.9},\"left\":{\"expr\":{\"id\":\"1259\"}},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"#e0f3db\"},\"right\":{\"expr\":{\"id\":\"1260\"}},\"y\":{\"field\":\"fruits\"}},\"id\":\"1299\",\"type\":\"HBar\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#fee8c8\"},\"hatch_alpha\":{\"value\":0.1},\"hatch_color\":{\"value\":\"#fee8c8\"},\"height\":{\"value\":0.9},\"left\":{\"expr\":{\"id\":\"1318\"}},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#fee8c8\"},\"right\":{\"expr\":{\"id\":\"1319\"}},\"y\":{\"field\":\"fruits\"}},\"id\":\"1360\",\"type\":\"HBar\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"#fee8c8\"},\"hatch_alpha\":{\"value\":0.2},\"hatch_color\":{\"value\":\"#fee8c8\"},\"height\":{\"value\":0.9},\"left\":{\"expr\":{\"id\":\"1318\"}},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"#fee8c8\"},\"right\":{\"expr\":{\"id\":\"1319\"}},\"y\":{\"field\":\"fruits\"}},\"id\":\"1361\",\"type\":\"HBar\"},{\"attributes\":{\"fill_color\":{\"value\":\"#fee8c8\"},\"hatch_color\":{\"value\":\"#fee8c8\"},\"height\":{\"value\":0.9},\"left\":{\"expr\":{\"id\":\"1318\"}},\"line_color\":{\"value\":\"#fee8c8\"},\"right\":{\"expr\":{\"id\":\"1319\"}},\"y\":{\"field\":\"fruits\"}},\"id\":\"1359\",\"type\":\"HBar\"},{\"attributes\":{\"fields\":[]},\"id\":\"1314\",\"type\":\"Stack\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1313\"},\"glyph\":{\"id\":\"1359\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1361\"},\"name\":\"2017\",\"nonselection_glyph\":{\"id\":\"1360\"},\"view\":{\"id\":\"1363\"}},\"id\":\"1362\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"label\":{\"value\":\"2017 imports\"},\"renderers\":[{\"id\":\"1362\"}]},\"id\":\"1376\",\"type\":\"LegendItem\"},{\"attributes\":{\"source\":{\"id\":\"1313\"}},\"id\":\"1363\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1240\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"1244\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"1241\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"overlay\":{\"id\":\"1246\"}},\"id\":\"1242\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"1243\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"1245\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"1270\",\"type\":\"AllLabels\"},{\"attributes\":{\"tools\":[{\"id\":\"1240\"},{\"id\":\"1241\"},{\"id\":\"1242\"},{\"id\":\"1243\"},{\"id\":\"1244\"},{\"id\":\"1245\"}]},\"id\":\"1247\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"1269\",\"type\":\"CategoricalTickFormatter\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1246\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"data\":{\"2015\":[2,1,4,3,2,4],\"2016\":[5,3,4,2,4,6],\"2017\":[3,2,4,4,5,3],\"fruits\":[\"Apples\",\"Pears\",\"Nectarines\",\"Plums\",\"Grapes\",\"Strawberries\"]},\"selected\":{\"id\":\"1275\"},\"selection_policy\":{\"id\":\"1274\"}},\"id\":\"1254\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"factors\":[\"Apples\",\"Pears\",\"Nectarines\",\"Plums\",\"Grapes\",\"Strawberries\"],\"range_padding\":0.1},\"id\":\"1227\",\"type\":\"FactorRange\"},{\"attributes\":{\"end\":16,\"start\":-16},\"id\":\"1225\",\"type\":\"Range1d\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"text\":\"Fruit import/export, by year\"},\"id\":\"1223\",\"type\":\"Title\"},{\"attributes\":{\"fields\":[\"2015\"]},\"id\":\"1257\",\"type\":\"Stack\"},{\"attributes\":{\"fields\":[]},\"id\":\"1255\",\"type\":\"Stack\"},{\"attributes\":{\"fields\":[\"2015\"]},\"id\":\"1256\",\"type\":\"Stack\"},{\"attributes\":{},\"id\":\"1234\",\"type\":\"BasicTicker\"},{\"attributes\":{\"fields\":[\"2015\",\"2016\"]},\"id\":\"1259\",\"type\":\"Stack\"},{\"attributes\":{},\"id\":\"1229\",\"type\":\"LinearScale\"},{\"attributes\":{\"fields\":[\"2015\",\"2016\"]},\"id\":\"1258\",\"type\":\"Stack\"},{\"attributes\":{},\"id\":\"1231\",\"type\":\"CategoricalScale\"},{\"attributes\":{\"axis\":{\"id\":\"1237\"},\"coordinates\":null,\"dimension\":1,\"grid_line_color\":null,\"group\":null,\"ticker\":null},\"id\":\"1239\",\"type\":\"Grid\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1272\"},\"group\":null,\"major_label_policy\":{\"id\":\"1273\"},\"ticker\":{\"id\":\"1234\"}},\"id\":\"1233\",\"type\":\"LinearAxis\"},{\"attributes\":{\"fields\":[\"2015\",\"2016\",\"2017\"]},\"id\":\"1260\",\"type\":\"Stack\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#43a2ca\"},\"hatch_alpha\":{\"value\":0.1},\"hatch_color\":{\"value\":\"#43a2ca\"},\"height\":{\"value\":0.9},\"left\":{\"expr\":{\"id\":\"1255\"}},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#43a2ca\"},\"right\":{\"expr\":{\"id\":\"1256\"}},\"y\":{\"field\":\"fruits\"}},\"id\":\"1263\",\"type\":\"HBar\"},{\"attributes\":{\"axis\":{\"id\":\"1233\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"1236\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1238\",\"type\":\"CategoricalTicker\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1269\"},\"group\":null,\"major_label_policy\":{\"id\":\"1270\"},\"ticker\":{\"id\":\"1238\"}},\"id\":\"1237\",\"type\":\"CategoricalAxis\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"#43a2ca\"},\"hatch_alpha\":{\"value\":0.2},\"hatch_color\":{\"value\":\"#43a2ca\"},\"height\":{\"value\":0.9},\"left\":{\"expr\":{\"id\":\"1255\"}},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"#43a2ca\"},\"right\":{\"expr\":{\"id\":\"1256\"}},\"y\":{\"field\":\"fruits\"}},\"id\":\"1264\",\"type\":\"HBar\"},{\"attributes\":{},\"id\":\"1272\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"data\":{\"2015\":[-1,0,-1,-3,-2,-1],\"2016\":[-2,-1,-3,-1,-2,-2],\"2017\":[-1,-2,-1,0,-2,-2],\"fruits\":[\"Apples\",\"Pears\",\"Nectarines\",\"Plums\",\"Grapes\",\"Strawberries\"]},\"selected\":{\"id\":\"1336\"},\"selection_policy\":{\"id\":\"1335\"}},\"id\":\"1313\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"fill_color\":{\"value\":\"#43a2ca\"},\"hatch_color\":{\"value\":\"#43a2ca\"},\"height\":{\"value\":0.9},\"left\":{\"expr\":{\"id\":\"1255\"}},\"line_color\":{\"value\":\"#43a2ca\"},\"right\":{\"expr\":{\"id\":\"1256\"}},\"y\":{\"field\":\"fruits\"}},\"id\":\"1262\",\"type\":\"HBar\"}],\"root_ids\":[\"1222\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.3\"}};\n",
562
+ " const render_items = [{\"docid\":\"b0d7f621-2ade-436b-b2fe-f909f6bb0830\",\"root_ids\":[\"1222\"],\"roots\":{\"1222\":\"6d9ac7c0-116e-4589-a0eb-c7774a044b3a\"}}];\n",
563
+ " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
564
+ " }\n",
565
+ " if (root.Bokeh !== undefined) {\n",
566
+ " embed_document(root);\n",
567
+ " } else {\n",
568
+ " let attempts = 0;\n",
569
+ " const timer = setInterval(function(root) {\n",
570
+ " if (root.Bokeh !== undefined) {\n",
571
+ " clearInterval(timer);\n",
572
+ " embed_document(root);\n",
573
+ " } else {\n",
574
+ " attempts++;\n",
575
+ " if (attempts > 100) {\n",
576
+ " clearInterval(timer);\n",
577
+ " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n",
578
+ " }\n",
579
+ " }\n",
580
+ " }, 10, root)\n",
581
+ " }\n",
582
+ "})(window);"
583
+ ],
584
+ "application/vnd.bokehjs_exec.v0+json": ""
585
+ },
586
+ "metadata": {
587
+ "application/vnd.bokehjs_exec.v0+json": {
588
+ "id": "1222"
589
+ }
590
+ },
591
+ "output_type": "display_data"
592
+ }
593
+ ],
594
+ "source": [
595
+ "from bokeh.palettes import GnBu3, OrRd3\n",
596
+ "\n",
597
+ "years = ['2015', '2016', '2017']\n",
598
+ "\n",
599
+ "exports = {'fruits' : fruits,\n",
600
+ " '2015' : [2, 1, 4, 3, 2, 4],\n",
601
+ " '2016' : [5, 3, 4, 2, 4, 6],\n",
602
+ " '2017' : [3, 2, 4, 4, 5, 3]}\n",
603
+ "imports = {'fruits' : fruits,\n",
604
+ " '2015' : [-1, 0, -1, -3, -2, -1],\n",
605
+ " '2016' : [-2, -1, -3, -1, -2, -2],\n",
606
+ " '2017' : [-1, -2, -1, 0, -2, -2]}\n",
607
+ "\n",
608
+ "p = figure(y_range=fruits, plot_height=250, x_range=(-16, 16), title=\"Fruit import/export, by year\")\n",
609
+ "\n",
610
+ "p.hbar_stack(years, y='fruits', height=0.9, color=GnBu3, source=ColumnDataSource(exports),\n",
611
+ " legend_label=[\"%s exports\" % x for x in years])\n",
612
+ "\n",
613
+ "p.hbar_stack(years, y='fruits', height=0.9, color=OrRd3, source=ColumnDataSource(imports),\n",
614
+ " legend_label=[\"%s imports\" % x for x in years])\n",
615
+ "\n",
616
+ "p.y_range.range_padding = 0.1\n",
617
+ "p.ygrid.grid_line_color = None\n",
618
+ "p.legend.location = \"center_left\"\n",
619
+ "\n",
620
+ "show(p)"
621
+ ]
622
+ },
623
+ {
624
+ "cell_type": "markdown",
625
+ "metadata": {},
626
+ "source": [
627
+ "Notice we also added some padding *around* the categorical range (e.g. at both ends of the axis) by specifying\n",
628
+ "\n",
629
+ "```\n",
630
+ "p.y_range.range_padding = 0.1\n",
631
+ "```"
632
+ ]
633
+ },
634
+ {
635
+ "cell_type": "code",
636
+ "execution_count": 7,
637
+ "metadata": {},
638
+ "outputs": [],
639
+ "source": [
640
+ "# Create a stacked bar chart with a single call to vbar_stack\n"
641
+ ]
642
+ },
643
+ {
644
+ "cell_type": "markdown",
645
+ "metadata": {},
646
+ "source": [
647
+ "## Grouped Bar Charts\n",
648
+ "\n",
649
+ "Sometimes we want to group bars together, instead of stacking them. Bokeh can handle up to three levels of nested (hierarchical) categories, and will automatically group output according to the outermost level. To specify nested categorical coordinates, the columns of the data source should contain tuples, for example:\n",
650
+ "\n",
651
+ " x = [ (\"Apples\", \"2015\"), (\"Apples\", \"2016\"), (\"Apples\", \"2017\"), (\"Pears\", \"2015), ... ]\n",
652
+ " \n",
653
+ "Values in other columns correspond to each item in `x`, exactly as in other cases. When plotting with these kinds of nested coordinates, we must tell Bokeh the contents and order the axis range, by explicitly passing a `FactorRange` to `figure`. In the example below, this is seen as\n",
654
+ "\n",
655
+ " p = figure(x_range=FactorRange(*x), ....)\n",
656
+ " "
657
+ ]
658
+ },
659
+ {
660
+ "cell_type": "code",
661
+ "execution_count": 8,
662
+ "metadata": {},
663
+ "outputs": [
664
+ {
665
+ "data": {
666
+ "text/html": [
667
+ "\n",
668
+ " <div class=\"bk-root\" id=\"6af9dcef-2586-4d2c-bce6-591669fc9d28\" data-root-id=\"1471\"></div>\n"
669
+ ]
670
+ },
671
+ "metadata": {},
672
+ "output_type": "display_data"
673
+ },
674
+ {
675
+ "data": {
676
+ "application/javascript": [
677
+ "(function(root) {\n",
678
+ " function embed_document(root) {\n",
679
+ " const docs_json = {\"bd771a10-2885-4c46-bf41-b5f382c080d4\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1481\"}],\"center\":[{\"id\":\"1483\"},{\"id\":\"1487\"}],\"height\":250,\"left\":[{\"id\":\"1484\"}],\"renderers\":[{\"id\":\"1506\"}],\"title\":{\"id\":\"1472\"},\"toolbar\":{\"id\":\"1495\"},\"x_range\":{\"id\":\"1470\"},\"x_scale\":{\"id\":\"1477\"},\"y_range\":{\"id\":\"1475\"},\"y_scale\":{\"id\":\"1479\"}},\"id\":\"1471\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"axis\":{\"id\":\"1484\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1487\",\"type\":\"Grid\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1469\"},\"glyph\":{\"id\":\"1503\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1505\"},\"nonselection_glyph\":{\"id\":\"1504\"},\"view\":{\"id\":\"1507\"}},\"id\":\"1506\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1485\",\"type\":\"BasicTicker\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"text\":\"Fruit Counts by Year\"},\"id\":\"1472\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"1489\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"1543\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1493\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"1542\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1542\"},\"group\":null,\"major_label_policy\":{\"id\":\"1543\"},\"ticker\":{\"id\":\"1485\"}},\"id\":\"1484\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1492\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"1545\",\"type\":\"CategoricalTickFormatter\"},{\"attributes\":{},\"id\":\"1547\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#1f77b4\"},\"hatch_alpha\":{\"value\":0.1},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"top\":{\"field\":\"counts\"},\"width\":{\"value\":0.9},\"x\":{\"field\":\"x\"}},\"id\":\"1504\",\"type\":\"VBar\"},{\"attributes\":{},\"id\":\"1477\",\"type\":\"CategoricalScale\"},{\"attributes\":{},\"id\":\"1548\",\"type\":\"Selection\"},{\"attributes\":{\"tools\":[{\"id\":\"1488\"},{\"id\":\"1489\"},{\"id\":\"1490\"},{\"id\":\"1491\"},{\"id\":\"1492\"},{\"id\":\"1493\"}]},\"id\":\"1495\",\"type\":\"Toolbar\"},{\"attributes\":{\"axis\":{\"id\":\"1481\"},\"coordinates\":null,\"grid_line_color\":null,\"group\":null,\"ticker\":null},\"id\":\"1483\",\"type\":\"Grid\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1494\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"1482\",\"type\":\"CategoricalTicker\"},{\"attributes\":{},\"id\":\"1491\",\"type\":\"SaveTool\"},{\"attributes\":{\"source\":{\"id\":\"1469\"}},\"id\":\"1507\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1479\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1546\",\"type\":\"AllLabels\"},{\"attributes\":{\"data\":{\"counts\":[2,5,3,1,3,2,4,3,4,3,2,4,2,4,5,4,6,3],\"x\":[[\"Apples\",\"2015\"],[\"Apples\",\"2016\"],[\"Apples\",\"2017\"],[\"Pears\",\"2015\"],[\"Pears\",\"2016\"],[\"Pears\",\"2017\"],[\"Nectarines\",\"2015\"],[\"Nectarines\",\"2016\"],[\"Nectarines\",\"2017\"],[\"Plums\",\"2015\"],[\"Plums\",\"2016\"],[\"Plums\",\"2017\"],[\"Grapes\",\"2015\"],[\"Grapes\",\"2016\"],[\"Grapes\",\"2017\"],[\"Strawberries\",\"2015\"],[\"Strawberries\",\"2016\"],[\"Strawberries\",\"2017\"]]},\"selected\":{\"id\":\"1548\"},\"selection_policy\":{\"id\":\"1547\"}},\"id\":\"1469\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1545\"},\"group\":null,\"major_label_orientation\":1,\"major_label_policy\":{\"id\":\"1546\"},\"ticker\":{\"id\":\"1482\"}},\"id\":\"1481\",\"type\":\"CategoricalAxis\"},{\"attributes\":{\"factors\":[[\"Apples\",\"2015\"],[\"Apples\",\"2016\"],[\"Apples\",\"2017\"],[\"Pears\",\"2015\"],[\"Pears\",\"2016\"],[\"Pears\",\"2017\"],[\"Nectarines\",\"2015\"],[\"Nectarines\",\"2016\"],[\"Nectarines\",\"2017\"],[\"Plums\",\"2015\"],[\"Plums\",\"2016\"],[\"Plums\",\"2017\"],[\"Grapes\",\"2015\"],[\"Grapes\",\"2016\"],[\"Grapes\",\"2017\"],[\"Strawberries\",\"2015\"],[\"Strawberries\",\"2016\"],[\"Strawberries\",\"2017\"]],\"range_padding\":0.1},\"id\":\"1470\",\"type\":\"FactorRange\"},{\"attributes\":{\"overlay\":{\"id\":\"1494\"}},\"id\":\"1490\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"1488\",\"type\":\"PanTool\"},{\"attributes\":{\"fill_color\":{\"value\":\"#1f77b4\"},\"line_color\":{\"value\":\"#1f77b4\"},\"top\":{\"field\":\"counts\"},\"width\":{\"value\":0.9},\"x\":{\"field\":\"x\"}},\"id\":\"1503\",\"type\":\"VBar\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"#1f77b4\"},\"hatch_alpha\":{\"value\":0.2},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"#1f77b4\"},\"top\":{\"field\":\"counts\"},\"width\":{\"value\":0.9},\"x\":{\"field\":\"x\"}},\"id\":\"1505\",\"type\":\"VBar\"},{\"attributes\":{\"start\":0},\"id\":\"1475\",\"type\":\"DataRange1d\"}],\"root_ids\":[\"1471\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.3\"}};\n",
680
+ " const render_items = [{\"docid\":\"bd771a10-2885-4c46-bf41-b5f382c080d4\",\"root_ids\":[\"1471\"],\"roots\":{\"1471\":\"6af9dcef-2586-4d2c-bce6-591669fc9d28\"}}];\n",
681
+ " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
682
+ " }\n",
683
+ " if (root.Bokeh !== undefined) {\n",
684
+ " embed_document(root);\n",
685
+ " } else {\n",
686
+ " let attempts = 0;\n",
687
+ " const timer = setInterval(function(root) {\n",
688
+ " if (root.Bokeh !== undefined) {\n",
689
+ " clearInterval(timer);\n",
690
+ " embed_document(root);\n",
691
+ " } else {\n",
692
+ " attempts++;\n",
693
+ " if (attempts > 100) {\n",
694
+ " clearInterval(timer);\n",
695
+ " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n",
696
+ " }\n",
697
+ " }\n",
698
+ " }, 10, root)\n",
699
+ " }\n",
700
+ "})(window);"
701
+ ],
702
+ "application/vnd.bokehjs_exec.v0+json": ""
703
+ },
704
+ "metadata": {
705
+ "application/vnd.bokehjs_exec.v0+json": {
706
+ "id": "1471"
707
+ }
708
+ },
709
+ "output_type": "display_data"
710
+ }
711
+ ],
712
+ "source": [
713
+ "from bokeh.models import FactorRange\n",
714
+ "\n",
715
+ "fruits = ['Apples', 'Pears', 'Nectarines', 'Plums', 'Grapes', 'Strawberries']\n",
716
+ "years = ['2015', '2016', '2017']\n",
717
+ "\n",
718
+ "data = {'fruits' : fruits,\n",
719
+ " '2015' : [2, 1, 4, 3, 2, 4],\n",
720
+ " '2016' : [5, 3, 3, 2, 4, 6],\n",
721
+ " '2017' : [3, 2, 4, 4, 5, 3]}\n",
722
+ "\n",
723
+ "# this creates [ (\"Apples\", \"2015\"), (\"Apples\", \"2016\"), (\"Apples\", \"2017\"), (\"Pears\", \"2015), ... ]\n",
724
+ "x = [ (fruit, year) for fruit in fruits for year in years ]\n",
725
+ "counts = sum(zip(data['2015'], data['2016'], data['2017']), ()) # like an hstack\n",
726
+ "\n",
727
+ "source = ColumnDataSource(data=dict(x=x, counts=counts))\n",
728
+ "\n",
729
+ "p = figure(x_range=FactorRange(*x), plot_height=250, title=\"Fruit Counts by Year\")\n",
730
+ "\n",
731
+ "p.vbar(x='x', top='counts', width=0.9, source=source)\n",
732
+ "\n",
733
+ "p.y_range.start = 0\n",
734
+ "p.x_range.range_padding = 0.1\n",
735
+ "p.xaxis.major_label_orientation = 1\n",
736
+ "p.xgrid.grid_line_color = None\n",
737
+ "\n",
738
+ "show(p)"
739
+ ]
740
+ },
741
+ {
742
+ "cell_type": "code",
743
+ "execution_count": 9,
744
+ "metadata": {},
745
+ "outputs": [],
746
+ "source": [
747
+ "# Exercise: Make the chart above have a different color for each year by adding colors to the ColumnDataSource\n"
748
+ ]
749
+ },
750
+ {
751
+ "cell_type": "markdown",
752
+ "metadata": {},
753
+ "source": [
754
+ "Another way we can set the color of the bars is to use a transform. We first saw some transforms in previous chapter [Data Sources and Transformations](04 - Data Sources and Transformations.ipynb). Here we use a new one `factor_cmap` that accepts a the name of a column to use for colormapping, as well as the palette and factors that define the color mapping. \n",
755
+ "\n",
756
+ "Additionally we can configure it to map just the sub-factors if desired. For instance in this case we don't want shade each `(fruit, year)` pair differently. Instead, we want to only shade based on the `year`. So we pass `start=1` and `end=2` to specify the slice range of each factor to use when colormapping. Then we pass the result as the `fill_color` value:\n",
757
+ "\n",
758
+ "```\n",
759
+ " fill_color=factor_cmap('x', palette=['firebrick', 'olive', 'navy'], factors=years, start=1, end=2))\n",
760
+ "```\n",
761
+ "to have the colors be applied automatically based on the underlying data. "
762
+ ]
763
+ },
764
+ {
765
+ "cell_type": "code",
766
+ "execution_count": 10,
767
+ "metadata": {},
768
+ "outputs": [
769
+ {
770
+ "data": {
771
+ "text/html": [
772
+ "\n",
773
+ " <div class=\"bk-root\" id=\"02fecb76-2f25-40aa-9a46-dc860a366c95\" data-root-id=\"1601\"></div>\n"
774
+ ]
775
+ },
776
+ "metadata": {},
777
+ "output_type": "display_data"
778
+ },
779
+ {
780
+ "data": {
781
+ "application/javascript": [
782
+ "(function(root) {\n",
783
+ " function embed_document(root) {\n",
784
+ " const docs_json = {\"f2538776-6ac3-4ae4-80fe-e6fd830df5e7\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1611\"}],\"center\":[{\"id\":\"1613\"},{\"id\":\"1617\"}],\"height\":250,\"left\":[{\"id\":\"1614\"}],\"renderers\":[{\"id\":\"1637\"}],\"title\":{\"id\":\"1602\"},\"toolbar\":{\"id\":\"1625\"},\"x_range\":{\"id\":\"1600\"},\"x_scale\":{\"id\":\"1607\"},\"y_range\":{\"id\":\"1605\"},\"y_scale\":{\"id\":\"1609\"}},\"id\":\"1601\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"1622\",\"type\":\"ResetTool\"},{\"attributes\":{\"start\":0},\"id\":\"1605\",\"type\":\"DataRange1d\"},{\"attributes\":{\"overlay\":{\"id\":\"1624\"}},\"id\":\"1620\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"text\":\"Fruit Counts by Year\"},\"id\":\"1602\",\"type\":\"Title\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"field\":\"x\",\"transform\":{\"id\":\"1632\"}},\"hatch_alpha\":{\"value\":0.1},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"white\"},\"top\":{\"field\":\"counts\"},\"width\":{\"value\":0.9},\"x\":{\"field\":\"x\"}},\"id\":\"1635\",\"type\":\"VBar\"},{\"attributes\":{},\"id\":\"1684\",\"type\":\"AllLabels\"},{\"attributes\":{\"source\":{\"id\":\"1469\"}},\"id\":\"1638\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1621\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"1619\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"1612\",\"type\":\"CategoricalTicker\"},{\"attributes\":{},\"id\":\"1687\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1547\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"end\":2,\"factors\":[\"2015\",\"2016\",\"2017\"],\"palette\":[\"firebrick\",\"olive\",\"navy\"],\"start\":1},\"id\":\"1632\",\"type\":\"CategoricalColorMapper\"},{\"attributes\":{\"axis\":{\"id\":\"1611\"},\"coordinates\":null,\"grid_line_color\":null,\"group\":null,\"ticker\":null},\"id\":\"1613\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1623\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"1607\",\"type\":\"CategoricalScale\"},{\"attributes\":{},\"id\":\"1548\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1609\",\"type\":\"LinearScale\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1686\"},\"group\":null,\"major_label_orientation\":1,\"major_label_policy\":{\"id\":\"1687\"},\"ticker\":{\"id\":\"1612\"}},\"id\":\"1611\",\"type\":\"CategoricalAxis\"},{\"attributes\":{},\"id\":\"1686\",\"type\":\"CategoricalTickFormatter\"},{\"attributes\":{},\"id\":\"1615\",\"type\":\"BasicTicker\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1469\"},\"glyph\":{\"id\":\"1634\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1636\"},\"nonselection_glyph\":{\"id\":\"1635\"},\"view\":{\"id\":\"1638\"}},\"id\":\"1637\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"field\":\"x\",\"transform\":{\"id\":\"1632\"}},\"hatch_alpha\":{\"value\":0.2},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"white\"},\"top\":{\"field\":\"counts\"},\"width\":{\"value\":0.9},\"x\":{\"field\":\"x\"}},\"id\":\"1636\",\"type\":\"VBar\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1683\"},\"group\":null,\"major_label_policy\":{\"id\":\"1684\"},\"ticker\":{\"id\":\"1615\"}},\"id\":\"1614\",\"type\":\"LinearAxis\"},{\"attributes\":{\"fill_color\":{\"field\":\"x\",\"transform\":{\"id\":\"1632\"}},\"line_color\":{\"value\":\"white\"},\"top\":{\"field\":\"counts\"},\"width\":{\"value\":0.9},\"x\":{\"field\":\"x\"}},\"id\":\"1634\",\"type\":\"VBar\"},{\"attributes\":{\"data\":{\"counts\":[2,5,3,1,3,2,4,3,4,3,2,4,2,4,5,4,6,3],\"x\":[[\"Apples\",\"2015\"],[\"Apples\",\"2016\"],[\"Apples\",\"2017\"],[\"Pears\",\"2015\"],[\"Pears\",\"2016\"],[\"Pears\",\"2017\"],[\"Nectarines\",\"2015\"],[\"Nectarines\",\"2016\"],[\"Nectarines\",\"2017\"],[\"Plums\",\"2015\"],[\"Plums\",\"2016\"],[\"Plums\",\"2017\"],[\"Grapes\",\"2015\"],[\"Grapes\",\"2016\"],[\"Grapes\",\"2017\"],[\"Strawberries\",\"2015\"],[\"Strawberries\",\"2016\"],[\"Strawberries\",\"2017\"]]},\"selected\":{\"id\":\"1548\"},\"selection_policy\":{\"id\":\"1547\"}},\"id\":\"1469\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"axis\":{\"id\":\"1614\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1617\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1683\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"factors\":[[\"Apples\",\"2015\"],[\"Apples\",\"2016\"],[\"Apples\",\"2017\"],[\"Pears\",\"2015\"],[\"Pears\",\"2016\"],[\"Pears\",\"2017\"],[\"Nectarines\",\"2015\"],[\"Nectarines\",\"2016\"],[\"Nectarines\",\"2017\"],[\"Plums\",\"2015\"],[\"Plums\",\"2016\"],[\"Plums\",\"2017\"],[\"Grapes\",\"2015\"],[\"Grapes\",\"2016\"],[\"Grapes\",\"2017\"],[\"Strawberries\",\"2015\"],[\"Strawberries\",\"2016\"],[\"Strawberries\",\"2017\"]],\"range_padding\":0.1},\"id\":\"1600\",\"type\":\"FactorRange\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1624\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"1618\",\"type\":\"PanTool\"},{\"attributes\":{\"tools\":[{\"id\":\"1618\"},{\"id\":\"1619\"},{\"id\":\"1620\"},{\"id\":\"1621\"},{\"id\":\"1622\"},{\"id\":\"1623\"}]},\"id\":\"1625\",\"type\":\"Toolbar\"}],\"root_ids\":[\"1601\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.3\"}};\n",
785
+ " const render_items = [{\"docid\":\"f2538776-6ac3-4ae4-80fe-e6fd830df5e7\",\"root_ids\":[\"1601\"],\"roots\":{\"1601\":\"02fecb76-2f25-40aa-9a46-dc860a366c95\"}}];\n",
786
+ " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
787
+ " }\n",
788
+ " if (root.Bokeh !== undefined) {\n",
789
+ " embed_document(root);\n",
790
+ " } else {\n",
791
+ " let attempts = 0;\n",
792
+ " const timer = setInterval(function(root) {\n",
793
+ " if (root.Bokeh !== undefined) {\n",
794
+ " clearInterval(timer);\n",
795
+ " embed_document(root);\n",
796
+ " } else {\n",
797
+ " attempts++;\n",
798
+ " if (attempts > 100) {\n",
799
+ " clearInterval(timer);\n",
800
+ " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n",
801
+ " }\n",
802
+ " }\n",
803
+ " }, 10, root)\n",
804
+ " }\n",
805
+ "})(window);"
806
+ ],
807
+ "application/vnd.bokehjs_exec.v0+json": ""
808
+ },
809
+ "metadata": {
810
+ "application/vnd.bokehjs_exec.v0+json": {
811
+ "id": "1601"
812
+ }
813
+ },
814
+ "output_type": "display_data"
815
+ }
816
+ ],
817
+ "source": [
818
+ "from bokeh.transform import factor_cmap\n",
819
+ "\n",
820
+ "p = figure(x_range=FactorRange(*x), plot_height=250, title=\"Fruit Counts by Year\")\n",
821
+ "\n",
822
+ "p.vbar(x='x', top='counts', width=0.9, source=source, line_color=\"white\",\n",
823
+ "\n",
824
+ " # use the palette to colormap based on the the x[1:2] values\n",
825
+ " fill_color=factor_cmap('x', palette=['firebrick', 'olive', 'navy'], factors=years, start=1, end=2))\n",
826
+ "\n",
827
+ "p.y_range.start = 0\n",
828
+ "p.x_range.range_padding = 0.1\n",
829
+ "p.xaxis.major_label_orientation = 1\n",
830
+ "p.xgrid.grid_line_color = None\n",
831
+ "\n",
832
+ "show(p)"
833
+ ]
834
+ },
835
+ {
836
+ "cell_type": "markdown",
837
+ "metadata": {},
838
+ "source": [
839
+ "It is also possible to achieve grouped bar plots using another technique called \"visual dodge\". That would be useful e.g. if you only wanted to have the axis labeled by fruit type, and not include the years on the axis. This tutorial does not cover that technique but you can find information in the [User's Guide](https://bokeh.pydata.org/en/dev/docs/user_guide/categorical.html#visual-dodge). "
840
+ ]
841
+ },
842
+ {
843
+ "cell_type": "markdown",
844
+ "metadata": {},
845
+ "source": [
846
+ "## Mixing Categorical Levels\n",
847
+ "\n",
848
+ "If you have created a range with nested categories as above, it is possible to plot glyphs using only the \"outer\" categories, if desired. The plot below shows monthly values grouped by quarter as bars. The data for these are in the familiar format:\n",
849
+ "\n",
850
+ " factors = [(\"Q1\", \"jan\"), (\"Q1\", \"feb\"), (\"Q1\", \"mar\"), ....]\n",
851
+ "\n",
852
+ "The plot also overlays a line representing average quarterly values, and this is accomplished by using only the \"quarter\" part of each nexted category:\n",
853
+ "\n",
854
+ " p.line(x=[\"Q1\", \"Q2\", \"Q3\", \"Q4\"], y=....)"
855
+ ]
856
+ },
857
+ {
858
+ "cell_type": "code",
859
+ "execution_count": 11,
860
+ "metadata": {},
861
+ "outputs": [
862
+ {
863
+ "data": {
864
+ "text/html": [
865
+ "\n",
866
+ " <div class=\"bk-root\" id=\"7c736348-c628-4980-aa44-32afa2f18572\" data-root-id=\"1742\"></div>\n"
867
+ ]
868
+ },
869
+ "metadata": {},
870
+ "output_type": "display_data"
871
+ },
872
+ {
873
+ "data": {
874
+ "application/javascript": [
875
+ "(function(root) {\n",
876
+ " function embed_document(root) {\n",
877
+ " const docs_json = {\"c2a1ae7d-d475-4ece-bc04-1809b7c4ce7d\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1750\"}],\"center\":[{\"id\":\"1752\"},{\"id\":\"1756\"}],\"height\":250,\"left\":[{\"id\":\"1753\"}],\"renderers\":[{\"id\":\"1775\"},{\"id\":\"1781\"},{\"id\":\"1787\"}],\"title\":{\"id\":\"1841\"},\"toolbar\":{\"id\":\"1764\"},\"x_range\":{\"id\":\"1741\"},\"x_scale\":{\"id\":\"1746\"},\"y_range\":{\"id\":\"1744\"},\"y_scale\":{\"id\":\"1748\"}},\"id\":\"1742\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"1841\",\"type\":\"Title\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1777\"},\"glyph\":{\"id\":\"1778\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1780\"},\"nonselection_glyph\":{\"id\":\"1779\"},\"view\":{\"id\":\"1782\"}},\"id\":\"1781\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"data\":{\"x\":[\"Q1\",\"Q2\",\"Q3\",\"Q4\"],\"y\":[12,9,13,14]},\"selected\":{\"id\":\"1852\"},\"selection_policy\":{\"id\":\"1851\"}},\"id\":\"1777\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1845\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1754\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1844\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"axis\":{\"id\":\"1753\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1756\",\"type\":\"Grid\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"red\",\"line_width\":3,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1780\",\"type\":\"Line\"},{\"attributes\":{\"factors\":[[\"Q1\",\"jan\"],[\"Q1\",\"feb\"],[\"Q1\",\"mar\"],[\"Q2\",\"apr\"],[\"Q2\",\"may\"],[\"Q2\",\"jun\"],[\"Q3\",\"jul\"],[\"Q3\",\"aug\"],[\"Q3\",\"sep\"],[\"Q4\",\"oct\"],[\"Q4\",\"nov\"],[\"Q4\",\"dec\"]],\"range_padding\":0.1},\"id\":\"1741\",\"type\":\"FactorRange\"},{\"attributes\":{},\"id\":\"1848\",\"type\":\"AllLabels\"},{\"attributes\":{\"data\":{\"x\":[\"Q1\",\"Q2\",\"Q3\",\"Q4\"],\"y\":[12,9,13,14]},\"selected\":{\"id\":\"1854\"},\"selection_policy\":{\"id\":\"1853\"}},\"id\":\"1783\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1847\",\"type\":\"CategoricalTickFormatter\"},{\"attributes\":{},\"id\":\"1849\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"#1f77b4\"},\"hatch_alpha\":{\"value\":0.2},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"#1f77b4\"},\"top\":{\"field\":\"top\"},\"width\":{\"value\":0.9},\"x\":{\"field\":\"x\"}},\"id\":\"1774\",\"type\":\"VBar\"},{\"attributes\":{\"source\":{\"id\":\"1777\"}},\"id\":\"1782\",\"type\":\"CDSView\"},{\"attributes\":{\"data\":{\"top\":[10,12,16,9,10,8,12,13,14,14,12,16],\"x\":[[\"Q1\",\"jan\"],[\"Q1\",\"feb\"],[\"Q1\",\"mar\"],[\"Q2\",\"apr\"],[\"Q2\",\"may\"],[\"Q2\",\"jun\"],[\"Q3\",\"jul\"],[\"Q3\",\"aug\"],[\"Q3\",\"sep\"],[\"Q4\",\"oct\"],[\"Q4\",\"nov\"],[\"Q4\",\"dec\"]]},\"selected\":{\"id\":\"1850\"},\"selection_policy\":{\"id\":\"1849\"}},\"id\":\"1771\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"#1f77b4\"},\"hatch_alpha\":{\"value\":0.5},\"line_alpha\":{\"value\":0.5},\"line_color\":{\"value\":\"#1f77b4\"},\"top\":{\"field\":\"top\"},\"width\":{\"value\":0.9},\"x\":{\"field\":\"x\"}},\"id\":\"1772\",\"type\":\"VBar\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"red\",\"line_width\":3,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1779\",\"type\":\"Line\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1771\"},\"glyph\":{\"id\":\"1772\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1774\"},\"nonselection_glyph\":{\"id\":\"1773\"},\"view\":{\"id\":\"1776\"}},\"id\":\"1775\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"axis\":{\"id\":\"1750\"},\"coordinates\":null,\"grid_line_color\":null,\"group\":null,\"ticker\":null},\"id\":\"1752\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1850\",\"type\":\"Selection\"},{\"attributes\":{\"source\":{\"id\":\"1771\"}},\"id\":\"1776\",\"type\":\"CDSView\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1783\"},\"glyph\":{\"id\":\"1784\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1786\"},\"nonselection_glyph\":{\"id\":\"1785\"},\"view\":{\"id\":\"1788\"}},\"id\":\"1787\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1757\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"1761\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"1851\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1758\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"start\":0},\"id\":\"1744\",\"type\":\"DataRange1d\"},{\"attributes\":{\"overlay\":{\"id\":\"1763\"}},\"id\":\"1759\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"1852\",\"type\":\"Selection\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1763\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"fill_color\":{\"value\":\"white\"},\"line_color\":{\"value\":\"red\"},\"size\":{\"value\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1784\",\"type\":\"Circle\"},{\"attributes\":{\"line_color\":\"red\",\"line_width\":3,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1778\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1760\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"1853\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1751\",\"type\":\"CategoricalTicker\"},{\"attributes\":{},\"id\":\"1854\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1746\",\"type\":\"CategoricalScale\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"white\"},\"hatch_alpha\":{\"value\":0.1},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"red\"},\"size\":{\"value\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1785\",\"type\":\"Circle\"},{\"attributes\":{\"tools\":[{\"id\":\"1757\"},{\"id\":\"1758\"},{\"id\":\"1759\"},{\"id\":\"1760\"},{\"id\":\"1761\"},{\"id\":\"1762\"}]},\"id\":\"1764\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"1762\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"1748\",\"type\":\"LinearScale\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1847\"},\"group\":null,\"major_label_policy\":{\"id\":\"1848\"},\"ticker\":{\"id\":\"1751\"}},\"id\":\"1750\",\"type\":\"CategoricalAxis\"},{\"attributes\":{\"source\":{\"id\":\"1783\"}},\"id\":\"1788\",\"type\":\"CDSView\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"1844\"},\"group\":null,\"major_label_policy\":{\"id\":\"1845\"},\"ticker\":{\"id\":\"1754\"}},\"id\":\"1753\",\"type\":\"LinearAxis\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"white\"},\"hatch_alpha\":{\"value\":0.2},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"red\"},\"size\":{\"value\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1786\",\"type\":\"Circle\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#1f77b4\"},\"hatch_alpha\":{\"value\":0.1},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"top\":{\"field\":\"top\"},\"width\":{\"value\":0.9},\"x\":{\"field\":\"x\"}},\"id\":\"1773\",\"type\":\"VBar\"}],\"root_ids\":[\"1742\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.3\"}};\n",
878
+ " const render_items = [{\"docid\":\"c2a1ae7d-d475-4ece-bc04-1809b7c4ce7d\",\"root_ids\":[\"1742\"],\"roots\":{\"1742\":\"7c736348-c628-4980-aa44-32afa2f18572\"}}];\n",
879
+ " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
880
+ " }\n",
881
+ " if (root.Bokeh !== undefined) {\n",
882
+ " embed_document(root);\n",
883
+ " } else {\n",
884
+ " let attempts = 0;\n",
885
+ " const timer = setInterval(function(root) {\n",
886
+ " if (root.Bokeh !== undefined) {\n",
887
+ " clearInterval(timer);\n",
888
+ " embed_document(root);\n",
889
+ " } else {\n",
890
+ " attempts++;\n",
891
+ " if (attempts > 100) {\n",
892
+ " clearInterval(timer);\n",
893
+ " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n",
894
+ " }\n",
895
+ " }\n",
896
+ " }, 10, root)\n",
897
+ " }\n",
898
+ "})(window);"
899
+ ],
900
+ "application/vnd.bokehjs_exec.v0+json": ""
901
+ },
902
+ "metadata": {
903
+ "application/vnd.bokehjs_exec.v0+json": {
904
+ "id": "1742"
905
+ }
906
+ },
907
+ "output_type": "display_data"
908
+ }
909
+ ],
910
+ "source": [
911
+ "factors = [(\"Q1\", \"jan\"), (\"Q1\", \"feb\"), (\"Q1\", \"mar\"),\n",
912
+ " (\"Q2\", \"apr\"), (\"Q2\", \"may\"), (\"Q2\", \"jun\"),\n",
913
+ " (\"Q3\", \"jul\"), (\"Q3\", \"aug\"), (\"Q3\", \"sep\"),\n",
914
+ " (\"Q4\", \"oct\"), (\"Q4\", \"nov\"), (\"Q4\", \"dec\")]\n",
915
+ "\n",
916
+ "p = figure(x_range=FactorRange(*factors), plot_height=250)\n",
917
+ "\n",
918
+ "x = [ 10, 12, 16, 9, 10, 8, 12, 13, 14, 14, 12, 16 ]\n",
919
+ "p.vbar(x=factors, top=x, width=0.9, alpha=0.5)\n",
920
+ "\n",
921
+ "qs, aves = [\"Q1\", \"Q2\", \"Q3\", \"Q4\"], [12, 9, 13, 14]\n",
922
+ "p.line(x=qs, y=aves, color=\"red\", line_width=3)\n",
923
+ "p.circle(x=qs, y=aves, line_color=\"red\", fill_color=\"white\", size=10)\n",
924
+ "\n",
925
+ "p.y_range.start = 0\n",
926
+ "p.x_range.range_padding = 0.1\n",
927
+ "p.xgrid.grid_line_color = None\n",
928
+ "\n",
929
+ "show(p)"
930
+ ]
931
+ },
932
+ {
933
+ "cell_type": "markdown",
934
+ "metadata": {},
935
+ "source": [
936
+ "## Using Pandas `GroupBy`\n",
937
+ "\n",
938
+ "We may want to make charts based on the results of \"group by\" operations. Bokeh can utilize Pandas `GroupBy` objects directly to make this simpler. Let's take a look at how Bokeh deals with `GroupBy` objects by examining the \"cars\" data set."
939
+ ]
940
+ },
941
+ {
942
+ "cell_type": "code",
943
+ "execution_count": 12,
944
+ "metadata": {},
945
+ "outputs": [
946
+ {
947
+ "data": {
948
+ "text/html": [
949
+ "<div>\n",
950
+ "<style scoped>\n",
951
+ " .dataframe tbody tr th:only-of-type {\n",
952
+ " vertical-align: middle;\n",
953
+ " }\n",
954
+ "\n",
955
+ " .dataframe tbody tr th {\n",
956
+ " vertical-align: top;\n",
957
+ " }\n",
958
+ "\n",
959
+ " .dataframe thead th {\n",
960
+ " text-align: right;\n",
961
+ " }\n",
962
+ "</style>\n",
963
+ "<table border=\"1\" class=\"dataframe\">\n",
964
+ " <thead>\n",
965
+ " <tr style=\"text-align: right;\">\n",
966
+ " <th></th>\n",
967
+ " <th>mpg</th>\n",
968
+ " <th>cyl</th>\n",
969
+ " <th>displ</th>\n",
970
+ " <th>hp</th>\n",
971
+ " <th>weight</th>\n",
972
+ " <th>accel</th>\n",
973
+ " <th>yr</th>\n",
974
+ " <th>origin</th>\n",
975
+ " <th>name</th>\n",
976
+ " <th>mfr</th>\n",
977
+ " </tr>\n",
978
+ " </thead>\n",
979
+ " <tbody>\n",
980
+ " <tr>\n",
981
+ " <th>0</th>\n",
982
+ " <td>18.0</td>\n",
983
+ " <td>8</td>\n",
984
+ " <td>307.0</td>\n",
985
+ " <td>130</td>\n",
986
+ " <td>3504</td>\n",
987
+ " <td>12.0</td>\n",
988
+ " <td>70</td>\n",
989
+ " <td>North America</td>\n",
990
+ " <td>chevrolet chevelle malibu</td>\n",
991
+ " <td>chevrolet</td>\n",
992
+ " </tr>\n",
993
+ " <tr>\n",
994
+ " <th>1</th>\n",
995
+ " <td>15.0</td>\n",
996
+ " <td>8</td>\n",
997
+ " <td>350.0</td>\n",
998
+ " <td>165</td>\n",
999
+ " <td>3693</td>\n",
1000
+ " <td>11.5</td>\n",
1001
+ " <td>70</td>\n",
1002
+ " <td>North America</td>\n",
1003
+ " <td>buick skylark 320</td>\n",
1004
+ " <td>buick</td>\n",
1005
+ " </tr>\n",
1006
+ " <tr>\n",
1007
+ " <th>2</th>\n",
1008
+ " <td>18.0</td>\n",
1009
+ " <td>8</td>\n",
1010
+ " <td>318.0</td>\n",
1011
+ " <td>150</td>\n",
1012
+ " <td>3436</td>\n",
1013
+ " <td>11.0</td>\n",
1014
+ " <td>70</td>\n",
1015
+ " <td>North America</td>\n",
1016
+ " <td>plymouth satellite</td>\n",
1017
+ " <td>plymouth</td>\n",
1018
+ " </tr>\n",
1019
+ " <tr>\n",
1020
+ " <th>3</th>\n",
1021
+ " <td>16.0</td>\n",
1022
+ " <td>8</td>\n",
1023
+ " <td>304.0</td>\n",
1024
+ " <td>150</td>\n",
1025
+ " <td>3433</td>\n",
1026
+ " <td>12.0</td>\n",
1027
+ " <td>70</td>\n",
1028
+ " <td>North America</td>\n",
1029
+ " <td>amc rebel sst</td>\n",
1030
+ " <td>amc</td>\n",
1031
+ " </tr>\n",
1032
+ " <tr>\n",
1033
+ " <th>4</th>\n",
1034
+ " <td>17.0</td>\n",
1035
+ " <td>8</td>\n",
1036
+ " <td>302.0</td>\n",
1037
+ " <td>140</td>\n",
1038
+ " <td>3449</td>\n",
1039
+ " <td>10.5</td>\n",
1040
+ " <td>70</td>\n",
1041
+ " <td>North America</td>\n",
1042
+ " <td>ford torino</td>\n",
1043
+ " <td>ford</td>\n",
1044
+ " </tr>\n",
1045
+ " </tbody>\n",
1046
+ "</table>\n",
1047
+ "</div>"
1048
+ ],
1049
+ "text/plain": [
1050
+ " mpg cyl displ hp weight accel yr origin \\\n",
1051
+ "0 18.0 8 307.0 130 3504 12.0 70 North America \n",
1052
+ "1 15.0 8 350.0 165 3693 11.5 70 North America \n",
1053
+ "2 18.0 8 318.0 150 3436 11.0 70 North America \n",
1054
+ "3 16.0 8 304.0 150 3433 12.0 70 North America \n",
1055
+ "4 17.0 8 302.0 140 3449 10.5 70 North America \n",
1056
+ "\n",
1057
+ " name mfr \n",
1058
+ "0 chevrolet chevelle malibu chevrolet \n",
1059
+ "1 buick skylark 320 buick \n",
1060
+ "2 plymouth satellite plymouth \n",
1061
+ "3 amc rebel sst amc \n",
1062
+ "4 ford torino ford "
1063
+ ]
1064
+ },
1065
+ "execution_count": 12,
1066
+ "metadata": {},
1067
+ "output_type": "execute_result"
1068
+ }
1069
+ ],
1070
+ "source": [
1071
+ "from bokeh.sampledata.autompg import autompg_clean as df\n",
1072
+ "\n",
1073
+ "df.cyl = df.cyl.astype(str)\n",
1074
+ "df.head()"
1075
+ ]
1076
+ },
1077
+ {
1078
+ "cell_type": "markdown",
1079
+ "metadata": {},
1080
+ "source": [
1081
+ "Suppose we would like to display some values grouped according to `\"cyl\"`. If we create `df.groupby(('cyl'))` then call `group.describe()` we can see that Pandas automatically computes various statistics for each group. "
1082
+ ]
1083
+ },
1084
+ {
1085
+ "cell_type": "code",
1086
+ "execution_count": 13,
1087
+ "metadata": {},
1088
+ "outputs": [
1089
+ {
1090
+ "data": {
1091
+ "text/html": [
1092
+ "<div>\n",
1093
+ "<style scoped>\n",
1094
+ " .dataframe tbody tr th:only-of-type {\n",
1095
+ " vertical-align: middle;\n",
1096
+ " }\n",
1097
+ "\n",
1098
+ " .dataframe tbody tr th {\n",
1099
+ " vertical-align: top;\n",
1100
+ " }\n",
1101
+ "\n",
1102
+ " .dataframe thead tr th {\n",
1103
+ " text-align: left;\n",
1104
+ " }\n",
1105
+ "\n",
1106
+ " .dataframe thead tr:last-of-type th {\n",
1107
+ " text-align: right;\n",
1108
+ " }\n",
1109
+ "</style>\n",
1110
+ "<table border=\"1\" class=\"dataframe\">\n",
1111
+ " <thead>\n",
1112
+ " <tr>\n",
1113
+ " <th></th>\n",
1114
+ " <th colspan=\"8\" halign=\"left\">mpg</th>\n",
1115
+ " <th colspan=\"2\" halign=\"left\">displ</th>\n",
1116
+ " <th>...</th>\n",
1117
+ " <th colspan=\"2\" halign=\"left\">accel</th>\n",
1118
+ " <th colspan=\"8\" halign=\"left\">yr</th>\n",
1119
+ " </tr>\n",
1120
+ " <tr>\n",
1121
+ " <th></th>\n",
1122
+ " <th>count</th>\n",
1123
+ " <th>mean</th>\n",
1124
+ " <th>std</th>\n",
1125
+ " <th>min</th>\n",
1126
+ " <th>25%</th>\n",
1127
+ " <th>50%</th>\n",
1128
+ " <th>75%</th>\n",
1129
+ " <th>max</th>\n",
1130
+ " <th>count</th>\n",
1131
+ " <th>mean</th>\n",
1132
+ " <th>...</th>\n",
1133
+ " <th>75%</th>\n",
1134
+ " <th>max</th>\n",
1135
+ " <th>count</th>\n",
1136
+ " <th>mean</th>\n",
1137
+ " <th>std</th>\n",
1138
+ " <th>min</th>\n",
1139
+ " <th>25%</th>\n",
1140
+ " <th>50%</th>\n",
1141
+ " <th>75%</th>\n",
1142
+ " <th>max</th>\n",
1143
+ " </tr>\n",
1144
+ " <tr>\n",
1145
+ " <th>cyl</th>\n",
1146
+ " <th></th>\n",
1147
+ " <th></th>\n",
1148
+ " <th></th>\n",
1149
+ " <th></th>\n",
1150
+ " <th></th>\n",
1151
+ " <th></th>\n",
1152
+ " <th></th>\n",
1153
+ " <th></th>\n",
1154
+ " <th></th>\n",
1155
+ " <th></th>\n",
1156
+ " <th></th>\n",
1157
+ " <th></th>\n",
1158
+ " <th></th>\n",
1159
+ " <th></th>\n",
1160
+ " <th></th>\n",
1161
+ " <th></th>\n",
1162
+ " <th></th>\n",
1163
+ " <th></th>\n",
1164
+ " <th></th>\n",
1165
+ " <th></th>\n",
1166
+ " <th></th>\n",
1167
+ " </tr>\n",
1168
+ " </thead>\n",
1169
+ " <tbody>\n",
1170
+ " <tr>\n",
1171
+ " <th>3</th>\n",
1172
+ " <td>4.0</td>\n",
1173
+ " <td>20.550000</td>\n",
1174
+ " <td>2.564501</td>\n",
1175
+ " <td>18.0</td>\n",
1176
+ " <td>18.75</td>\n",
1177
+ " <td>20.25</td>\n",
1178
+ " <td>22.05</td>\n",
1179
+ " <td>23.7</td>\n",
1180
+ " <td>4.0</td>\n",
1181
+ " <td>72.500000</td>\n",
1182
+ " <td>...</td>\n",
1183
+ " <td>13.5</td>\n",
1184
+ " <td>13.5</td>\n",
1185
+ " <td>4.0</td>\n",
1186
+ " <td>75.500000</td>\n",
1187
+ " <td>3.696846</td>\n",
1188
+ " <td>72.0</td>\n",
1189
+ " <td>72.75</td>\n",
1190
+ " <td>75.0</td>\n",
1191
+ " <td>77.75</td>\n",
1192
+ " <td>80.0</td>\n",
1193
+ " </tr>\n",
1194
+ " <tr>\n",
1195
+ " <th>4</th>\n",
1196
+ " <td>199.0</td>\n",
1197
+ " <td>29.283920</td>\n",
1198
+ " <td>5.670546</td>\n",
1199
+ " <td>18.0</td>\n",
1200
+ " <td>25.00</td>\n",
1201
+ " <td>28.40</td>\n",
1202
+ " <td>32.95</td>\n",
1203
+ " <td>46.6</td>\n",
1204
+ " <td>199.0</td>\n",
1205
+ " <td>109.670854</td>\n",
1206
+ " <td>...</td>\n",
1207
+ " <td>18.0</td>\n",
1208
+ " <td>24.8</td>\n",
1209
+ " <td>199.0</td>\n",
1210
+ " <td>77.030151</td>\n",
1211
+ " <td>3.737484</td>\n",
1212
+ " <td>70.0</td>\n",
1213
+ " <td>74.00</td>\n",
1214
+ " <td>77.0</td>\n",
1215
+ " <td>80.00</td>\n",
1216
+ " <td>82.0</td>\n",
1217
+ " </tr>\n",
1218
+ " <tr>\n",
1219
+ " <th>5</th>\n",
1220
+ " <td>3.0</td>\n",
1221
+ " <td>27.366667</td>\n",
1222
+ " <td>8.228204</td>\n",
1223
+ " <td>20.3</td>\n",
1224
+ " <td>22.85</td>\n",
1225
+ " <td>25.40</td>\n",
1226
+ " <td>30.90</td>\n",
1227
+ " <td>36.4</td>\n",
1228
+ " <td>3.0</td>\n",
1229
+ " <td>145.000000</td>\n",
1230
+ " <td>...</td>\n",
1231
+ " <td>20.0</td>\n",
1232
+ " <td>20.1</td>\n",
1233
+ " <td>3.0</td>\n",
1234
+ " <td>79.000000</td>\n",
1235
+ " <td>1.000000</td>\n",
1236
+ " <td>78.0</td>\n",
1237
+ " <td>78.50</td>\n",
1238
+ " <td>79.0</td>\n",
1239
+ " <td>79.50</td>\n",
1240
+ " <td>80.0</td>\n",
1241
+ " </tr>\n",
1242
+ " <tr>\n",
1243
+ " <th>6</th>\n",
1244
+ " <td>83.0</td>\n",
1245
+ " <td>19.973494</td>\n",
1246
+ " <td>3.828809</td>\n",
1247
+ " <td>15.0</td>\n",
1248
+ " <td>18.00</td>\n",
1249
+ " <td>19.00</td>\n",
1250
+ " <td>21.00</td>\n",
1251
+ " <td>38.0</td>\n",
1252
+ " <td>83.0</td>\n",
1253
+ " <td>218.361446</td>\n",
1254
+ " <td>...</td>\n",
1255
+ " <td>17.6</td>\n",
1256
+ " <td>21.0</td>\n",
1257
+ " <td>83.0</td>\n",
1258
+ " <td>75.951807</td>\n",
1259
+ " <td>3.264381</td>\n",
1260
+ " <td>70.0</td>\n",
1261
+ " <td>74.00</td>\n",
1262
+ " <td>76.0</td>\n",
1263
+ " <td>78.00</td>\n",
1264
+ " <td>82.0</td>\n",
1265
+ " </tr>\n",
1266
+ " <tr>\n",
1267
+ " <th>8</th>\n",
1268
+ " <td>103.0</td>\n",
1269
+ " <td>14.963107</td>\n",
1270
+ " <td>2.836284</td>\n",
1271
+ " <td>9.0</td>\n",
1272
+ " <td>13.00</td>\n",
1273
+ " <td>14.00</td>\n",
1274
+ " <td>16.00</td>\n",
1275
+ " <td>26.6</td>\n",
1276
+ " <td>103.0</td>\n",
1277
+ " <td>345.009709</td>\n",
1278
+ " <td>...</td>\n",
1279
+ " <td>14.0</td>\n",
1280
+ " <td>22.2</td>\n",
1281
+ " <td>103.0</td>\n",
1282
+ " <td>73.902913</td>\n",
1283
+ " <td>3.021214</td>\n",
1284
+ " <td>70.0</td>\n",
1285
+ " <td>72.00</td>\n",
1286
+ " <td>73.0</td>\n",
1287
+ " <td>76.00</td>\n",
1288
+ " <td>81.0</td>\n",
1289
+ " </tr>\n",
1290
+ " </tbody>\n",
1291
+ "</table>\n",
1292
+ "<p>5 rows × 48 columns</p>\n",
1293
+ "</div>"
1294
+ ],
1295
+ "text/plain": [
1296
+ " mpg displ \\\n",
1297
+ " count mean std min 25% 50% 75% max count \n",
1298
+ "cyl \n",
1299
+ "3 4.0 20.550000 2.564501 18.0 18.75 20.25 22.05 23.7 4.0 \n",
1300
+ "4 199.0 29.283920 5.670546 18.0 25.00 28.40 32.95 46.6 199.0 \n",
1301
+ "5 3.0 27.366667 8.228204 20.3 22.85 25.40 30.90 36.4 3.0 \n",
1302
+ "6 83.0 19.973494 3.828809 15.0 18.00 19.00 21.00 38.0 83.0 \n",
1303
+ "8 103.0 14.963107 2.836284 9.0 13.00 14.00 16.00 26.6 103.0 \n",
1304
+ "\n",
1305
+ " ... accel yr \\\n",
1306
+ " mean ... 75% max count mean std min 25% \n",
1307
+ "cyl ... \n",
1308
+ "3 72.500000 ... 13.5 13.5 4.0 75.500000 3.696846 72.0 72.75 \n",
1309
+ "4 109.670854 ... 18.0 24.8 199.0 77.030151 3.737484 70.0 74.00 \n",
1310
+ "5 145.000000 ... 20.0 20.1 3.0 79.000000 1.000000 78.0 78.50 \n",
1311
+ "6 218.361446 ... 17.6 21.0 83.0 75.951807 3.264381 70.0 74.00 \n",
1312
+ "8 345.009709 ... 14.0 22.2 103.0 73.902913 3.021214 70.0 72.00 \n",
1313
+ "\n",
1314
+ " \n",
1315
+ " 50% 75% max \n",
1316
+ "cyl \n",
1317
+ "3 75.0 77.75 80.0 \n",
1318
+ "4 77.0 80.00 82.0 \n",
1319
+ "5 79.0 79.50 80.0 \n",
1320
+ "6 76.0 78.00 82.0 \n",
1321
+ "8 73.0 76.00 81.0 \n",
1322
+ "\n",
1323
+ "[5 rows x 48 columns]"
1324
+ ]
1325
+ },
1326
+ "execution_count": 13,
1327
+ "metadata": {},
1328
+ "output_type": "execute_result"
1329
+ }
1330
+ ],
1331
+ "source": [
1332
+ "group = df.groupby(('cyl'))\n",
1333
+ "\n",
1334
+ "group.describe()"
1335
+ ]
1336
+ },
1337
+ {
1338
+ "cell_type": "markdown",
1339
+ "metadata": {},
1340
+ "source": [
1341
+ "Bokeh allows us to create a `ColumnDataSource` directly from Pandas `GroupBy` objects, and when this happens, the data source is automatically filled with the summary values from `group.desribe()`. Observe the column names below, which correspond to the output above."
1342
+ ]
1343
+ },
1344
+ {
1345
+ "cell_type": "code",
1346
+ "execution_count": 14,
1347
+ "metadata": {},
1348
+ "outputs": [
1349
+ {
1350
+ "data": {
1351
+ "text/plain": [
1352
+ "'cyl,mpg_count,mpg_mean,mpg_std,mpg_min,mpg_25%,mpg_50%,mpg_75%,mpg_max,displ_count,displ_mean,displ_std,displ_min,displ_25%,displ_50%,displ_75%,displ_max,hp_count,hp_mean,hp_std,hp_min,hp_25%,hp_50%,hp_75%,hp_max,weight_count,weight_mean,weight_std,weight_min,weight_25%,weight_50%,weight_75%,weight_max,accel_count,accel_mean,accel_std,accel_min,accel_25%,accel_50%,accel_75%,accel_max,yr_count,yr_mean,yr_std,yr_min,yr_25%,yr_50%,yr_75%,yr_max'"
1353
+ ]
1354
+ },
1355
+ "execution_count": 14,
1356
+ "metadata": {},
1357
+ "output_type": "execute_result"
1358
+ }
1359
+ ],
1360
+ "source": [
1361
+ "source = ColumnDataSource(group)\n",
1362
+ "\n",
1363
+ "\",\".join(source.column_names)"
1364
+ ]
1365
+ },
1366
+ {
1367
+ "cell_type": "markdown",
1368
+ "metadata": {},
1369
+ "source": [
1370
+ "Knowing these column names, we can immediately create bar charts based on Pandas `GroupBy` objects. The example below plots the aveage MPG per cylinder, i.e. columns `\"mpg_mean\"` vs `\"cyl\"`"
1371
+ ]
1372
+ },
1373
+ {
1374
+ "cell_type": "code",
1375
+ "execution_count": 15,
1376
+ "metadata": {},
1377
+ "outputs": [
1378
+ {
1379
+ "data": {
1380
+ "text/html": [
1381
+ "\n",
1382
+ " <div class=\"bk-root\" id=\"20cccf9d-d397-4620-ae13-a7d84e8e9cfa\" data-root-id=\"1933\"></div>\n"
1383
+ ]
1384
+ },
1385
+ "metadata": {},
1386
+ "output_type": "display_data"
1387
+ },
1388
+ {
1389
+ "data": {
1390
+ "application/javascript": [
1391
+ "(function(root) {\n",
1392
+ " function embed_document(root) {\n",
1393
+ " const docs_json = {\"594035d7-a16f-45f4-8f55-60dcbd98275f\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1942\"}],\"center\":[{\"id\":\"1944\"},{\"id\":\"1948\"}],\"height\":350,\"left\":[{\"id\":\"1945\"}],\"renderers\":[{\"id\":\"1967\"}],\"title\":{\"id\":\"2036\"},\"toolbar\":{\"id\":\"1956\"},\"x_range\":{\"id\":\"1934\"},\"x_scale\":{\"id\":\"1938\"},\"y_range\":{\"id\":\"1936\"},\"y_scale\":{\"id\":\"1940\"}},\"id\":\"1933\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"source\":{\"id\":\"1931\"}},\"id\":\"1968\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1950\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"1938\",\"type\":\"CategoricalScale\"},{\"attributes\":{},\"id\":\"1949\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"2039\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"2045\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1940\",\"type\":\"LinearScale\"},{\"attributes\":{\"fill_color\":{\"field\":\"cyl\",\"transform\":{\"id\":\"1932\"}},\"line_color\":{\"value\":\"white\"},\"top\":{\"field\":\"mpg_mean\"},\"x\":{\"field\":\"cyl\"}},\"id\":\"1964\",\"type\":\"VBar\"},{\"attributes\":{\"data\":{\"accel_25%\":{\"__ndarray__\":\"AAAAAACAKkCamZmZmZktQGZmZmZm5jFAmpmZmZkZLkAAAAAAAAAnQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"accel_50%\":{\"__ndarray__\":\"AAAAAAAAK0AzMzMzMzMwQGZmZmZm5jNAAAAAAAAAMEAAAAAAAAAqQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"accel_75%\":{\"__ndarray__\":\"AAAAAAAAK0AAAAAAAAAyQAAAAAAAADRAmpmZmZmZMUAAAAAAAAAsQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"accel_count\":{\"__ndarray__\":\"AAAAAAAAEEAAAAAAAOBoQAAAAAAAAAhAAAAAAADAVEAAAAAAAMBZQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"accel_max\":{\"__ndarray__\":\"AAAAAAAAK0DNzMzMzMw4QJqZmZmZGTRAAAAAAAAANUAzMzMzMzM2QA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"accel_mean\":{\"__ndarray__\":\"AAAAAACAKkCRxCwG+JQwQCIiIiIiojJA7d9LWxRBMEA+LI1MIukpQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"accel_min\":{\"__ndarray__\":\"AAAAAAAAKUAzMzMzMzMnQM3MzMzMzC9AmpmZmZmZJkAAAAAAAAAgQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"accel_std\":{\"__ndarray__\":\"AAAAAAAA4D+b1TA5wxADQO1jrP039AJA0StM4BRBAED/ZpysTswBQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"cyl\":[\"3\",\"4\",\"5\",\"6\",\"8\"],\"displ_25%\":{\"__ndarray__\":\"AAAAAACAUUAAAAAAAMBWQAAAAAAAgF9AAAAAAADwaEAAAAAAABBzQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"displ_50%\":{\"__ndarray__\":\"AAAAAACAUUAAAAAAAEBaQAAAAAAAYGBAAAAAAADgbEAAAAAAAOB1QA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"displ_75%\":{\"__ndarray__\":\"AAAAAAAgUkAAAAAAAEBeQAAAAAAAoGNAAAAAAABAb0AAAAAAAIB2QA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"displ_count\":{\"__ndarray__\":\"AAAAAAAAEEAAAAAAAOBoQAAAAAAAAAhAAAAAAADAVEAAAAAAAMBZQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"displ_max\":{\"__ndarray__\":\"AAAAAAAAVEAAAAAAAIBjQAAAAAAA4GZAAAAAAABgcEAAAAAAAHB8QA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"displ_mean\":{\"__ndarray__\":\"AAAAAAAgUkD/9sBG72pbQAAAAAAAIGJAmjq/9pBLa0DJeVnEJ5B1QA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"displ_min\":{\"__ndarray__\":\"AAAAAACAUUAAAAAAAABRQAAAAAAAQF5AAAAAAAAgYkAAAAAAAEBwQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"displ_std\":{\"__ndarray__\":\"AAAAAAAAFEC8furRdmA1QLmT4WuwpEBAT4BvAbA2QEDXs8ZGYGNHQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"hp_25%\":{\"__ndarray__\":\"AAAAAADQV0AAAAAAAABRQAAAAAAAAFJAAAAAAAAgV0AAAAAAAIBhQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"hp_50%\":{\"__ndarray__\":\"AAAAAACgWEAAAAAAAIBTQAAAAAAAQFNAAAAAAAAAWUAAAAAAAMBiQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"hp_75%\":{\"__ndarray__\":\"AAAAAACgWUAAAAAAAABWQAAAAAAAgFZAAAAAAACAW0AAAAAAAOBlQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"hp_count\":{\"__ndarray__\":\"AAAAAAAAEEAAAAAAAOBoQAAAAAAAAAhAAAAAAADAVEAAAAAAAMBZQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"hp_max\":{\"__ndarray__\":\"AAAAAACAW0AAAAAAAMBcQAAAAAAAwFlAAAAAAACgZEAAAAAAAMBsQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"hp_mean\":{\"__ndarray__\":\"AAAAAADQWEB2PKeSApJTQFVVVVVVlVRAsD3ksmJgWUDCfquNocljQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"hp_min\":{\"__ndarray__\":\"AAAAAACAVkAAAAAAAABHQAAAAAAAwFBAAAAAAAAAUkAAAAAAAIBWQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"hp_std\":{\"__ndarray__\":\"sTIWI2yaIECGr0Go0wstQDKsjxZJlTJAxZAwIvaeLEBQwZb3G3Q8QA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"mpg_25%\":{\"__ndarray__\":\"AAAAAADAMkAAAAAAAAA5QJqZmZmZ2TZAAAAAAAAAMkAAAAAAAAAqQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"mpg_50%\":{\"__ndarray__\":\"AAAAAABANEBmZmZmZmY8QGZmZmZmZjlAAAAAAAAAM0AAAAAAAAAsQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"mpg_75%\":{\"__ndarray__\":\"zczMzMwMNkCamZmZmXlAQGZmZmZm5j5AAAAAAAAANUAAAAAAAAAwQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"mpg_count\":{\"__ndarray__\":\"AAAAAAAAEEAAAAAAAOBoQAAAAAAAAAhAAAAAAADAVEAAAAAAAMBZQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"mpg_max\":{\"__ndarray__\":\"MzMzMzOzN0DNzMzMzExHQDMzMzMzM0JAAAAAAAAAQ0CamZmZmZk6QA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"mpg_mean\":{\"__ndarray__\":\"zczMzMyMNEBwD2z0rkg9QN3d3d3dXTtA6lu15jb5M0BgwH9VHO0tQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"mpg_min\":{\"__ndarray__\":\"AAAAAAAAMkAAAAAAAAAyQM3MzMzMTDRAAAAAAAAALkAAAAAAAAAiQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"mpg_std\":{\"__ndarray__\":\"ca9eOxmEBECNLXOmo64WQOWG1RfXdCBALURKf2ahDkC0cW7BtbAGQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"weight_25%\":{\"__ndarray__\":\"AAAAAADNoUAAAAAAAP6fQAAAAAAAlKZAAAAAAAACp0AAAAAAAK6tQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"weight_50%\":{\"__ndarray__\":\"AAAAAACOokAAAAAAAGyhQAAAAAAADKdAAAAAAAAUqUAAAAAAACywQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"weight_75%\":{\"__ndarray__\":\"AAAAAAB+o0AAAAAAAAWkQAAAAAAAUKlAAAAAAADOqkAAAAAAgDOxQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"weight_count\":{\"__ndarray__\":\"AAAAAAAAEEAAAAAAAOBoQAAAAAAAAAhAAAAAAADAVEAAAAAAAMBZQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"weight_max\":{\"__ndarray__\":\"AAAAAABApUAAAAAAAIypQAAAAAAAlKtAAAAAAACGrkAAAAAAABS0QA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"weight_mean\":{\"__ndarray__\":\"AAAAAAC9okAsMl+aOAKiQKuqqqqqPqhAjqbOrz0EqUBD0x3stxKwQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"weight_min\":{\"__ndarray__\":\"AAAAAACYoEAAAAAAADSZQAAAAAAAHKZAAAAAAABQo0AAAAAAAByoQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"weight_std\":{\"__ndarray__\":\"udhs7B3ybkC6+VSg9G11QA9pSX6AZXdAdmeNgiLGdEC+UR6eVA18QA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"yr_25%\":{\"__ndarray__\":\"AAAAAAAwUkAAAAAAAIBSQAAAAAAAoFNAAAAAAACAUkAAAAAAAABSQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"yr_50%\":{\"__ndarray__\":\"AAAAAADAUkAAAAAAAEBTQAAAAAAAwFNAAAAAAAAAU0AAAAAAAEBSQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"yr_75%\":{\"__ndarray__\":\"AAAAAABwU0AAAAAAAABUQAAAAAAA4FNAAAAAAACAU0AAAAAAAABTQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"yr_count\":{\"__ndarray__\":\"AAAAAAAAEEAAAAAAAOBoQAAAAAAAAAhAAAAAAADAVEAAAAAAAMBZQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"yr_max\":{\"__ndarray__\":\"AAAAAAAAVEAAAAAAAIBUQAAAAAAAAFRAAAAAAACAVEAAAAAAAEBUQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"yr_mean\":{\"__ndarray__\":\"AAAAAADgUkDEWG397UFTQAAAAAAAwFNAghLeaOr8UkCL+ARSyXlSQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"yr_min\":{\"__ndarray__\":\"AAAAAAAAUkAAAAAAAIBRQAAAAAAAgFNAAAAAAACAUUAAAAAAAIBRQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},\"yr_std\":{\"__ndarray__\":\"p1MQvCOTDUAd5PLGXeYNQAAAAAAAAPA/p0OY+nMdCkAEv1x2cisIQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]}},\"selected\":{\"id\":\"2045\"},\"selection_policy\":{\"id\":\"2044\"}},\"id\":\"1931\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"tools\":[{\"id\":\"1949\"},{\"id\":\"1950\"},{\"id\":\"1951\"},{\"id\":\"1952\"},{\"id\":\"1953\"},{\"id\":\"1954\"}]},\"id\":\"1956\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"1953\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"2043\",\"type\":\"AllLabels\"},{\"attributes\":{\"factors\":[\"3\",\"4\",\"5\",\"6\",\"8\"],\"palette\":[\"#2b83ba\",\"#abdda4\",\"#ffffbf\",\"#fdae61\",\"#d7191c\"]},\"id\":\"1932\",\"type\":\"CategoricalColorMapper\"},{\"attributes\":{\"axis_label\":\"Mean MPG\",\"coordinates\":null,\"formatter\":{\"id\":\"2039\"},\"group\":null,\"major_label_policy\":{\"id\":\"2040\"},\"ticker\":{\"id\":\"1946\"}},\"id\":\"1945\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"2042\",\"type\":\"CategoricalTickFormatter\"},{\"attributes\":{\"axis_label\":\"number of cylinders\",\"coordinates\":null,\"formatter\":{\"id\":\"2042\"},\"group\":null,\"major_label_policy\":{\"id\":\"2043\"},\"ticker\":{\"id\":\"1943\"}},\"id\":\"1942\",\"type\":\"CategoricalAxis\"},{\"attributes\":{\"start\":0},\"id\":\"1936\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1946\",\"type\":\"BasicTicker\"},{\"attributes\":{\"factors\":[\"3\",\"4\",\"5\",\"6\",\"8\"]},\"id\":\"1934\",\"type\":\"FactorRange\"},{\"attributes\":{\"overlay\":{\"id\":\"1955\"}},\"id\":\"1951\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"field\":\"cyl\",\"transform\":{\"id\":\"1932\"}},\"hatch_alpha\":{\"value\":0.1},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"white\"},\"top\":{\"field\":\"mpg_mean\"},\"x\":{\"field\":\"cyl\"}},\"id\":\"1965\",\"type\":\"VBar\"},{\"attributes\":{},\"id\":\"1952\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"1943\",\"type\":\"CategoricalTicker\"},{\"attributes\":{\"axis\":{\"id\":\"1942\"},\"coordinates\":null,\"grid_line_color\":null,\"group\":null,\"ticker\":null},\"id\":\"1944\",\"type\":\"Grid\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1955\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"coordinates\":null,\"group\":null},\"id\":\"2036\",\"type\":\"Title\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1931\"},\"glyph\":{\"id\":\"1964\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1966\"},\"nonselection_glyph\":{\"id\":\"1965\"},\"view\":{\"id\":\"1968\"}},\"id\":\"1967\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"field\":\"cyl\",\"transform\":{\"id\":\"1932\"}},\"hatch_alpha\":{\"value\":0.2},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"white\"},\"top\":{\"field\":\"mpg_mean\"},\"x\":{\"field\":\"cyl\"}},\"id\":\"1966\",\"type\":\"VBar\"},{\"attributes\":{},\"id\":\"2044\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"2040\",\"type\":\"AllLabels\"},{\"attributes\":{\"axis\":{\"id\":\"1945\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1948\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1954\",\"type\":\"HelpTool\"}],\"root_ids\":[\"1933\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.3\"}};\n",
1394
+ " const render_items = [{\"docid\":\"594035d7-a16f-45f4-8f55-60dcbd98275f\",\"root_ids\":[\"1933\"],\"roots\":{\"1933\":\"20cccf9d-d397-4620-ae13-a7d84e8e9cfa\"}}];\n",
1395
+ " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
1396
+ " }\n",
1397
+ " if (root.Bokeh !== undefined) {\n",
1398
+ " embed_document(root);\n",
1399
+ " } else {\n",
1400
+ " let attempts = 0;\n",
1401
+ " const timer = setInterval(function(root) {\n",
1402
+ " if (root.Bokeh !== undefined) {\n",
1403
+ " clearInterval(timer);\n",
1404
+ " embed_document(root);\n",
1405
+ " } else {\n",
1406
+ " attempts++;\n",
1407
+ " if (attempts > 100) {\n",
1408
+ " clearInterval(timer);\n",
1409
+ " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n",
1410
+ " }\n",
1411
+ " }\n",
1412
+ " }, 10, root)\n",
1413
+ " }\n",
1414
+ "})(window);"
1415
+ ],
1416
+ "application/vnd.bokehjs_exec.v0+json": ""
1417
+ },
1418
+ "metadata": {
1419
+ "application/vnd.bokehjs_exec.v0+json": {
1420
+ "id": "1933"
1421
+ }
1422
+ },
1423
+ "output_type": "display_data"
1424
+ }
1425
+ ],
1426
+ "source": [
1427
+ "from bokeh.palettes import Spectral5\n",
1428
+ "\n",
1429
+ "cyl_cmap = factor_cmap('cyl', palette=Spectral5, factors=sorted(df.cyl.unique()))\n",
1430
+ "\n",
1431
+ "p = figure(plot_height=350, x_range=group)\n",
1432
+ "p.vbar(x='cyl', top='mpg_mean', width=1, line_color=\"white\", \n",
1433
+ " fill_color=cyl_cmap, source=source)\n",
1434
+ "\n",
1435
+ "p.xgrid.grid_line_color = None\n",
1436
+ "p.xaxis.axis_label = \"number of cylinders\"\n",
1437
+ "p.yaxis.axis_label = \"Mean MPG\"\n",
1438
+ "p.y_range.start = 0\n",
1439
+ "\n",
1440
+ "show(p)"
1441
+ ]
1442
+ },
1443
+ {
1444
+ "cell_type": "code",
1445
+ "execution_count": 16,
1446
+ "metadata": {},
1447
+ "outputs": [],
1448
+ "source": [
1449
+ "# Exercise: Use the same dataset to make a similar plot of mean horsepower (hp) by origin\n"
1450
+ ]
1451
+ },
1452
+ {
1453
+ "cell_type": "markdown",
1454
+ "metadata": {},
1455
+ "source": [
1456
+ "## Categorical Scatterplots\n",
1457
+ "\n",
1458
+ "So far we have seen Categorical data used together with various bar glyphs. But Bokeh can use categorical coordinates for most any glyphs. Let's create a scatter plot with categorical coordinates on one axis. The `commits` data set simply has a series datetimes of GitHub commit. Additional columns to express the day and hour of day for each commit have already been added."
1459
+ ]
1460
+ },
1461
+ {
1462
+ "cell_type": "code",
1463
+ "execution_count": 17,
1464
+ "metadata": {},
1465
+ "outputs": [
1466
+ {
1467
+ "data": {
1468
+ "text/html": [
1469
+ "<div>\n",
1470
+ "<style scoped>\n",
1471
+ " .dataframe tbody tr th:only-of-type {\n",
1472
+ " vertical-align: middle;\n",
1473
+ " }\n",
1474
+ "\n",
1475
+ " .dataframe tbody tr th {\n",
1476
+ " vertical-align: top;\n",
1477
+ " }\n",
1478
+ "\n",
1479
+ " .dataframe thead th {\n",
1480
+ " text-align: right;\n",
1481
+ " }\n",
1482
+ "</style>\n",
1483
+ "<table border=\"1\" class=\"dataframe\">\n",
1484
+ " <thead>\n",
1485
+ " <tr style=\"text-align: right;\">\n",
1486
+ " <th></th>\n",
1487
+ " <th>day</th>\n",
1488
+ " <th>time</th>\n",
1489
+ " </tr>\n",
1490
+ " <tr>\n",
1491
+ " <th>datetime</th>\n",
1492
+ " <th></th>\n",
1493
+ " <th></th>\n",
1494
+ " </tr>\n",
1495
+ " </thead>\n",
1496
+ " <tbody>\n",
1497
+ " <tr>\n",
1498
+ " <th>2017-04-22 15:11:58-05:00</th>\n",
1499
+ " <td>Sat</td>\n",
1500
+ " <td>15:11:58</td>\n",
1501
+ " </tr>\n",
1502
+ " <tr>\n",
1503
+ " <th>2017-04-21 14:20:57-05:00</th>\n",
1504
+ " <td>Fri</td>\n",
1505
+ " <td>14:20:57</td>\n",
1506
+ " </tr>\n",
1507
+ " <tr>\n",
1508
+ " <th>2017-04-20 14:35:08-05:00</th>\n",
1509
+ " <td>Thu</td>\n",
1510
+ " <td>14:35:08</td>\n",
1511
+ " </tr>\n",
1512
+ " <tr>\n",
1513
+ " <th>2017-04-20 10:34:29-05:00</th>\n",
1514
+ " <td>Thu</td>\n",
1515
+ " <td>10:34:29</td>\n",
1516
+ " </tr>\n",
1517
+ " <tr>\n",
1518
+ " <th>2017-04-20 09:17:23-05:00</th>\n",
1519
+ " <td>Thu</td>\n",
1520
+ " <td>09:17:23</td>\n",
1521
+ " </tr>\n",
1522
+ " </tbody>\n",
1523
+ "</table>\n",
1524
+ "</div>"
1525
+ ],
1526
+ "text/plain": [
1527
+ " day time\n",
1528
+ "datetime \n",
1529
+ "2017-04-22 15:11:58-05:00 Sat 15:11:58\n",
1530
+ "2017-04-21 14:20:57-05:00 Fri 14:20:57\n",
1531
+ "2017-04-20 14:35:08-05:00 Thu 14:35:08\n",
1532
+ "2017-04-20 10:34:29-05:00 Thu 10:34:29\n",
1533
+ "2017-04-20 09:17:23-05:00 Thu 09:17:23"
1534
+ ]
1535
+ },
1536
+ "execution_count": 17,
1537
+ "metadata": {},
1538
+ "output_type": "execute_result"
1539
+ }
1540
+ ],
1541
+ "source": [
1542
+ "from bokeh.sampledata.commits import data\n",
1543
+ "\n",
1544
+ "data.head()"
1545
+ ]
1546
+ },
1547
+ {
1548
+ "cell_type": "markdown",
1549
+ "metadata": {},
1550
+ "source": [
1551
+ "To create our scatter plot, we pass the list of categories as the range just as before\n",
1552
+ "\n",
1553
+ " p = figure(y_range=DAYS, ...)\n",
1554
+ " \n",
1555
+ "Then we can plot circles for each commit, with `\"time\"` driving the x-coordinate, and `\"day\"` driving the y-coordinate.\n",
1556
+ "\n",
1557
+ " p.circle(x='time', y='day', ...)\n",
1558
+ "\n",
1559
+ "To make the values more distinguishable, we can also add a `jitter` transform to the y-coordinate, which is shown in the complete example below."
1560
+ ]
1561
+ },
1562
+ {
1563
+ "cell_type": "code",
1564
+ "execution_count": 18,
1565
+ "metadata": {},
1566
+ "outputs": [
1567
+ {
1568
+ "data": {
1569
+ "text/html": [
1570
+ "\n",
1571
+ " <div class=\"bk-root\" id=\"27f693df-6151-4320-988b-9989c6012bd8\" data-root-id=\"2103\"></div>\n"
1572
+ ]
1573
+ },
1574
+ "metadata": {},
1575
+ "output_type": "display_data"
1576
+ },
1577
+ {
1578
+ "data": {
1579
+ "application/javascript": [
1580
+ "(function(root) {\n",
1581
+ " function embed_document(root) {\n",
1582
+ " const docs_json = {\"33657638-0484-425d-a373-72d98c9b108f\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"2114\"}],\"center\":[{\"id\":\"2117\"},{\"id\":\"2120\"}],\"height\":300,\"left\":[{\"id\":\"2118\"}],\"renderers\":[{\"id\":\"2140\"}],\"title\":{\"id\":\"2104\"},\"toolbar\":{\"id\":\"2128\"},\"width\":800,\"x_range\":{\"id\":\"2106\"},\"x_scale\":{\"id\":\"2110\"},\"y_range\":{\"id\":\"2108\"},\"y_scale\":{\"id\":\"2112\"}},\"id\":\"2103\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"factors\":[\"Sun\",\"Sat\",\"Fri\",\"Thu\",\"Wed\",\"Tue\",\"Mon\"]},\"id\":\"2108\",\"type\":\"FactorRange\"},{\"attributes\":{\"days\":[1,4,7,10,13,16,19,22,25,28]},\"id\":\"2235\",\"type\":\"DaysTicker\"},{\"attributes\":{\"range\":{\"id\":\"2108\"},\"width\":0.6},\"id\":\"2135\",\"type\":\"Jitter\"},{\"attributes\":{\"months\":[0,1,2,3,4,5,6,7,8,9,10,11]},\"id\":\"2238\",\"type\":\"MonthsTicker\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"2102\"},\"glyph\":{\"id\":\"2137\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"2139\"},\"nonselection_glyph\":{\"id\":\"2138\"},\"view\":{\"id\":\"2141\"}},\"id\":\"2140\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"days\":[1,8,15,22]},\"id\":\"2236\",\"type\":\"DaysTicker\"},{\"attributes\":{\"days\":[1,15]},\"id\":\"2237\",\"type\":\"DaysTicker\"},{\"attributes\":{\"source\":{\"id\":\"2102\"}},\"id\":\"2141\",\"type\":\"CDSView\"},{\"attributes\":{\"axis\":{\"id\":\"2114\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"2117\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"2121\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"2223\",\"type\":\"CategoricalTickFormatter\"},{\"attributes\":{\"range_padding\":0},\"id\":\"2106\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"2112\",\"type\":\"CategoricalScale\"},{\"attributes\":{\"months\":[0,2,4,6,8,10]},\"id\":\"2239\",\"type\":\"MonthsTicker\"},{\"attributes\":{},\"id\":\"2122\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"2119\",\"type\":\"CategoricalTicker\"},{\"attributes\":{\"days\":[\"%Hh\"]},\"id\":\"2142\",\"type\":\"DatetimeTickFormatter\"},{\"attributes\":{\"data\":{\"datetime\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[4916]},\"day\":[\"Sat\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Mon\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Wed\",\"Wed\",\"Wed\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sat\",\"Sat\",\"Sat\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Mon\",\"Fri\",\"Thu\",\"Sun\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sat\",\"Sat\",\"Wed\",\"Sat\",\"Sat\",\"Sat\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Tue\",\"Tue\",\"Mon\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Sun\",\"Sat\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Thu\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Fri\",\"Wed\",\"Wed\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Thu\",\"Wed\",\"Mon\",\"Fri\",\"Fri\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Mon\",\"Mon\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Fri\",\"Wed\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Sat\",\"Sat\",\"Wed\",\"Wed\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Wed\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Wed\",\"Tue\",\"Thu\",\"Thu\",\"Thu\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Sun\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Tue\",\"Tue\",\"Sat\",\"Sat\",\"Fri\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Sun\",\"Sun\",\"Sun\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Tue\",\"Tue\",\"Mon\",\"Sun\",\"Sun\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Tue\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Thu\",\"Thu\",\"Sun\",\"Sun\",\"Thu\",\"Sat\",\"Sat\",\"Sat\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Mon\",\"Sun\",\"Fri\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Mon\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Sun\",\"Sun\",\"Sun\",\"Thu\",\"Thu\",\"Thu\",\"Mon\",\"Mon\",\"Mon\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Sun\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Wed\",\"Tue\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Thu\",\"Tue\",\"Tue\",\"Tue\",\"Thu\",\"Thu\",\"Wed\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sun\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sun\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Sat\",\"Sat\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Thu\",\"Mon\",\"Sat\",\"Fri\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Sun\",\"Sun\",\"Tue\",\"Sat\",\"Sat\",\"Sat\",\"Mon\",\"Mon\",\"Mon\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Sat\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Wed\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Mon\",\"Mon\",\"Sat\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Tue\",\"Mon\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Mon\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Sat\",\"Sat\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Wed\",\"Tue\",\"Tue\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sun\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Mon\",\"Mon\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Sun\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Sat\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Sun\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Thu\",\"Thu\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Fri\",\"Fri\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Mon\",\"Fri\",\"Fri\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Sat\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Fri\",\"Fri\",\"Mon\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Mon\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Mon\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Thu\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Thu\",\"Thu\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Mon\",\"Fri\",\"Fri\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Wed\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Sun\",\"Wed\",\"Wed\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Sun\",\"Sun\",\"Sun\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sat\",\"Fri\",\"Thu\",\"Thu\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Fri\",\"Fri\",\"Wed\",\"Wed\",\"Wed\",\"Sat\",\"Mon\",\"Mon\",\"Mon\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sat\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sat\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Wed\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Sat\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sat\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Sat\",\"Sat\",\"Fri\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Wed\",\"Mon\",\"Mon\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sat\",\"Sat\",\"Sat\",\"Thu\",\"Thu\",\"Fri\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Tue\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Mon\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Wed\",\"Tue\",\"Thu\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Wed\",\"Tue\",\"Sun\",\"Thu\",\"Mon\",\"Mon\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Thu\",\"Sun\",\"Sun\",\"Fri\",\"Fri\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Fri\",\"Fri\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Sat\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sat\",\"Sat\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Thu\",\"Wed\",\"Wed\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Thu\",\"Thu\",\"Wed\",\"Wed\",\"Tue\",\"Tue\",\"Tue\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Mon\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sun\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Sat\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Tue\",\"Fri\",\"Fri\",\"Thu\",\"Thu\",\"Thu\",\"Thu\",\"Mon\",\"Thu\",\"Wed\",\"Sat\"],\"time\":[54718000.0,51657000.0,52508000.0,38069000.0,33443000.0,81337000.0,80774000.0,80483000.0,74654000.0,72943000.0,72156000.0,79027000.0,73356000.0,60243000.0,59674000.0,54660000.0,47185000.0,46270000.0,42411000.0,41561000.0,76103000.0,75239000.0,75174000.0,69770000.0,69154000.0,68707000.0,68471000.0,68401000.0,51978000.0,80814000.0,80793000.0,80773000.0,80732000.0,78572000.0,78548000.0,78529000.0,78475000.0,81847000.0,81826000.0,81807000.0,67463000.0,70189000.0,70135000.0,52275000.0,52236000.0,52215000.0,39012000.0,38954000.0,47169000.0,36607000.0,36364000.0,34425000.0,71255000.0,71190000.0,71169000.0,68205000.0,33937000.0,40530000.0,37944000.0,46956000.0,46932000.0,46913000.0,45436000.0,53499000.0,58975000.0,31108000.0,54117000.0,40470000.0,40454000.0,40440000.0,40174000.0,70402000.0,70400000.0,70400000.0,59587000.0,40434000.0,45152000.0,43238000.0,35155000.0,70317000.0,47126000.0,37226000.0,31811000.0,48541000.0,48163000.0,42499000.0,75967000.0,75955000.0,75944000.0,75914000.0,68122000.0,68109000.0,68097000.0,67287000.0,62152000.0,62138000.0,62125000.0,61982000.0,43111000.0,36084000.0,50209000.0,44569000.0,75183000.0,85934000.0,85925000.0,85918000.0,85849000.0,71895000.0,71886000.0,71879000.0,71834000.0,68865000.0,68857000.0,68851000.0,68811000.0,63582000.0,63575000.0,63567000.0,62720000.0,59907000.0,59897000.0,59890000.0,59849000.0,56496000.0,56482000.0,56475000.0,56442000.0,53682000.0,53675000.0,53667000.0,53615000.0,69040000.0,69018000.0,69011000.0,67813000.0,55512000.0,55397000.0,51445000.0,51425000.0,51418000.0,51311000.0,51088000.0,51077000.0,51069000.0,51009000.0,47045000.0,46565000.0,44348000.0,44335000.0,44328000.0,44042000.0,2219000.0,45646000.0,49042000.0,48758000.0,61312000.0,50302000.0,41519000.0,37043000.0,36998000.0,36988000.0,36976000.0,36792000.0,43712000.0,43692000.0,43678000.0,41292000.0,42722000.0,43898000.0,43882000.0,43871000.0,43354000.0,40720000.0,40706000.0,40694000.0,40624000.0,38166000.0,38153000.0,38142000.0,59743000.0,59727000.0,59715000.0,59599000.0,53830000.0,62242000.0,56549000.0,56480000.0,66262000.0,66247000.0,66234000.0,50611000.0,71529000.0,54458000.0,71051000.0,47096000.0,61719000.0,52324000.0,52291000.0,52279000.0,52220000.0,50887000.0,63378000.0,56446000.0,47421000.0,46206000.0,46183000.0,44168000.0,43447000.0,41524000.0,62394000.0,59276000.0,57466000.0,57441000.0,57429000.0,57355000.0,52299000.0,46974000.0,44299000.0,58061000.0,49650000.0,56890000.0,54241000.0,48833000.0,44169000.0,43954000.0,43755000.0,43626000.0,40980000.0,52584000.0,50328000.0,56425000.0,61735000.0,56482000.0,64856000.0,46846000.0,43053000.0,52398000.0,52384000.0,52372000.0,31011000.0,61055000.0,53864000.0,53349000.0,64316000.0,61674000.0,49820000.0,48360000.0,48343000.0,48332000.0,48191000.0,37944000.0,37924000.0,37913000.0,53255000.0,53200000.0,53188000.0,53130000.0,52881000.0,52790000.0,46106000.0,46087000.0,46077000.0,46018000.0,45234000.0,44818000.0,39772000.0,37709000.0,36720000.0,34548000.0,27248000.0,60404000.0,36766000.0,36758000.0,36748000.0,36740000.0,35590000.0,35530000.0,34591000.0,34583000.0,34574000.0,34483000.0,34474000.0,34465000.0,34458000.0,34415000.0,33875000.0,63320000.0,62046000.0,60834000.0,9838000.0,9828000.0,7804000.0,7669000.0,54510000.0,54500000.0,37664000.0,78546000.0,78531000.0,69191000.0,65977000.0,85661000.0,41194000.0,80371000.0,80363000.0,78471000.0,78441000.0,75704000.0,75678000.0,65355000.0,65347000.0,57952000.0,85175000.0,44065000.0,44057000.0,43875000.0,41688000.0,41679000.0,39363000.0,56073000.0,3036000.0,33045000.0,52440000.0,47646000.0,29693000.0,37841000.0,46460000.0,46451000.0,46439000.0,44107000.0,48050000.0,47995000.0,50303000.0,75933000.0,63719000.0,75605000.0,65922000.0,81052000.0,39749000.0,43021000.0,41867000.0,80122000.0,78253000.0,74103000.0,66842000.0,64330000.0,49777000.0,42703000.0,35216000.0,35138000.0,59684000.0,56137000.0,3048000.0,68177000.0,68175000.0,68166000.0,63236000.0,63189000.0,12312000.0,10394000.0,9505000.0,66733000.0,65064000.0,51603000.0,36555000.0,60879000.0,21296000.0,38199000.0,63259000.0,40172000.0,13349000.0,83312000.0,77880000.0,82713000.0,78949000.0,45989000.0,45818000.0,45645000.0,60725000.0,80506000.0,76895000.0,67858000.0,38452000.0,58409000.0,57004000.0,47065000.0,54975000.0,47841000.0,35726000.0,56391000.0,33847000.0,74645000.0,53603000.0,51167000.0,44153000.0,44009000.0,43367000.0,43230000.0,34923000.0,34314000.0,31239000.0,67619000.0,66255000.0,64804000.0,64388000.0,63956000.0,63274000.0,58477000.0,48924000.0,47080000.0,40584000.0,35438000.0,43447000.0,41030000.0,34406000.0,34087000.0,41042000.0,40843000.0,27238000.0,27209000.0,15266000.0,40183000.0,36134000.0,33930000.0,32806000.0,32745000.0,48823000.0,22760000.0,21892000.0,21362000.0,15461000.0,14748000.0,72231000.0,47260000.0,47057000.0,38537000.0,3538000.0,3510000.0,35856000.0,34993000.0,4099000.0,2628000.0,53131000.0,52951000.0,61288000.0,59220000.0,57272000.0,47644000.0,47616000.0,39007000.0,38727000.0,38668000.0,58901000.0,58865000.0,49027000.0,47792000.0,44508000.0,44413000.0,44362000.0,40529000.0,41496000.0,38855000.0,38673000.0,62405000.0,62118000.0,58796000.0,58394000.0,57792000.0,50799000.0,50675000.0,34543000.0,43072000.0,66350000.0,63434000.0,62384000.0,62050000.0,50761000.0,50376000.0,48901000.0,39786000.0,44410000.0,44363000.0,39206000.0,38694000.0,38222000.0,37157000.0,43054000.0,41805000.0,40888000.0,37323000.0,66415000.0,34477000.0,1838000.0,85934000.0,85921000.0,83216000.0,83153000.0,82938000.0,54598000.0,36217000.0,32123000.0,55861000.0,53483000.0,47641000.0,47130000.0,45003000.0,44887000.0,42209000.0,41667000.0,41571000.0,36708000.0,31440000.0,31353000.0,31297000.0,31258000.0,66314000.0,60499000.0,51780000.0,51715000.0,3460000.0,81186000.0,76709000.0,73832000.0,72821000.0,61085000.0,50936000.0,44614000.0,40423000.0,39652000.0,36003000.0,53692000.0,53624000.0,49706000.0,46885000.0,43548000.0,38702000.0,53457000.0,52214000.0,45036000.0,37010000.0,67001000.0,64599000.0,63686000.0,51408000.0,49282000.0,41272000.0,40543000.0,35077000.0,4117000.0,55337000.0,49427000.0,48025000.0,38599000.0,37870000.0,50284000.0,50247000.0,43525000.0,43323000.0,41666000.0,80501000.0,80139000.0,58979000.0,58950000.0,48243000.0,48203000.0,48981000.0,41459000.0,41391000.0,53745000.0,49100000.0,48919000.0,46771000.0,58283000.0,56327000.0,55385000.0,82410000.0,81496000.0,53667000.0,52708000.0,52082000.0,50373000.0,50178000.0,49918000.0,50831000.0,30256000.0,81778000.0,80306000.0,64220000.0,46478000.0,46108000.0,46029000.0,45743000.0,45387000.0,43038000.0,43016000.0,48572000.0,42364000.0,41907000.0,44991000.0,32623000.0,32580000.0,75754000.0,57633000.0,57571000.0,55589000.0,53498000.0,53456000.0,48807000.0,48703000.0,48691000.0,46688000.0,38982000.0,34809000.0,57481000.0,54179000.0,45478000.0,63642000.0,60305000.0,52393000.0,49036000.0,48763000.0,48094000.0,33458000.0,31651000.0,31215000.0,61436000.0,60199000.0,60038000.0,59499000.0,54540000.0,50934000.0,50916000.0,43843000.0,43763000.0,43446000.0,67724000.0,67058000.0,64768000.0,59475000.0,57605000.0,56436000.0,50065000.0,70146000.0,62579000.0,40061000.0,39798000.0,39448000.0,63541000.0,64473000.0,63566000.0,36695000.0,34807000.0,31150000.0,31121000.0,31089000.0,85362000.0,81807000.0,73737000.0,71432000.0,64942000.0,64881000.0,51437000.0,38957000.0,58465000.0,56642000.0,48599000.0,46911000.0,38051000.0,35973000.0,71493000.0,66933000.0,66902000.0,60316000.0,58316000.0,58241000.0,58219000.0,50584000.0,36547000.0,36386000.0,41438000.0,35408000.0,53273000.0,70255000.0,66510000.0,57390000.0,54071000.0,55280000.0,54087000.0,52895000.0,52715000.0,39505000.0,39443000.0,31217000.0,75574000.0,75559000.0,73796000.0,73785000.0,71970000.0,66377000.0,47416000.0,47414000.0,47410000.0,47392000.0,47388000.0,42520000.0,73118000.0,70415000.0,68384000.0,68365000.0,51873000.0,51488000.0,49451000.0,48830000.0,46415000.0,46212000.0,44799000.0,43413000.0,43287000.0,60013000.0,42457000.0,42235000.0,42035000.0,41842000.0,41689000.0,41364000.0,40986000.0,39544000.0,38832000.0,64378000.0,64178000.0,60304000.0,54989000.0,54935000.0,54736000.0,52707000.0,50900000.0,38579000.0,38492000.0,37984000.0,85504000.0,84163000.0,84015000.0,81760000.0,77211000.0,72969000.0,71348000.0,63218000.0,62803000.0,62497000.0,61534000.0,60940000.0,59142000.0,58599000.0,57410000.0,60591000.0,33966000.0,54492000.0,84654000.0,83015000.0,82293000.0,82250000.0,80383000.0,79252000.0,79143000.0,78952000.0,78533000.0,78321000.0,62402000.0,62386000.0,60862000.0,59992000.0,57658000.0,52798000.0,46140000.0,44250000.0,43193000.0,42949000.0,42790000.0,34698000.0,34387000.0,33908000.0,78597000.0,65884000.0,75128000.0,71538000.0,69146000.0,68819000.0,66476000.0,62218000.0,62128000.0,61921000.0,61859000.0,61790000.0,43361000.0,62991000.0,62962000.0,49055000.0,41134000.0,78480000.0,36296000.0,66450000.0,66426000.0,66317000.0,63116000.0,49777000.0,49456000.0,44457000.0,44366000.0,39261000.0,34537000.0,55526000.0,54315000.0,32183000.0,69172000.0,67843000.0,62502000.0,39943000.0,36610000.0,36299000.0,68209000.0,62135000.0,61580000.0,64471000.0,63562000.0,63541000.0,62985000.0,62963000.0,56566000.0,52610000.0,49243000.0,47613000.0,47563000.0,46711000.0,46015000.0,45665000.0,45313000.0,41507000.0,39195000.0,32698000.0,46835000.0,44019000.0,41790000.0,39940000.0,35810000.0,70722000.0,70019000.0,68590000.0,63064000.0,56571000.0,56447000.0,54146000.0,54070000.0,58831000.0,56590000.0,49002000.0,52639000.0,51260000.0,48750000.0,48641000.0,47734000.0,32943000.0,32491000.0,77188000.0,56382000.0,53520000.0,42009000.0,35259000.0,56946000.0,56894000.0,56864000.0,51397000.0,42380000.0,42350000.0,37827000.0,37103000.0,1626000.0,75650000.0,75619000.0,75614000.0,75567000.0,75546000.0,75519000.0,75451000.0,75419000.0,62423000.0,62417000.0,50773000.0,50755000.0,50466000.0,45938000.0,42675000.0,42668000.0,39469000.0,37599000.0,35633000.0,78146000.0,69550000.0,69523000.0,67000000.0,66759000.0,63006000.0,62539000.0,61030000.0,55089000.0,79469000.0,76905000.0,69481000.0,62320000.0,60675000.0,57670000.0,55774000.0,55421000.0,55368000.0,54588000.0,43801000.0,40912000.0,40172000.0,40123000.0,36526000.0,33593000.0,33568000.0,33521000.0,33414000.0,33156000.0,74254000.0,73609000.0,70177000.0,69473000.0,65778000.0,65634000.0,62989000.0,61188000.0,60697000.0,60642000.0,52365000.0,49480000.0,49340000.0,48204000.0,46854000.0,42969000.0,41213000.0,40447000.0,40357000.0,40103000.0,39675000.0,39484000.0,39305000.0,38641000.0,38625000.0,38582000.0,38067000.0,37641000.0,37447000.0,37335000.0,37315000.0,37095000.0,37066000.0,36941000.0,36889000.0,36852000.0,36574000.0,36543000.0,36463000.0,34803000.0,32726000.0,32639000.0,1456000.0,1262000.0,1245000.0,653000.0,85584000.0,83938000.0,81599000.0,79689000.0,79396000.0,79230000.0,61797000.0,61068000.0,60027000.0,58779000.0,56751000.0,54757000.0,51564000.0,44277000.0,42766000.0,42733000.0,42565000.0,41520000.0,38004000.0,34280000.0,34251000.0,31324000.0,31308000.0,30483000.0,81978000.0,81473000.0,81356000.0,79956000.0,75803000.0,72347000.0,64663000.0,59235000.0,57699000.0,57132000.0,47349000.0,35117000.0,34674000.0,34623000.0,31243000.0,80745000.0,79775000.0,78932000.0,78700000.0,76236000.0,74565000.0,62517000.0,62390000.0,60955000.0,60883000.0,60045000.0,54419000.0,43005000.0,39161000.0,39069000.0,36292000.0,36268000.0,36245000.0,33873000.0,33863000.0,5625000.0,80727000.0,80698000.0,80661000.0,80260000.0,71981000.0,71968000.0,71567000.0,69805000.0,69745000.0,69478000.0,68675000.0,68395000.0,68224000.0,67905000.0,67805000.0,62721000.0,62649000.0,58871000.0,58710000.0,58227000.0,44051000.0,79332000.0,79309000.0,76725000.0,76612000.0,76029000.0,37024000.0,29983000.0,30043000.0,56111000.0,30623000.0,32348000.0,29882000.0,66331000.0,56735000.0,56524000.0,56263000.0,31145000.0,36987000.0,54137000.0,53221000.0,51304000.0,51003000.0,50925000.0,43370000.0,67542000.0,65628000.0,63774000.0,54917000.0,63398000.0,40162000.0,40023000.0,40235000.0,37009000.0,62354000.0,65348000.0,61807000.0,60051000.0,59381000.0,58626000.0,58382000.0,58297000.0,58129000.0,58034000.0,48235000.0,48179000.0,46169000.0,40550000.0,40533000.0,34668000.0,34646000.0,82399000.0,82066000.0,78591000.0,74304000.0,74298000.0,74204000.0,74151000.0,74132000.0,74110000.0,74091000.0,73425000.0,73336000.0,72955000.0,72756000.0,71539000.0,71207000.0,70896000.0,70779000.0,70270000.0,70157000.0,70127000.0,70023000.0,69630000.0,69300000.0,68689000.0,68019000.0,67924000.0,67598000.0,67381000.0,67035000.0,66202000.0,66109000.0,65606000.0,65557000.0,65529000.0,65235000.0,65085000.0,64528000.0,64415000.0,64268000.0,64177000.0,64063000.0,63823000.0,63518000.0,63402000.0,63395000.0,63300000.0,63127000.0,62813000.0,62670000.0,62181000.0,61980000.0,60258000.0,60122000.0,59627000.0,58725000.0,58624000.0,58520000.0,57980000.0,57558000.0,57471000.0,57426000.0,57387000.0,56283000.0,54360000.0,53684000.0,53372000.0,52650000.0,50303000.0,50183000.0,50166000.0,50104000.0,46274000.0,40235000.0,40162000.0,40023000.0,74850000.0,74559000.0,74545000.0,68860000.0,56380000.0,54557000.0,54335000.0,54311000.0,48824000.0,46204000.0,44930000.0,83471000.0,63219000.0,62156000.0,61845000.0,61188000.0,60370000.0,58748000.0,58013000.0,57705000.0,57690000.0,57252000.0,52513000.0,52360000.0,52280000.0,52224000.0,52166000.0,51053000.0,50848000.0,1664000.0,82507000.0,82413000.0,73496000.0,73355000.0,73333000.0,70149000.0,69647000.0,69540000.0,69491000.0,66395000.0,66354000.0,66336000.0,66282000.0,64636000.0,63380000.0,63270000.0,63160000.0,62709000.0,61853000.0,59626000.0,59152000.0,59144000.0,59133000.0,58143000.0,56444000.0,56432000.0,55414000.0,54727000.0,54248000.0,53156000.0,52881000.0,52277000.0,51032000.0,50877000.0,50492000.0,49047000.0,48469000.0,48257000.0,47629000.0,52750000.0,52734000.0,51375000.0,50561000.0,48458000.0,35521000.0,35294000.0,34483000.0,34407000.0,34335000.0,33207000.0,32845000.0,78033000.0,65236000.0,65190000.0,64798000.0,43056000.0,43038000.0,43026000.0,74091000.0,58215000.0,58000000.0,50740000.0,34569000.0,34230000.0,50905000.0,50447000.0,50249000.0,42024000.0,41933000.0,39483000.0,37185000.0,36402000.0,34967000.0,34694000.0,33989000.0,33814000.0,33604000.0,85040000.0,55743000.0,47096000.0,45266000.0,40874000.0,40070000.0,39406000.0,37564000.0,32709000.0,33195000.0,32811000.0,32683000.0,32664000.0,31219000.0,30791000.0,78739000.0,74202000.0,73551000.0,72010000.0,71595000.0,64746000.0,61483000.0,61226000.0,80293000.0,80242000.0,55851000.0,41152000.0,72135000.0,70482000.0,54614000.0,54261000.0,54210000.0,69066000.0,62106000.0,61920000.0,61456000.0,61434000.0,61387000.0,61340000.0,61310000.0,35433000.0,35392000.0,60046000.0,59319000.0,58782000.0,55561000.0,55514000.0,53587000.0,45509000.0,44572000.0,43846000.0,38772000.0,38683000.0,38372000.0,34996000.0,34861000.0,34751000.0,72313000.0,72156000.0,70425000.0,70417000.0,70409000.0,70402000.0,60296000.0,60193000.0,58089000.0,56907000.0,56894000.0,56881000.0,55636000.0,55594000.0,49708000.0,48929000.0,48925000.0,44313000.0,43558000.0,43350000.0,28283000.0,28257000.0,28183000.0,62998000.0,56450000.0,53039000.0,52216000.0,52116000.0,47057000.0,46238000.0,46115000.0,39001000.0,38974000.0,37546000.0,35856000.0,35779000.0,23962000.0,21516000.0,68476000.0,61136000.0,56309000.0,38420000.0,79754000.0,67698000.0,65292000.0,43106000.0,42062000.0,40951000.0,36310000.0,1451000.0,84323000.0,82362000.0,59279000.0,59260000.0,59235000.0,54814000.0,54770000.0,54297000.0,51535000.0,51479000.0,51143000.0,47415000.0,39472000.0,69349000.0,68923000.0,66212000.0,66039000.0,65914000.0,61325000.0,61301000.0,61055000.0,58355000.0,54670000.0,39693000.0,83879000.0,80221000.0,78185000.0,77892000.0,77851000.0,66337000.0,62072000.0,59746000.0,53063000.0,52953000.0,52573000.0,51820000.0,51805000.0,50894000.0,38338000.0,38211000.0,38116000.0,37823000.0,37663000.0,37577000.0,34142000.0,34127000.0,34038000.0,33935000.0,76572000.0,62996000.0,58614000.0,57797000.0,57566000.0,56880000.0,56546000.0,56525000.0,55215000.0,54764000.0,54547000.0,54506000.0,80079000.0,75988000.0,75534000.0,75186000.0,75171000.0,73936000.0,73864000.0,73505000.0,73128000.0,72372000.0,71724000.0,65245000.0,64610000.0,64519000.0,64406000.0,58443000.0,53031000.0,63665000.0,39648000.0,39545000.0,34276000.0,42453000.0,77756000.0,55106000.0,54356000.0,49890000.0,46122000.0,32160000.0,32114000.0,75995000.0,67265000.0,65916000.0,63345000.0,63135000.0,60580000.0,56203000.0,56014000.0,42091000.0,41627000.0,34357000.0,82151000.0,75136000.0,74693000.0,29586000.0,54924000.0,54030000.0,48968000.0,48866000.0,48603000.0,69892000.0,29698000.0,29205000.0,38278000.0,38076000.0,38009000.0,36355000.0,36143000.0,74007000.0,73571000.0,72441000.0,79616000.0,79524000.0,79471000.0,79433000.0,52942000.0,52714000.0,52305000.0,51883000.0,22707000.0,79347000.0,79231000.0,56735000.0,56626000.0,56069000.0,46967000.0,45729000.0,42597000.0,42237000.0,42148000.0,42112000.0,42010000.0,41947000.0,39606000.0,39467000.0,38931000.0,32984000.0,32949000.0,32921000.0,30965000.0,30809000.0,73767000.0,73748000.0,73664000.0,64933000.0,64917000.0,64885000.0,64800000.0,62743000.0,65825000.0,42466000.0,42453000.0,42450000.0,42399000.0,38935000.0,33929000.0,77339000.0,52896000.0,47264000.0,46204000.0,44368000.0,44361000.0,70833000.0,81986000.0,81922000.0,81909000.0,71810000.0,71704000.0,71358000.0,70369000.0,70173000.0,69795000.0,69681000.0,58735000.0,53158000.0,74845000.0,84769000.0,44666000.0,76156000.0,53548000.0,42763000.0,37445000.0,66513000.0,66799000.0,29431000.0,57385000.0,57466000.0,57448000.0,64898000.0,43645000.0,40850000.0,53141000.0,51489000.0,46595000.0,40185000.0,39710000.0,76221000.0,75794000.0,75054000.0,52535000.0,41700000.0,41640000.0,41556000.0,75023000.0,74110000.0,60349000.0,60132000.0,60117000.0,45237000.0,45144000.0,34576000.0,51417000.0,76882000.0,61403000.0,60513000.0,60445000.0,69411000.0,68982000.0,68962000.0,68935000.0,66894000.0,65906000.0,36042000.0,34848000.0,32759000.0,50167000.0,66579000.0,84240000.0,84183000.0,58745000.0,47595000.0,33124000.0,32611000.0,26014000.0,25507000.0,25435000.0,25416000.0,68835000.0,68338000.0,67433000.0,65494000.0,65064000.0,65001000.0,64414000.0,58659000.0,47205000.0,40796000.0,36386000.0,36368000.0,67306000.0,57702000.0,56284000.0,55117000.0,55049000.0,54713000.0,53674000.0,52735000.0,52443000.0,52347000.0,51083000.0,50479000.0,50452000.0,50346000.0,49847000.0,49527000.0,49363000.0,49233000.0,49018000.0,48431000.0,46519000.0,46506000.0,46488000.0,46461000.0,58067000.0,43360000.0,43247000.0,38556000.0,28887000.0,58580000.0,57355000.0,64525000.0,81718000.0,77707000.0,76039000.0,57798000.0,47075000.0,46625000.0,40736000.0,40602000.0,39602000.0,39509000.0,52618000.0,76203000.0,53724000.0,48095000.0,46267000.0,59510000.0,55925000.0,50273000.0,50100000.0,50012000.0,37995000.0,69249000.0,76804000.0,76569000.0,76561000.0,75790000.0,75523000.0,60654000.0,60409000.0,32706000.0,49570000.0,47845000.0,1018000.0,68415000.0,68097000.0,67901000.0,67842000.0,67686000.0,67231000.0,67203000.0,67182000.0,53295000.0,52882000.0,51224000.0,56782000.0,64002000.0,63982000.0,63951000.0,43342000.0,42797000.0,46291000.0,46139000.0,43724000.0,42879000.0,42414000.0,42934000.0,28953000.0,43683000.0,43577000.0,43378000.0,44727000.0,39358000.0,61384000.0,59580000.0,49860000.0,38910000.0,74879000.0,73013000.0,72767000.0,70901000.0,69737000.0,58491000.0,39774000.0,36390000.0,34227000.0,34141000.0,31202000.0,56320000.0,59405000.0,49217000.0,49073000.0,48714000.0,45153000.0,42208000.0,42139000.0,41846000.0,40043000.0,38474000.0,38394000.0,37683000.0,37615000.0,68834000.0,68772000.0,39008000.0,38967000.0,38938000.0,60630000.0,60532000.0,59928000.0,57568000.0,80394000.0,74312000.0,73534000.0,46392000.0,38725000.0,36497000.0,74341000.0,66550000.0,63874000.0,62789000.0,56989000.0,56819000.0,53298000.0,40612000.0,63002000.0,38672000.0,91000.0,81857000.0,54299000.0,44503000.0,32780000.0,28393000.0,84454000.0,84161000.0,84049000.0,80356000.0,80351000.0,80229000.0,79394000.0,75173000.0,75115000.0,74656000.0,74532000.0,63370000.0,63052000.0,59150000.0,57851000.0,48626000.0,34127000.0,61487000.0,58599000.0,58091000.0,57006000.0,56976000.0,56503000.0,54219000.0,36671000.0,36649000.0,36625000.0,56410000.0,2651000.0,86305000.0,84521000.0,82929000.0,77856000.0,77726000.0,70972000.0,70539000.0,69762000.0,67841000.0,66313000.0,64791000.0,60784000.0,60744000.0,60605000.0,60592000.0,50552000.0,42397000.0,59083000.0,51528000.0,50906000.0,43307000.0,41841000.0,41600000.0,41571000.0,71049000.0,46470000.0,34913000.0,34319000.0,33545000.0,32433000.0,63991000.0,63853000.0,63118000.0,62976000.0,62757000.0,43762000.0,43720000.0,56442000.0,63776000.0,60663000.0,60248000.0,34677000.0,32916000.0,70351000.0,70081000.0,69477000.0,65716000.0,64279000.0,53365000.0,28478000.0,22522000.0,22392000.0,21025000.0,19873000.0,19223000.0,19143000.0,81970000.0,73359000.0,70913000.0,70772000.0,70653000.0,68861000.0,68837000.0,68795000.0,66743000.0,66147000.0,51698000.0,49128000.0,34600000.0,71232000.0,38286000.0,38199000.0,38163000.0,27210000.0,27189000.0,27155000.0,32176000.0,31084000.0,30443000.0,30354000.0,29088000.0,28808000.0,28324000.0,22433000.0,59708000.0,68833000.0,64106000.0,54481000.0,54464000.0,54110000.0,49080000.0,43791000.0,28384000.0,42418000.0,42214000.0,83025000.0,79447000.0,79347000.0,79320000.0,79218000.0,78163000.0,49993000.0,42412000.0,42378000.0,28179000.0,53748000.0,51500000.0,51479000.0,42661000.0,41324000.0,38717000.0,38663000.0,33938000.0,77640000.0,77600000.0,77551000.0,57694000.0,48291000.0,36853000.0,65899000.0,64056000.0,61760000.0,61461000.0,60881000.0,60394000.0,58792000.0,58691000.0,58344000.0,55933000.0,55921000.0,44440000.0,44258000.0,72682000.0,53196000.0,51286000.0,42898000.0,39821000.0,62687000.0,57587000.0,50164000.0,48044000.0,59411000.0,46692000.0,56460000.0,55219000.0,55138000.0,52815000.0,49965000.0,49449000.0,37829000.0,35982000.0,34291000.0,66845000.0,66558000.0,65250000.0,64637000.0,59083000.0,50079000.0,49986000.0,49441000.0,49243000.0,43898000.0,41749000.0,39683000.0,81494000.0,79502000.0,75944000.0,74285000.0,72869000.0,71627000.0,69631000.0,65052000.0,62793000.0,60429000.0,60293000.0,34831000.0,32672000.0,32599000.0,32577000.0,32539000.0,32441000.0,32386000.0,54238000.0,60458000.0,39066000.0,38109000.0,38055000.0,36475000.0,35263000.0,34265000.0,44455000.0,44099000.0,38390000.0,38306000.0,47541000.0,44255000.0,30340000.0,74235000.0,51196000.0,46750000.0,38833000.0,59782000.0,59745000.0,52729000.0,52710000.0,49397000.0,41225000.0,37977000.0,84743000.0,84439000.0,83334000.0,79600000.0,79566000.0,77448000.0,77436000.0,77417000.0,77389000.0,77363000.0,76332000.0,73674000.0,59695000.0,58902000.0,44234000.0,42585000.0,42577000.0,41770000.0,41760000.0,41682000.0,40732000.0,33878000.0,33873000.0,32610000.0,32560000.0,32478000.0,32441000.0,75175000.0,74001000.0,70948000.0,67680000.0,53219000.0,50782000.0,44605000.0,66363000.0,66337000.0,63701000.0,63666000.0,63633000.0,45359000.0,45346000.0,44898000.0,30703000.0,29728000.0,63982000.0,63336000.0,62054000.0,61956000.0,56496000.0,55561000.0,52167000.0,41550000.0,37626000.0,36995000.0,56439000.0,57088000.0,57069000.0,56999000.0,56974000.0,38399000.0,38109000.0,35993000.0,35601000.0,33356000.0,76016000.0,72430000.0,50542000.0,50533000.0,30747000.0,30694000.0,49251000.0,47992000.0,47961000.0,47827000.0,74293000.0,37669000.0,32009000.0,34589000.0,34056000.0,32312000.0,30741000.0,49633000.0,18718000.0,52753000.0,52079000.0,51842000.0,32841000.0,32634000.0,32580000.0,21193000.0,18667000.0,49992000.0,49975000.0,49653000.0,45600000.0,40382000.0,32416000.0,30558000.0,28305000.0,24933000.0,24731000.0,24689000.0,70621000.0,70466000.0,70456000.0,67971000.0,67503000.0,63884000.0,63628000.0,63503000.0,62447000.0,58211000.0,57176000.0,51741000.0,36115000.0,32289000.0,66685000.0,64901000.0,53381000.0,52599000.0,50892000.0,45883000.0,45857000.0,42057000.0,40967000.0,40488000.0,38876000.0,38829000.0,37441000.0,37388000.0,33278000.0,63374000.0,55120000.0,35783000.0,34607000.0,32420000.0,84813000.0,84795000.0,84778000.0,80190000.0,80119000.0,79761000.0,73748000.0,71111000.0,68441000.0,67624000.0,67616000.0,61509000.0,61499000.0,48951000.0,12157000.0,11256000.0,11209000.0,8290000.0,8179000.0,8169000.0,8154000.0,78420000.0,77050000.0,76955000.0,76946000.0,76544000.0,76184000.0,73716000.0,69129000.0,66189000.0,64541000.0,59571000.0,59566000.0,57504000.0,57496000.0,55744000.0,50910000.0,50904000.0,44300000.0,43904000.0,43825000.0,43778000.0,32087000.0,31630000.0,30315000.0,24792000.0,24756000.0,74351000.0,72633000.0,49727000.0,47297000.0,35519000.0,69140000.0,42018000.0,40641000.0,40332000.0,38799000.0,60962000.0,57870000.0,54962000.0,54770000.0,49468000.0,48266000.0,45789000.0,45674000.0,39307000.0,34498000.0,31883000.0,31230000.0,78023000.0,75050000.0,71047000.0,70317000.0,62188000.0,53632000.0,50970000.0,51766000.0,35411000.0,41166000.0,41119000.0,60294000.0,59330000.0,55917000.0,50762000.0,50599000.0,49631000.0,35146000.0,33483000.0,51765000.0,51682000.0,29641000.0,62681000.0,57639000.0,40482000.0,58231000.0,57783000.0,45511000.0,34301000.0,34133000.0,34070000.0,34025000.0,33952000.0,33902000.0,33865000.0,33832000.0,33721000.0,46329000.0,54811000.0,53871000.0,42574000.0,42303000.0,42111000.0,37396000.0,34495000.0,72968000.0,70083000.0,69377000.0,61453000.0,61343000.0,60523000.0,60083000.0,59625000.0,58718000.0,54322000.0,53329000.0,53222000.0,51694000.0,51306000.0,44858000.0,35055000.0,34990000.0,34971000.0,60607000.0,42617000.0,36465000.0,36431000.0,34245000.0,74795000.0,50759000.0,49947000.0,49883000.0,49847000.0,49610000.0,48642000.0,48370000.0,48341000.0,46083000.0,46040000.0,79211000.0,54429000.0,53296000.0,51206000.0,48806000.0,48671000.0,43116000.0,42961000.0,35836000.0,35799000.0,59135000.0,58701000.0,57573000.0,55474000.0,55411000.0,54097000.0,51491000.0,43775000.0,40353000.0,38043000.0,37303000.0,33238000.0,33231000.0,37930000.0,72514000.0,72121000.0,58177000.0,43423000.0,43066000.0,37249000.0,37139000.0,56503000.0,56476000.0,59062000.0,57431000.0,57402000.0,33052000.0,32554000.0,35244000.0,34416000.0,34140000.0,32474000.0,32038000.0,6365000.0,66239000.0,56635000.0,56326000.0,24893000.0,72137000.0,54898000.0,51230000.0,46219000.0,46137000.0,43438000.0,43373000.0,42150000.0,42075000.0,41816000.0,41785000.0,41733000.0,41175000.0,40566000.0,40478000.0,39741000.0,39588000.0,39034000.0,37972000.0,37703000.0,37301000.0,32789000.0,32397000.0,29047000.0,27164000.0,26436000.0,24662000.0,85300000.0,69903000.0,69170000.0,68305000.0,67284000.0,64564000.0,57850000.0,54369000.0,54954000.0,49975000.0,49826000.0,64147000.0,45938000.0,33433000.0,72620000.0,61787000.0,60751000.0,59033000.0,54081000.0,52426000.0,51191000.0,49728000.0,49600000.0,34775000.0,83726000.0,82418000.0,77821000.0,77437000.0,77250000.0,77184000.0,77061000.0,76893000.0,65445000.0,65314000.0,65119000.0,59739000.0,51799000.0,75208000.0,49978000.0,49770000.0,44376000.0,44307000.0,43915000.0,43813000.0,40736000.0,58136000.0,52881000.0,42343000.0,42134000.0,41726000.0,40518000.0,40071000.0,39930000.0,39727000.0,37497000.0,36698000.0,33523000.0,32707000.0,52045000.0,51611000.0,47282000.0,47019000.0,44344000.0,44268000.0,43869000.0,43556000.0,41219000.0,37434000.0,81902000.0,81334000.0,80659000.0,80124000.0,77669000.0,77445000.0,77377000.0,76637000.0,54356000.0,47904000.0,47245000.0,45745000.0,45254000.0,56499000.0,56434000.0,56001000.0,51266000.0,48664000.0,47510000.0,44500000.0,35644000.0,31778000.0,28404000.0,78573000.0,40548000.0,36600000.0,62423000.0,35464000.0,35448000.0,35413000.0,29712000.0,40448000.0,48439000.0,42897000.0,74955000.0,74844000.0,69762000.0,59913000.0,40952000.0,37512000.0,36955000.0,67002000.0,58450000.0,58432000.0,57035000.0,44693000.0,37489000.0,35533000.0,33420000.0,57183000.0,57134000.0,43851000.0,42457000.0,36139000.0,35295000.0,34739000.0,33298000.0,32882000.0,83393000.0,75721000.0,29996000.0,80242000.0,79780000.0,79763000.0,79732000.0,79687000.0,50577000.0,50501000.0,48528000.0,41833000.0,36524000.0,36216000.0,31774000.0,85529000.0,75260000.0,75187000.0,74934000.0,74934000.0,69902000.0,69871000.0,67905000.0,57252000.0,52229000.0,52194000.0,83203000.0,82700000.0,82634000.0,62684000.0,31330000.0,30851000.0,71822000.0,68103000.0,66493000.0,65227000.0,56252000.0,56009000.0,55333000.0,54901000.0,54324000.0,53588000.0,53203000.0,52796000.0,52776000.0,51985000.0,39960000.0,35791000.0,32086000.0,31037000.0,81182000.0,51462000.0,51309000.0,82360000.0,70073000.0,64598000.0,63916000.0,63049000.0,62119000.0,61760000.0,77780000.0,52808000.0,79136000.0,79018000.0,78979000.0,78965000.0,76993000.0,61036000.0,56508000.0,55013000.0,35686000.0,28774000.0,79755000.0,76170000.0,76149000.0,75776000.0,65068000.0,62048000.0,48963000.0,43501000.0,35371000.0,34442000.0,31904000.0,53114000.0,45999000.0,45515000.0,45299000.0,43895000.0,41164000.0,39119000.0,38194000.0,68256000.0,63781000.0,61466000.0,59879000.0,59830000.0,55275000.0,52753000.0,51196000.0,50494000.0,48581000.0,42418000.0,40523000.0,78622000.0,61178000.0,61080000.0,54290000.0,52659000.0,52216000.0,51415000.0,51242000.0,50185000.0,47832000.0,39244000.0,37492000.0,53841000.0,55322000.0,55300000.0,51637000.0,51596000.0,51543000.0,76241000.0,72855000.0,63937000.0,63729000.0,41202000.0,40025000.0,39503000.0,35075000.0,34383000.0,32730000.0,31587000.0,39848000.0,39114000.0,36421000.0,36375000.0,36325000.0,36291000.0,36266000.0,78966000.0,78945000.0,65875000.0,65297000.0,65249000.0,64800000.0,64722000.0,74419000.0,71919000.0,71668000.0,70117000.0,69951000.0,69925000.0,69899000.0,69861000.0,56141000.0,55075000.0,42347000.0,48668000.0,47907000.0,29416000.0,29334000.0,73235000.0,72785000.0,72633000.0,72598000.0,72540000.0,72371000.0,72362000.0,69170000.0,68735000.0,67532000.0,65984000.0,65004000.0,64980000.0,83006000.0,36552000.0,35876000.0,31954000.0,52461000.0,46436000.0,42040000.0,40292000.0,47401000.0,47317000.0,60682000.0,58769000.0,58616000.0,57992000.0,56244000.0,77323000.0,51176000.0,41361000.0,39728000.0,37132000.0,36170000.0,58482000.0,76998000.0,72750000.0,55263000.0,49994000.0,49534000.0,49163000.0,41052000.0,36947000.0,36585000.0,35089000.0,33793000.0,33665000.0,32252000.0,31991000.0,51297000.0,50415000.0,40728000.0,46258000.0,46194000.0,46052000.0,46028000.0,43732000.0,43703000.0,40029000.0,39920000.0,34985000.0,61268000.0,61228000.0,61077000.0,57190000.0,57160000.0,57117000.0,53377000.0,52964000.0,52378000.0,51441000.0,51428000.0,50030000.0,49578000.0,49549000.0,33378000.0,33169000.0,52994000.0,49404000.0,46150000.0,56281000.0,36674000.0,36641000.0,46946000.0,45294000.0,44192000.0,33011000.0,26219000.0,25851000.0,74628000.0,72221000.0,67924000.0,67529000.0,73663000.0,72020000.0,57182000.0,57150000.0,44926000.0,41204000.0,40980000.0,36275000.0,41977000.0,41931000.0,64992000.0,59714000.0,55678000.0,74103000.0,58517000.0,58485000.0,52692000.0,52663000.0,49804000.0,49747000.0,48634000.0,40757000.0,33738000.0,15785000.0,58194000.0,51569000.0,51551000.0,51286000.0,41104000.0,41061000.0,55415000.0,50304000.0,48993000.0,48901000.0,48875000.0,47949000.0,37876000.0,37837000.0,36444000.0,36388000.0,62547000.0,62535000.0,81818000.0,80262000.0,80180000.0,80002000.0,71794000.0,50777000.0,40796000.0,40165000.0,49758000.0,38162000.0,38126000.0,36647000.0,6515000.0,65558000.0,65499000.0,46341000.0,46324000.0,33974000.0,78197000.0,59427000.0,43521000.0,66222000.0,64677000.0,64638000.0,60602000.0,46664000.0,46595000.0,46403000.0,31743000.0,41355000.0,55236000.0,54645000.0,54529000.0,48142000.0,47462000.0,47430000.0,44974000.0,38701000.0,57439000.0,56015000.0,52333000.0,51967000.0,38813000.0,37125000.0,34767000.0,4313000.0,51378000.0,42398000.0,42373000.0,74472000.0,73109000.0,72311000.0,72248000.0,58730000.0,54022000.0,52666000.0,52582000.0,40178000.0,35271000.0,34460000.0,27378000.0,26178000.0,76851000.0,73655000.0,69820000.0,34591000.0,73065000.0,72235000.0,72224000.0,72158000.0,72039000.0,71701000.0,55156000.0,54896000.0,53755000.0,43135000.0,35883000.0,33990000.0,32216000.0,50431000.0,47628000.0,47352000.0,36087000.0,61244000.0,61224000.0,60872000.0,57122000.0,48608000.0,47352000.0,46346000.0,44905000.0,43893000.0,42422000.0,42362000.0,33284000.0,33018000.0,53472000.0,76955000.0,74495000.0,46906000.0,31989000.0,31021000.0,30921000.0,55106000.0,45044000.0,46786000.0,46755000.0,35948000.0,79096000.0,76609000.0,74826000.0,74041000.0,56053000.0,54852000.0,35471000.0,83008000.0,81712000.0,80965000.0,79791000.0,79664000.0,79582000.0,50216000.0,30827000.0,30817000.0,41547000.0,41528000.0,27785000.0,26607000.0,26538000.0,26502000.0,54767000.0,50505000.0,33170000.0,72957000.0,72554000.0,55986000.0,51798000.0,27791000.0,24971000.0,76325000.0,75359000.0,63022000.0,61542000.0,54312000.0,83358000.0,77425000.0,73904000.0,73862000.0,73731000.0,73701000.0,53046000.0,53008000.0,35604000.0,35546000.0,33737000.0,61171000.0,43105000.0,42457000.0,36571000.0,27052000.0,77184000.0,75410000.0,53324000.0,49999000.0,49956000.0,49858000.0,49740000.0,46393000.0,52986000.0,52717000.0,52684000.0,50821000.0,41806000.0,56417000.0,35110000.0,29089000.0,29083000.0,28983000.0,28915000.0,80946000.0,76894000.0,53933000.0,50563000.0,30091000.0,30073000.0,30006000.0,79370000.0,79333000.0,78228000.0,78072000.0,59475000.0,44837000.0,44154000.0,44140000.0,41108000.0,40901000.0,40564000.0,40239000.0,40202000.0,38996000.0,38236000.0,38217000.0,36543000.0,35448000.0,33738000.0,33654000.0,33639000.0,33040000.0,80018000.0,77385000.0,77110000.0,67746000.0,65772000.0,65460000.0,59596000.0,57676000.0,55952000.0,54536000.0,53854000.0,52279000.0,50362000.0,48984000.0,47316000.0,47261000.0,47249000.0,46783000.0,44098000.0,43860000.0,43860000.0,43090000.0,43060000.0,41515000.0,41336000.0,39696000.0,39043000.0,36651000.0,34136000.0,32514000.0,31616000.0,29336000.0,72469000.0,68172000.0,63092000.0,63059000.0,45220000.0,45053000.0,41033000.0,41016000.0,48865000.0,30256000.0,28490000.0,24722000.0,84095000.0,73328000.0,64797000.0,57692000.0,54070000.0,54064000.0,51460000.0,51447000.0,47926000.0,41922000.0,35666000.0,33675000.0,33439000.0,32148000.0,31929000.0,30449000.0,76058000.0,75931000.0,73842000.0,70906000.0,62125000.0,61390000.0,58179000.0,44738000.0,38097000.0,78565000.0,76366000.0,71203000.0,71034000.0,69517000.0,69394000.0,60956000.0,59215000.0,55713000.0,55704000.0,51066000.0,46887000.0,46040000.0,45927000.0,39888000.0,34544000.0,33775000.0,26928000.0,26909000.0,26150000.0,26110000.0,78647000.0,63532000.0,63490000.0,63316000.0,62136000.0,61700000.0,60172000.0,58904000.0,46542000.0,35545000.0,34616000.0,34058000.0,33567000.0,59302000.0,45580000.0,37612000.0,82940000.0,82896000.0,67139000.0,67117000.0,65093000.0,62326000.0,59943000.0,59369000.0,59305000.0,45121000.0,45104000.0,43838000.0,80381000.0,80365000.0,75710000.0,49416000.0,43247000.0,41685000.0,40995000.0,40742000.0,39606000.0,37452000.0,58599000.0,54556000.0,53750000.0,50523000.0,50397000.0,50387000.0,45808000.0,35729000.0,83632000.0,83597000.0,77317000.0,77213000.0,76762000.0,76545000.0,76091000.0,67659000.0,62009000.0,58187000.0,56609000.0,54493000.0,54097000.0,53988000.0,47446000.0,42727000.0,84305000.0,83287000.0,82974000.0,63108000.0,62351000.0,61548000.0,60459000.0,57330000.0,51982000.0,47978000.0,47423000.0,42293000.0,41824000.0,35654000.0,35209000.0,34146000.0,32354000.0,24055000.0,80984000.0,79634000.0,78805000.0,76539000.0,76184000.0,70020000.0,54568000.0,54182000.0,50880000.0,50695000.0,49311000.0,45610000.0,43739000.0,42055000.0,40395000.0,40355000.0,40332000.0,39561000.0,39561000.0,37540000.0,63196000.0,58905000.0,57902000.0,55452000.0,45329000.0,58946000.0,58669000.0,58643000.0,56368000.0,4984000.0,4969000.0,3510000.0,2807000.0,79356000.0,76485000.0,76336000.0,68855000.0,68827000.0,68799000.0,68714000.0,59604000.0,44906000.0,41551000.0,36253000.0,36200000.0,58507000.0,57375000.0,49336000.0,76409000.0,76255000.0,58902000.0,55372000.0,54549000.0,54512000.0,54492000.0,49386000.0,49117000.0,48608000.0,46294000.0,46072000.0,42514000.0,34150000.0,33912000.0,40367000.0,38752000.0,37674000.0,37500000.0,36267000.0,34099000.0,34068000.0,32750000.0,81705000.0,60098000.0,56894000.0,56419000.0,56366000.0,53226000.0,52530000.0,45394000.0,39516000.0,76860000.0,76829000.0,62184000.0,62009000.0,58591000.0,57855000.0,40891000.0,739000.0,85729000.0,85643000.0,85469000.0,84044000.0,82924000.0,81866000.0,81708000.0,74104000.0,59317000.0,58603000.0,57043000.0,55934000.0,43487000.0,48196000.0,34944000.0,32302000.0,29122000.0,21519000.0,19334000.0,26447000.0,47116000.0,43910000.0,43827000.0,33619000.0,32809000.0,31872000.0,25849000.0,25689000.0,22487000.0,11445000.0,9228000.0,67939000.0,67923000.0,53640000.0,49819000.0,48353000.0,45478000.0,67364000.0,67333000.0,64799000.0,64510000.0,64494000.0,63296000.0,58167000.0,57730000.0,13496000.0,12784000.0,11956000.0,11146000.0,4533000.0,55909000.0,55175000.0,31738000.0,30957000.0,20115000.0,19296000.0,13284000.0,6557000.0,6542000.0,6481000.0,41707000.0,41121000.0,33720000.0,15895000.0,15886000.0,10644000.0,72280000.0,72256000.0,69627000.0,69617000.0,45683000.0,42385000.0,36726000.0,38884000.0,112000.0,85146000.0,84839000.0,84695000.0,83565000.0,82950000.0,82159000.0,77905000.0,77880000.0,72767000.0,71059000.0,71007000.0,58635000.0,57041000.0,42451000.0,42419000.0,32323000.0,32238000.0,29183000.0,26365000.0,26180000.0,80698000.0,57837000.0,40554000.0,29410000.0,28882000.0,27650000.0,80121000.0,39791000.0,30511000.0,30506000.0,30403000.0,35188000.0,35181000.0,72450000.0,50755000.0,50217000.0,49901000.0,49892000.0,49845000.0,49686000.0,49621000.0,76587000.0,60008000.0,59873000.0,56157000.0,55501000.0,55409000.0,54526000.0,54205000.0,50747000.0,45945000.0,45032000.0,44144000.0,44099000.0,43364000.0,38917000.0,37918000.0,37820000.0,36614000.0,36222000.0,35593000.0,32905000.0,54507000.0,38502000.0,37737000.0,36158000.0,86226000.0,55318000.0,53664000.0,50055000.0,43471000.0,35253000.0,35015000.0,34914000.0,33759000.0,33753000.0,32858000.0,31147000.0,86102000.0,73764000.0,71389000.0,36189000.0,34207000.0,82292000.0,1524000.0,72547000.0,71214000.0,70568000.0,64061000.0,63622000.0,59887000.0,58809000.0,58618000.0,56178000.0,49833000.0,46536000.0,44954000.0,63853000.0,61672000.0,52521000.0,47261000.0,79389000.0,79034000.0,78995000.0,78944000.0,7643000.0,6316000.0,5834000.0,5002000.0,2968000.0,81908000.0,80383000.0,78372000.0,38563000.0,71443000.0,62222000.0,54813000.0,43153000.0,36962000.0,53193000.0,35747000.0,35738000.0,35490000.0,35301000.0,56218000.0,78037000.0,49752000.0,56620000.0,50390000.0,47973000.0,44406000.0,40521000.0,40490000.0,69215000.0,68922000.0,52275000.0,48689000.0,47192000.0,69394000.0,65213000.0,63776000.0,62789000.0,54609000.0,54579000.0,38467000.0,58631000.0,55948000.0,54732000.0,54469000.0,40347000.0,40019000.0,38220000.0,38188000.0,59033000.0,58954000.0,58626000.0,56535000.0,56423000.0,37559000.0,47884000.0,40827000.0,40377000.0,28812000.0,28797000.0,28770000.0,28090000.0,24100000.0,24021000.0,23947000.0,23896000.0,52598000.0,50604000.0,40206000.0,39343000.0,33040000.0,33001000.0,66689000.0,65681000.0,65668000.0,65640000.0,32501000.0,68916000.0,68665000.0,68644000.0,37672000.0,37663000.0,69821000.0,69815000.0,69799000.0,66859000.0,86290000.0,85789000.0,84028000.0,69123000.0,69116000.0,69097000.0,59416000.0,58632000.0,57116000.0,57099000.0,54527000.0,54158000.0,41708000.0,79853000.0,53563000.0,53116000.0,52742000.0,52459000.0,50959000.0,43589000.0,43047000.0,41032000.0,40886000.0,40838000.0,32461000.0,63693000.0,60689000.0,55857000.0,55851000.0,53105000.0,50411000.0,49522000.0,49254000.0,49094000.0,86233000.0,57294000.0,53244000.0,53228000.0,55732000.0,55515000.0,44473000.0,37828000.0,37821000.0,81973000.0,60480000.0,36487000.0,36423000.0,59732000.0,56659000.0,55100000.0,50949000.0,43744000.0,43262000.0,81918000.0,66986000.0,66193000.0,62374000.0,55516000.0,46693000.0,45753000.0,44567000.0,42491000.0,41876000.0,41428000.0,40703000.0,40239000.0,38502000.0,38483000.0,37038000.0,36241000.0,35646000.0,54484000.0,46667000.0,36335000.0,42411000.0,60637000.0,59782000.0,59756000.0,59626000.0,56561000.0,56520000.0,32840000.0,63410000.0,63386000.0,63344000.0,63232000.0,61926000.0,61813000.0,61790000.0,61753000.0,36891000.0,33460000.0,32465000.0,32135000.0,27736000.0,27720000.0,86032000.0,84089000.0,84050000.0,84003000.0,81543000.0,81122000.0,81119000.0,81102000.0,61825000.0,59620000.0,55794000.0,49289000.0,48297000.0,47797000.0,46758000.0,43503000.0,42923000.0,41991000.0,40234000.0,38783000.0,79109000.0,78351000.0,76279000.0,74857000.0,73416000.0,73214000.0,25160000.0,25126000.0,82385000.0,81899000.0,80547000.0,79668000.0,78051000.0,75802000.0,75309000.0,73747000.0,72380000.0,23725000.0,23317000.0,75875000.0,75843000.0,73795000.0,71146000.0,58385000.0,57988000.0,57908000.0,57482000.0,56673000.0,53675000.0,53644000.0,53320000.0,52324000.0,52304000.0,50930000.0,49442000.0,47952000.0,59034000.0,57860000.0,22927000.0,19298000.0,10643000.0,10507000.0,9088000.0,8384000.0,59273000.0,58781000.0,27137000.0,27111000.0,27013000.0,19671000.0,36677000.0,34856000.0,34722000.0,67534000.0,67513000.0,63058000.0,63001000.0,62970000.0,45707000.0,44276000.0,33295000.0,81979000.0,75713000.0,74061000.0,61369000.0,61319000.0,61243000.0,61210000.0,61143000.0,55967000.0,55509000.0,54960000.0,54928000.0,54826000.0,52195000.0,33627000.0,77719000.0,59383000.0,58451000.0,41668000.0,61138000.0,61070000.0,57086000.0,53665000.0,53626000.0,52010000.0,38108000.0,64100000.0,56185000.0,56125000.0,39216000.0,43698000.0,39611000.0,37993000.0,34634000.0,28727000.0,26693000.0,79127000.0,78719000.0,78695000.0,45447000.0,45442000.0,40252000.0,34805000.0,34576000.0,42049000.0,42025000.0,41739000.0,74553000.0,74070000.0,73483000.0,64675000.0,64151000.0,64067000.0,59289000.0,59158000.0,58180000.0,58072000.0,57330000.0,56703000.0,56653000.0,55366000.0,55024000.0,54833000.0,53381000.0,52498000.0,50852000.0,50838000.0,47967000.0,47499000.0,45198000.0,45094000.0,42976000.0,35734000.0,32284000.0,32265000.0,31905000.0,27790000.0,74363000.0,57760000.0,56937000.0,56864000.0,56858000.0,53944000.0,53802000.0,53545000.0,53528000.0,52474000.0,32767000.0,31896000.0,31792000.0,27501000.0,47251000.0,47017000.0,46463000.0,46442000.0,40339000.0,31051000.0,50750000.0,50599000.0,49578000.0,49554000.0,73500000.0,73475000.0,70621000.0,70614000.0,70586000.0,56388000.0,55535000.0,55528000.0,48308000.0,48281000.0,47245000.0,46978000.0,40198000.0,40014000.0,39776000.0,39024000.0,36546000.0,35742000.0,30924000.0,30526000.0,30435000.0,24963000.0,24620000.0,24168000.0,23729000.0,23686000.0,23636000.0,21645000.0,21299000.0,19977000.0,55604000.0,24595000.0,24299000.0,23375000.0,23269000.0,49089000.0,48249000.0,48241000.0,36382000.0,33153000.0,33127000.0,32806000.0,27653000.0,27634000.0,27589000.0,26947000.0,18320000.0,44018000.0,43230000.0,81764000.0,81676000.0,81586000.0,80755000.0,80211000.0,80184000.0,80175000.0,79955000.0,79901000.0,59168000.0,58252000.0,50757000.0,50749000.0,50189000.0,50151000.0,50020000.0,40623000.0,31877000.0,30722000.0,30656000.0,77259000.0,77021000.0,76988000.0,73108000.0,65320000.0,63270000.0,63231000.0,54727000.0,54716000.0,54648000.0,53347000.0,53302000.0,49285000.0,48227000.0,40139000.0,83071000.0,83035000.0,66583000.0,66545000.0,66424000.0,52594000.0,52372000.0,52327000.0,59947000.0,59923000.0,32204000.0,84194000.0,82425000.0,76388000.0,74825000.0,73729000.0,70470000.0,68899000.0,64203000.0,53992000.0,53625000.0,54554000.0,53632000.0,50358000.0,49921000.0,47637000.0,47526000.0,40643000.0,3917000.0,3153000.0,3127000.0,81053000.0,81020000.0,80358000.0,77986000.0,76563000.0,74807000.0,67486000.0,67471000.0,60115000.0,57414000.0,57407000.0,84293000.0,61519000.0,61511000.0,51456000.0,51322000.0,37148000.0,37013000.0,36948000.0,60065000.0,59609000.0,53798000.0,53288000.0,52834000.0,51805000.0,51610000.0,85784000.0,56799000.0,55419000.0,52873000.0,52842000.0,52809000.0,51258000.0,51200000.0,43811000.0,43802000.0,43777000.0,38214000.0,37902000.0,36933000.0,85876000.0,85836000.0,85319000.0,78959000.0,78765000.0,75720000.0,73593000.0,70916000.0,69733000.0,69713000.0,69630000.0,65614000.0,57332000.0,56598000.0,51852000.0,51754000.0,40586000.0,37457000.0,75153000.0,73337000.0,70551000.0,70121000.0,64818000.0,64790000.0,56418000.0,55193000.0,51519000.0,49186000.0,48787000.0,48701000.0,48667000.0,34436000.0,34391000.0,2749000.0,2254000.0,84792000.0,83476000.0,83196000.0,83162000.0,79492000.0,59597000.0,55819000.0,53468000.0,58280000.0,58273000.0,57142000.0,57106000.0,54679000.0,54655000.0,34278000.0,83411000.0,53820000.0,42068000.0,41153000.0,36890000.0,36635000.0,36179000.0,58922000.0,58595000.0,43580000.0,39588000.0,33646000.0,73218000.0,38810000.0,46672000.0,46332000.0,77175000.0,59963000.0,57307000.0,57303000.0,57279000.0,57174000.0,55784000.0,54912000.0,53559000.0,53342000.0,52983000.0,52977000.0,52948000.0,35352000.0,61961000.0,56662000.0,56562000.0,55779000.0,53456000.0,51856000.0,51761000.0,50343000.0,50331000.0,48743000.0,58610000.0,58570000.0,50932000.0,40855000.0,80639000.0,82783000.0,73741000.0,72741000.0,48247000.0,46986000.0,58202000.0,55449000.0,55255000.0,54996000.0,38285000.0,38252000.0,64791000.0,60054000.0,59837000.0,59283000.0,56943000.0,50335000.0,50242000.0,50224000.0,36745000.0,77982000.0,77860000.0,77749000.0,77676000.0,77609000.0,76843000.0,69350000.0,69308000.0,69064000.0,69022000.0,49919000.0,49389000.0,49330000.0,26581000.0,26581000.0,38699000.0,71775000.0,71775000.0,28481000.0,55517000.0,51548000.0,40124000.0,54399000.0,79978000.0,76335000.0,53610000.0,53590000.0,53541000.0,47291000.0,42229000.0,42203000.0,58174000.0,51371000.0,43404000.0,42330000.0,40242000.0,48990000.0,48670000.0,48230000.0,47018000.0,46681000.0,46550000.0,46454000.0,37557000.0,37530000.0,36264000.0,36212000.0,34387000.0,34368000.0,34348000.0,33723000.0,206000.0,85903000.0,82838000.0,77590000.0,76504000.0,41269000.0,71278000.0,43723000.0,71280000.0,71209000.0,68127000.0,15066000.0,13813000.0,35482000.0,50395000.0,52968000.0,49195000.0,49154000.0,48184000.0,44294000.0,44116000.0,42304000.0,42298000.0,83805000.0,83798000.0,53396000.0,53071000.0,52735000.0,48994000.0,48087000.0,48024000.0,32253000.0,80700000.0,80572000.0,78825000.0,78340000.0,78220000.0,78152000.0,77845000.0,74165000.0,74026000.0,74007000.0,73240000.0,72779000.0,72765000.0,68470000.0,68392000.0,66351000.0,58664000.0,58556000.0,58471000.0,58410000.0,55520000.0,39043000.0,38847000.0,36048000.0,35978000.0,34567000.0,85722000.0,84971000.0,81266000.0,77481000.0,76556000.0,76549000.0,74456000.0,74432000.0,71135000.0,70133000.0,69336000.0,68279000.0,67948000.0,65438000.0,65417000.0,40248000.0,40231000.0,40203000.0,35120000.0,34990000.0,34945000.0,79692000.0,78240000.0,78063000.0,55979000.0,55506000.0,54063000.0,54045000.0,49334000.0,48928000.0,47168000.0,46973000.0,46665000.0,46628000.0,61565000.0,61557000.0,57158000.0,56724000.0,56172000.0,54208000.0,54025000.0,54004000.0,50873000.0,50137000.0,49876000.0,49767000.0,76282000.0,75757000.0,75634000.0,61555000.0,59844000.0,59822000.0,57680000.0,56600000.0,54278000.0,54270000.0,44645000.0,43744000.0,43708000.0,37592000.0,37556000.0,34488000.0,34395000.0,34066000.0,3371000.0,76163000.0,81899000.0,79167000.0,78857000.0,58644000.0,71341000.0,69101000.0,51533000.0,40796000.0,40796000.0,64417000.0,62735000.0,57061000.0,51092000.0,39167000.0,83345000.0,5031000.0,4323000.0,76308000.0,76091000.0,76054000.0,72072000.0,43412000.0,43395000.0,42798000.0,38143000.0,38143000.0,63146000.0,61822000.0,61399000.0,61399000.0,61087000.0,61052000.0,59572000.0,59572000.0,51141000.0,51119000.0,50744000.0,49818000.0,49371000.0,47146000.0,46104000.0,44380000.0,43783000.0,43738000.0,43198000.0,625000.0,85413000.0,79072000.0,67396000.0,65276000.0,65276000.0,65231000.0,65183000.0,65172000.0,63669000.0,58138000.0,58115000.0,44178000.0,41567000.0,5731000.0,5164000.0,85901000.0,84027000.0,83232000.0,83204000.0,66962000.0,64246000.0,30309000.0,30262000.0,25525000.0,19045000.0,16786000.0,14885000.0,14035000.0,74469000.0,16813000.0,13944000.0,1495000.0,636000.0,86131000.0,85834000.0,83399000.0,83005000.0,82969000.0,63672000.0,45993000.0,45903000.0,45154000.0,45011000.0,40972000.0,40022000.0,39507000.0,34603000.0,32580000.0,73855000.0,59956000.0,49214000.0,48780000.0,48687000.0,48417000.0,48042000.0,47967000.0,37772000.0,23070000.0,22212000.0,22212000.0,22207000.0,6301000.0,85578000.0,83806000.0,82348000.0,80754000.0,79868000.0,79369000.0,79079000.0,78594000.0,74387000.0,72603000.0,72411000.0,72298000.0,72243000.0,58032000.0,57687000.0,57183000.0,56232000.0,56232000.0,55851000.0,54433000.0,54433000.0,54075000.0,48724000.0,50857000.0,33694000.0,33675000.0,31727000.0,31693000.0,31318000.0,31303000.0,2661000.0,80838000.0,80529000.0,77748000.0,77717000.0,77649000.0,77649000.0,77633000.0,75795000.0,75134000.0,72702000.0,52416000.0,51092000.0,51085000.0,51005000.0,50972000.0,50921000.0,45532000.0,45571000.0,45532000.0,45532000.0,81515000.0,81487000.0,81487000.0,76745000.0,76707000.0,76707000.0,67691000.0,67626000.0,67626000.0,67275000.0,67275000.0,67241000.0,66456000.0,66456000.0,64142000.0,63946000.0,61167000.0,61167000.0,61133000.0,61097000.0,60953000.0,52826000.0,46569000.0,46569000.0,46535000.0,46467000.0,62317000.0,62003000.0,62003000.0,61986000.0,60916000.0,60916000.0,60886000.0,49334000.0,48415000.0,47429000.0,46990000.0,45503000.0,69735000.0,35737000.0,35737000.0,35223000.0,35223000.0,35030000.0,35002000.0,85167000.0,85049000.0,84687000.0,33359000.0,63046000.0,63032000.0,62772000.0,62772000.0,62751000.0,62751000.0,62711000.0,62711000.0,58236000.0,58236000.0,58219000.0,57297000.0,57297000.0,57123000.0,54419000.0,54356000.0,48560000.0,45573000.0,42332000.0,63906000.0,63436000.0,61720000.0,61720000.0,61716000.0,61250000.0,55424000.0,53272000.0,52281000.0,52281000.0,52277000.0,40071000.0,38028000.0,61703000.0,53345000.0,51975000.0,41524000.0,41415000.0,41323000.0,49644000.0,55157000.0,54822000.0,54249000.0,54217000.0,64432000.0,64432000.0,64416000.0,64409000.0,61838000.0,61773000.0,60755000.0,60755000.0,56076000.0,56076000.0,56076000.0,55886000.0,55337000.0,55337000.0,55300000.0,53314000.0,52410000.0,52393000.0,52360000.0,50150000.0,40355000.0,40355000.0,40355000.0,36397000.0,30988000.0,29905000.0,29892000.0,28336000.0,28336000.0,28336000.0,28270000.0,28235000.0,67199000.0,67199000.0,67199000.0,57981000.0,57028000.0,57028000.0,56979000.0,54608000.0,53834000.0,53777000.0,51719000.0,51139000.0,49757000.0,49715000.0,49083000.0,48312000.0,78007000.0,68975000.0,45100000.0,63842000.0,52473000.0,50129000.0,42009000.0,41784000.0,41784000.0,41784000.0,58122000.0,58083000.0,84858000.0,84858000.0,80007000.0,78298000.0,78210000.0,76316000.0,76316000.0,67772000.0,67772000.0,62663000.0,62663000.0,48674000.0,48374000.0,45002000.0,43522000.0,43423000.0,41122000.0,40894000.0,40367000.0,40334000.0,64888000.0,64888000.0,45996000.0,45818000.0,30657000.0,30006000.0,28261000.0,26749000.0,26621000.0,26471000.0,30559000.0,62093000.0,62093000.0,62075000.0,62075000.0,58420000.0,58420000.0,56039000.0,56039000.0,52777000.0,52765000.0,48024000.0,48024000.0,48024000.0,41543000.0,28149000.0,50594000.0,27602000.0,26763000.0,26357000.0,83769000.0,83761000.0,2628000.0,80945000.0,80707000.0,80696000.0,76922000.0,76904000.0,54485000.0,53794000.0,53014000.0,51085000.0,84398000.0,81980000.0,80332000.0,77740000.0,4253000.0,4067000.0,4042000.0,84846000.0,75533000.0,80035000.0,79998000.0,67907000.0,63188000.0,63182000.0,60625000.0,58662000.0,57946000.0,57068000.0,57068000.0,56934000.0,33638000.0,37885000.0,28196000.0,3423000.0,81697000.0,56334000.0,56138000.0,65209000.0,65176000.0,64135000.0,62472000.0,51618000.0,51182000.0,40855000.0,38331000.0,62068000.0,61284000.0,47947000.0,43909000.0,48434000.0,40596000.0,47419000.0,47415000.0,41514000.0,78888000.0,77918000.0,60773000.0,59130000.0,57409000.0,57369000.0,57357000.0,61475000.0,452000.0,60975000.0,56470000.0,55840000.0,51767000.0,36749000.0,36749000.0,35654000.0,66609000.0,66580000.0,2660000.0,2640000.0,79241000.0,74090000.0,73954000.0,73929000.0,69075000.0,68299000.0,64160000.0,48520000.0,48232000.0,48187000.0,40351000.0,39271000.0,36995000.0,68327000.0,66688000.0,66619000.0,66549000.0,66517000.0,58018000.0,52174000.0,40663000.0,37143000.0,58275000.0,36784000.0,57283000.0,54595000.0,46216000.0,52251000.0,36022000.0,44999000.0,44981000.0,44956000.0,36787000.0,50487000.0,43481000.0,37909000.0,62709000.0,61307000.0,61245000.0,39157000.0,39145000.0,39123000.0,38191000.0,62125000.0,62100000.0,62073000.0,58882000.0,58680000.0,43473000.0,58896000.0,58817000.0,58088000.0,58034000.0,58002000.0,38945000.0,38735000.0,36025000.0,32942000.0,32450000.0,32223000.0,83088000.0,79089000.0,56078000.0,55119000.0,48269000.0,54173000.0,24670000.0,56039000.0,50378000.0,84915000.0,68171000.0,61022000.0,38879000.0,38351000.0,37812000.0,36962000.0,36576000.0,36354000.0,36220000.0,67657000.0,61284000.0,67657000.0,61284000.0,50909000.0,45721000.0,45660000.0,47461000.0,47199000.0,66949000.0,65840000.0,4593000.0,1539000.0,79802000.0,79784000.0,62536000.0,56579000.0,56546000.0,63575000.0,63404000.0,40853000.0,40647000.0,46983000.0,46935000.0,78728000.0,63742000.0,3911000.0,962000.0,82465000.0,82442000.0,73077000.0,37792000.0,74378000.0,36876000.0,3605000.0,34000.0,78431000.0,78329000.0,77662000.0,76448000.0,76407000.0,36622000.0,36615000.0,9103000.0,9092000.0,79647000.0,77109000.0,63049000.0,76929000.0,76060000.0,54967000.0,39283000.0,61304000.0,47123000.0,62197000.0,39102000.0,39081000.0,82004000.0,80813000.0,80773000.0,80714000.0,80653000.0,61876000.0,60136000.0,54458000.0,50655000.0,50578000.0,50364000.0,50345000.0,47927000.0,47654000.0,46104000.0,39062000.0,36291000.0,35773000.0,77004000.0,69883000.0,65543000.0,64924000.0,62284000.0,58566000.0,57673000.0,57648000.0,57618000.0,47624000.0,82306000.0,80716000.0,76243000.0,6217000.0,6045000.0,83173000.0,76451000.0,55319000.0,52787000.0,52188000.0,50328000.0,48660000.0,48607000.0,48217000.0,47833000.0,45455000.0,44825000.0,40637000.0,54712000.0,33404000.0,32280000.0,47359000.0,47340000.0,45452000.0,45276000.0,45209000.0,45045000.0,44990000.0,44848000.0,44793000.0,44730000.0,47379000.0,46358000.0,44532000.0,39204000.0,65908000.0,61737000.0,58959000.0,59329000.0,64003000.0,43070000.0]},\"selected\":{\"id\":\"2229\"},\"selection_policy\":{\"id\":\"2228\"}},\"id\":\"2102\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"2125\",\"type\":\"ResetTool\"},{\"attributes\":{\"months\":[0,4,8]},\"id\":\"2240\",\"type\":\"MonthsTicker\"},{\"attributes\":{},\"id\":\"2124\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"2126\",\"type\":\"HelpTool\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"2223\"},\"group\":null,\"major_label_policy\":{\"id\":\"2224\"},\"ticker\":{\"id\":\"2119\"}},\"id\":\"2118\",\"type\":\"CategoricalAxis\"},{\"attributes\":{},\"id\":\"2229\",\"type\":\"Selection\"},{\"attributes\":{\"months\":[0,6]},\"id\":\"2241\",\"type\":\"MonthsTicker\"},{\"attributes\":{},\"id\":\"2224\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"2110\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"2227\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"2228\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"tools\":[{\"id\":\"2121\"},{\"id\":\"2122\"},{\"id\":\"2123\"},{\"id\":\"2124\"},{\"id\":\"2125\"},{\"id\":\"2126\"}]},\"id\":\"2128\",\"type\":\"Toolbar\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.3},\"fill_color\":{\"value\":\"#1f77b4\"},\"hatch_alpha\":{\"value\":0.3},\"line_alpha\":{\"value\":0.3},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"time\"},\"y\":{\"field\":\"day\",\"transform\":{\"id\":\"2135\"}}},\"id\":\"2137\",\"type\":\"Circle\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"text\":\"Commits by Time of Day (US/Central) 2012\\u20142016\"},\"id\":\"2104\",\"type\":\"Title\"},{\"attributes\":{\"mantissas\":[1,2,5],\"max_interval\":500.0,\"num_minor_ticks\":0},\"id\":\"2231\",\"type\":\"AdaptiveTicker\"},{\"attributes\":{\"coordinates\":null,\"formatter\":{\"id\":\"2142\"},\"group\":null,\"major_label_policy\":{\"id\":\"2227\"},\"ticker\":{\"id\":\"2115\"}},\"id\":\"2114\",\"type\":\"DatetimeAxis\"},{\"attributes\":{},\"id\":\"2242\",\"type\":\"YearsTicker\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#1f77b4\"},\"hatch_alpha\":{\"value\":0.1},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"time\"},\"y\":{\"field\":\"day\",\"transform\":{\"id\":\"2135\"}}},\"id\":\"2138\",\"type\":\"Circle\"},{\"attributes\":{\"base\":60,\"mantissas\":[1,2,5,10,15,20,30],\"max_interval\":1800000.0,\"min_interval\":1000.0,\"num_minor_ticks\":0},\"id\":\"2232\",\"type\":\"AdaptiveTicker\"},{\"attributes\":{\"axis\":{\"id\":\"2118\"},\"coordinates\":null,\"dimension\":1,\"grid_line_color\":null,\"group\":null,\"ticker\":null},\"id\":\"2120\",\"type\":\"Grid\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"2127\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"#1f77b4\"},\"hatch_alpha\":{\"value\":0.2},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"#1f77b4\"},\"x\":{\"field\":\"time\"},\"y\":{\"field\":\"day\",\"transform\":{\"id\":\"2135\"}}},\"id\":\"2139\",\"type\":\"Circle\"},{\"attributes\":{\"num_minor_ticks\":5,\"tickers\":[{\"id\":\"2231\"},{\"id\":\"2232\"},{\"id\":\"2233\"},{\"id\":\"2234\"},{\"id\":\"2235\"},{\"id\":\"2236\"},{\"id\":\"2237\"},{\"id\":\"2238\"},{\"id\":\"2239\"},{\"id\":\"2240\"},{\"id\":\"2241\"},{\"id\":\"2242\"}]},\"id\":\"2115\",\"type\":\"DatetimeTicker\"},{\"attributes\":{\"base\":24,\"mantissas\":[1,2,4,6,8,12],\"max_interval\":43200000.0,\"min_interval\":3600000.0,\"num_minor_ticks\":0},\"id\":\"2233\",\"type\":\"AdaptiveTicker\"},{\"attributes\":{\"days\":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]},\"id\":\"2234\",\"type\":\"DaysTicker\"},{\"attributes\":{\"overlay\":{\"id\":\"2127\"}},\"id\":\"2123\",\"type\":\"BoxZoomTool\"}],\"root_ids\":[\"2103\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.3\"}};\n",
1583
+ " const render_items = [{\"docid\":\"33657638-0484-425d-a373-72d98c9b108f\",\"root_ids\":[\"2103\"],\"roots\":{\"2103\":\"27f693df-6151-4320-988b-9989c6012bd8\"}}];\n",
1584
+ " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
1585
+ " }\n",
1586
+ " if (root.Bokeh !== undefined) {\n",
1587
+ " embed_document(root);\n",
1588
+ " } else {\n",
1589
+ " let attempts = 0;\n",
1590
+ " const timer = setInterval(function(root) {\n",
1591
+ " if (root.Bokeh !== undefined) {\n",
1592
+ " clearInterval(timer);\n",
1593
+ " embed_document(root);\n",
1594
+ " } else {\n",
1595
+ " attempts++;\n",
1596
+ " if (attempts > 100) {\n",
1597
+ " clearInterval(timer);\n",
1598
+ " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n",
1599
+ " }\n",
1600
+ " }\n",
1601
+ " }, 10, root)\n",
1602
+ " }\n",
1603
+ "})(window);"
1604
+ ],
1605
+ "application/vnd.bokehjs_exec.v0+json": ""
1606
+ },
1607
+ "metadata": {
1608
+ "application/vnd.bokehjs_exec.v0+json": {
1609
+ "id": "2103"
1610
+ }
1611
+ },
1612
+ "output_type": "display_data"
1613
+ }
1614
+ ],
1615
+ "source": [
1616
+ "from bokeh.transform import jitter\n",
1617
+ "\n",
1618
+ "DAYS = ['Sun', 'Sat', 'Fri', 'Thu', 'Wed', 'Tue', 'Mon']\n",
1619
+ "\n",
1620
+ "source = ColumnDataSource(data)\n",
1621
+ "\n",
1622
+ "p = figure(plot_width=800, plot_height=300, y_range=DAYS, x_axis_type='datetime', \n",
1623
+ " title=\"Commits by Time of Day (US/Central) 2012—2016\")\n",
1624
+ "\n",
1625
+ "p.circle(x='time', y=jitter('day', width=0.6, range=p.y_range), source=source, alpha=0.3)\n",
1626
+ "\n",
1627
+ "p.xaxis[0].formatter.days = ['%Hh']\n",
1628
+ "p.x_range.range_padding = 0\n",
1629
+ "p.ygrid.grid_line_color = None\n",
1630
+ "\n",
1631
+ "show(p)"
1632
+ ]
1633
+ },
1634
+ {
1635
+ "cell_type": "code",
1636
+ "execution_count": 19,
1637
+ "metadata": {},
1638
+ "outputs": [],
1639
+ "source": [
1640
+ "# Exercise: Create a plot using categorical coordinates and any non-\"bar\" glyphs\n"
1641
+ ]
1642
+ },
1643
+ {
1644
+ "cell_type": "markdown",
1645
+ "metadata": {},
1646
+ "source": [
1647
+ "# Next Section"
1648
+ ]
1649
+ },
1650
+ {
1651
+ "cell_type": "markdown",
1652
+ "metadata": {},
1653
+ "source": [
1654
+ "Click on this link to go to the next notebook: [08 - Graph and Network Plots](08%20-%20Graph%20and%20Network%20Plots.ipynb).\n",
1655
+ "\n",
1656
+ "To go back to the overview, click [here](00%20-%20Introduction%20and%20Setup.ipynb)."
1657
+ ]
1658
+ }
1659
+ ],
1660
+ "metadata": {
1661
+ "kernelspec": {
1662
+ "display_name": "Python 3",
1663
+ "language": "python",
1664
+ "name": "python3"
1665
+ },
1666
+ "language_info": {
1667
+ "codemirror_mode": {
1668
+ "name": "ipython",
1669
+ "version": 3
1670
+ },
1671
+ "file_extension": ".py",
1672
+ "mimetype": "text/x-python",
1673
+ "name": "python",
1674
+ "nbconvert_exporter": "python",
1675
+ "pygments_lexer": "ipython3",
1676
+ "version": "3.7.9"
1677
+ }
1678
+ },
1679
+ "nbformat": 4,
1680
+ "nbformat_minor": 4
1681
+ }