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,966 @@
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "code",
5
+ "execution_count": null,
6
+ "metadata": {},
7
+ "outputs": [],
8
+ "source": [
9
+ "import pandas as pd\n",
10
+ "import numpy as np\n",
11
+ "\n",
12
+ "symbol = \"Security 1\"\n",
13
+ "symbol2 = \"Security 2\""
14
+ ]
15
+ },
16
+ {
17
+ "cell_type": "code",
18
+ "execution_count": null,
19
+ "metadata": {},
20
+ "outputs": [],
21
+ "source": [
22
+ "price_data = pd.DataFrame(\n",
23
+ " np.cumsum(np.random.randn(150, 2).dot([[0.5, 0.4], [0.4, 1.0]]), axis=0) + 100,\n",
24
+ " columns=[\"Security 1\", \"Security 2\"],\n",
25
+ " index=pd.date_range(start=\"01-01-2007\", periods=150),\n",
26
+ ")\n",
27
+ "\n",
28
+ "dates_actual = price_data.index.values\n",
29
+ "prices = price_data[symbol].values"
30
+ ]
31
+ },
32
+ {
33
+ "cell_type": "code",
34
+ "execution_count": null,
35
+ "metadata": {},
36
+ "outputs": [],
37
+ "source": [
38
+ "from bqplot import DateScale, LinearScale, Axis, Lines, Scatter, Bars, Hist, Figure\n",
39
+ "from bqplot.interacts import (\n",
40
+ " FastIntervalSelector,\n",
41
+ " IndexSelector,\n",
42
+ " BrushIntervalSelector,\n",
43
+ " BrushSelector,\n",
44
+ " MultiSelector,\n",
45
+ " LassoSelector,\n",
46
+ " PanZoom,\n",
47
+ " HandDraw,\n",
48
+ ")\n",
49
+ "from traitlets import link\n",
50
+ "\n",
51
+ "from ipywidgets import ToggleButtons, VBox, HTML"
52
+ ]
53
+ },
54
+ {
55
+ "cell_type": "markdown",
56
+ "metadata": {},
57
+ "source": [
58
+ "# Line Chart Selectors"
59
+ ]
60
+ },
61
+ {
62
+ "cell_type": "markdown",
63
+ "metadata": {},
64
+ "source": [
65
+ "## Fast Interval Selector"
66
+ ]
67
+ },
68
+ {
69
+ "cell_type": "code",
70
+ "execution_count": null,
71
+ "metadata": {},
72
+ "outputs": [],
73
+ "source": [
74
+ "## First we define a Figure\n",
75
+ "dt_x_fast = DateScale()\n",
76
+ "lin_y = LinearScale()\n",
77
+ "\n",
78
+ "x_ax = Axis(label=\"Index\", scale=dt_x_fast)\n",
79
+ "x_ay = Axis(label=(symbol + \" Price\"), scale=lin_y, orientation=\"vertical\")\n",
80
+ "lc = Lines(\n",
81
+ " x=dates_actual, y=prices, scales={\"x\": dt_x_fast, \"y\": lin_y}, colors=[\"orange\"]\n",
82
+ ")\n",
83
+ "lc_2 = Lines(\n",
84
+ " x=dates_actual[50:],\n",
85
+ " y=prices[50:] + 2,\n",
86
+ " scales={\"x\": dt_x_fast, \"y\": lin_y},\n",
87
+ " colors=[\"blue\"],\n",
88
+ ")"
89
+ ]
90
+ },
91
+ {
92
+ "cell_type": "code",
93
+ "execution_count": null,
94
+ "metadata": {},
95
+ "outputs": [],
96
+ "source": [
97
+ "## Next we define the type of selector we would like\n",
98
+ "intsel_fast = FastIntervalSelector(scale=dt_x_fast, marks=[lc, lc_2])"
99
+ ]
100
+ },
101
+ {
102
+ "cell_type": "code",
103
+ "execution_count": null,
104
+ "metadata": {},
105
+ "outputs": [],
106
+ "source": [
107
+ "## Now, we define a function that will be called when the FastIntervalSelector is interacted with\n",
108
+ "def fast_interval_change_callback(change):\n",
109
+ " db_fast.value = \"The selected period is \" + str(change.new)"
110
+ ]
111
+ },
112
+ {
113
+ "cell_type": "code",
114
+ "execution_count": null,
115
+ "metadata": {},
116
+ "outputs": [],
117
+ "source": [
118
+ "## Now we connect the selectors to that function\n",
119
+ "intsel_fast.observe(fast_interval_change_callback, names=[\"selected\"])"
120
+ ]
121
+ },
122
+ {
123
+ "cell_type": "code",
124
+ "execution_count": null,
125
+ "metadata": {},
126
+ "outputs": [],
127
+ "source": [
128
+ "## We use the HTML widget to see the value of what we are selecting and modify it when an interaction is performed\n",
129
+ "## on the selector\n",
130
+ "db_fast = HTML()\n",
131
+ "db_fast.value = \"The selected period is \" + str(intsel_fast.selected)\n",
132
+ "\n",
133
+ "fig_fast_intsel = Figure(\n",
134
+ " marks=[lc, lc_2],\n",
135
+ " axes=[x_ax, x_ay],\n",
136
+ " title=\"Fast Interval Selector Example\",\n",
137
+ " interaction=intsel_fast,\n",
138
+ ") # This is where we assign the interaction to this particular Figure\n",
139
+ "\n",
140
+ "VBox([db_fast, fig_fast_intsel])"
141
+ ]
142
+ },
143
+ {
144
+ "cell_type": "markdown",
145
+ "metadata": {},
146
+ "source": [
147
+ "## Index Selector"
148
+ ]
149
+ },
150
+ {
151
+ "cell_type": "code",
152
+ "execution_count": null,
153
+ "metadata": {},
154
+ "outputs": [],
155
+ "source": [
156
+ "db_index = HTML(value=\"[]\")"
157
+ ]
158
+ },
159
+ {
160
+ "cell_type": "code",
161
+ "execution_count": null,
162
+ "metadata": {},
163
+ "outputs": [],
164
+ "source": [
165
+ "## Now we try a selector made to select all the y-values associated with a single x-value\n",
166
+ "index_sel = IndexSelector(scale=dt_x_fast, marks=[lc, lc_2])"
167
+ ]
168
+ },
169
+ {
170
+ "cell_type": "code",
171
+ "execution_count": null,
172
+ "metadata": {},
173
+ "outputs": [],
174
+ "source": [
175
+ "## Now, we define a function that will be called when the selectors are interacted with\n",
176
+ "def index_change_callback(change):\n",
177
+ " db_index.value = \"The selected date is \" + str(change.new)"
178
+ ]
179
+ },
180
+ {
181
+ "cell_type": "code",
182
+ "execution_count": null,
183
+ "metadata": {},
184
+ "outputs": [],
185
+ "source": [
186
+ "index_sel.observe(index_change_callback, names=[\"selected\"])"
187
+ ]
188
+ },
189
+ {
190
+ "cell_type": "code",
191
+ "execution_count": null,
192
+ "metadata": {},
193
+ "outputs": [],
194
+ "source": [
195
+ "fig_index_sel = Figure(\n",
196
+ " marks=[lc, lc_2],\n",
197
+ " axes=[x_ax, x_ay],\n",
198
+ " title=\"Index Selector Example\",\n",
199
+ " interaction=index_sel,\n",
200
+ ")\n",
201
+ "VBox([db_index, fig_index_sel])"
202
+ ]
203
+ },
204
+ {
205
+ "cell_type": "markdown",
206
+ "metadata": {},
207
+ "source": [
208
+ "## Returning indexes of selected values"
209
+ ]
210
+ },
211
+ {
212
+ "cell_type": "code",
213
+ "execution_count": null,
214
+ "metadata": {},
215
+ "outputs": [],
216
+ "source": [
217
+ "from datetime import datetime as py_dtime\n",
218
+ "\n",
219
+ "dt_x_index = DateScale(min=np.datetime64(py_dtime(2006, 6, 1)))\n",
220
+ "lin_y2 = LinearScale()\n",
221
+ "\n",
222
+ "lc2_index = Lines(x=dates_actual, y=prices, scales={\"x\": dt_x_index, \"y\": lin_y2})\n",
223
+ "\n",
224
+ "x_ax1 = Axis(label=\"Date\", scale=dt_x_index)\n",
225
+ "x_ay2 = Axis(label=(symbol + \" Price\"), scale=lin_y2, orientation=\"vertical\")"
226
+ ]
227
+ },
228
+ {
229
+ "cell_type": "code",
230
+ "execution_count": null,
231
+ "metadata": {},
232
+ "outputs": [],
233
+ "source": [
234
+ "intsel_date = FastIntervalSelector(scale=dt_x_index, marks=[lc2_index])"
235
+ ]
236
+ },
237
+ {
238
+ "cell_type": "code",
239
+ "execution_count": null,
240
+ "metadata": {},
241
+ "outputs": [],
242
+ "source": [
243
+ "db_date = HTML()\n",
244
+ "db_date.value = str(intsel_date.selected)"
245
+ ]
246
+ },
247
+ {
248
+ "cell_type": "code",
249
+ "execution_count": null,
250
+ "metadata": {},
251
+ "outputs": [],
252
+ "source": [
253
+ "## Now, we define a function that will be called when the selectors are interacted with - a callback\n",
254
+ "def date_interval_change_callback(change):\n",
255
+ " db_date.value = str(change.new)"
256
+ ]
257
+ },
258
+ {
259
+ "cell_type": "code",
260
+ "execution_count": null,
261
+ "metadata": {},
262
+ "outputs": [],
263
+ "source": [
264
+ "## Notice here that we call the observe on the Mark lc2_index rather than on the selector intsel_date\n",
265
+ "lc2_index.observe(date_interval_change_callback, names=[\"selected\"])\n",
266
+ "\n",
267
+ "fig_date_mark = Figure(\n",
268
+ " marks=[lc2_index],\n",
269
+ " axes=[x_ax1, x_ay2],\n",
270
+ " title=\"Fast Interval Selector Selected Indices Example\",\n",
271
+ " interaction=intsel_date,\n",
272
+ ")\n",
273
+ "\n",
274
+ "VBox([db_date, fig_date_mark])"
275
+ ]
276
+ },
277
+ {
278
+ "cell_type": "markdown",
279
+ "metadata": {},
280
+ "source": [
281
+ "## Brush Selector"
282
+ ]
283
+ },
284
+ {
285
+ "cell_type": "markdown",
286
+ "metadata": {},
287
+ "source": [
288
+ "### We can do the same with any type of selector"
289
+ ]
290
+ },
291
+ {
292
+ "cell_type": "code",
293
+ "execution_count": null,
294
+ "metadata": {},
295
+ "outputs": [],
296
+ "source": [
297
+ "## Defining a new Figure\n",
298
+ "dt_x_brush = DateScale(min=np.datetime64(py_dtime(2006, 6, 1)))\n",
299
+ "lin_y2_brush = LinearScale()\n",
300
+ "\n",
301
+ "lc3_brush = Lines(x=dates_actual, y=prices, scales={\"x\": dt_x_brush, \"y\": lin_y2_brush})\n",
302
+ "\n",
303
+ "x_ax_brush = Axis(label=\"Date\", scale=dt_x_brush)\n",
304
+ "x_ay_brush = Axis(label=(symbol + \" Price\"), scale=lin_y2_brush, orientation=\"vertical\")"
305
+ ]
306
+ },
307
+ {
308
+ "cell_type": "code",
309
+ "execution_count": null,
310
+ "metadata": {},
311
+ "outputs": [],
312
+ "source": [
313
+ "db_brush = HTML(value=\"[]\")"
314
+ ]
315
+ },
316
+ {
317
+ "cell_type": "code",
318
+ "execution_count": null,
319
+ "metadata": {},
320
+ "outputs": [],
321
+ "source": [
322
+ "brushsel_date = BrushIntervalSelector(\n",
323
+ " scale=dt_x_brush, marks=[lc3_brush], color=\"FireBrick\"\n",
324
+ ")"
325
+ ]
326
+ },
327
+ {
328
+ "cell_type": "code",
329
+ "execution_count": null,
330
+ "metadata": {},
331
+ "outputs": [],
332
+ "source": [
333
+ "## Now, we define a function that will be called when the selectors are interacted with - a callback\n",
334
+ "def date_brush_change_callback(change):\n",
335
+ " db_brush.value = str(change.new)"
336
+ ]
337
+ },
338
+ {
339
+ "cell_type": "code",
340
+ "execution_count": null,
341
+ "metadata": {},
342
+ "outputs": [],
343
+ "source": [
344
+ "lc3_brush.observe(date_brush_change_callback, names=[\"selected\"])"
345
+ ]
346
+ },
347
+ {
348
+ "cell_type": "code",
349
+ "execution_count": null,
350
+ "metadata": {},
351
+ "outputs": [],
352
+ "source": [
353
+ "fig_brush_sel = Figure(\n",
354
+ " marks=[lc3_brush],\n",
355
+ " axes=[x_ax_brush, x_ay_brush],\n",
356
+ " title=\"Brush Selector Selected Indices Example\",\n",
357
+ " interaction=brushsel_date,\n",
358
+ ")\n",
359
+ "\n",
360
+ "VBox([db_brush, fig_brush_sel])"
361
+ ]
362
+ },
363
+ {
364
+ "cell_type": "markdown",
365
+ "metadata": {},
366
+ "source": [
367
+ "# Scatter Chart Selectors"
368
+ ]
369
+ },
370
+ {
371
+ "cell_type": "markdown",
372
+ "metadata": {},
373
+ "source": [
374
+ "## Brush Selector"
375
+ ]
376
+ },
377
+ {
378
+ "cell_type": "code",
379
+ "execution_count": null,
380
+ "metadata": {},
381
+ "outputs": [],
382
+ "source": [
383
+ "date_fmt = \"%m-%d-%Y\"\n",
384
+ "\n",
385
+ "sec2_data = price_data[symbol2].values\n",
386
+ "dates = price_data.index.values"
387
+ ]
388
+ },
389
+ {
390
+ "cell_type": "code",
391
+ "execution_count": null,
392
+ "metadata": {},
393
+ "outputs": [],
394
+ "source": [
395
+ "sc_x = LinearScale()\n",
396
+ "sc_y = LinearScale()\n",
397
+ "\n",
398
+ "scatt = Scatter(x=prices, y=sec2_data, scales={\"x\": sc_x, \"y\": sc_y})\n",
399
+ "\n",
400
+ "sc_xax = Axis(label=(symbol), scale=sc_x)\n",
401
+ "sc_yax = Axis(label=(symbol2), scale=sc_y, orientation=\"vertical\")"
402
+ ]
403
+ },
404
+ {
405
+ "cell_type": "code",
406
+ "execution_count": null,
407
+ "metadata": {},
408
+ "outputs": [],
409
+ "source": [
410
+ "br_sel = BrushSelector(x_scale=sc_x, y_scale=sc_y, marks=[scatt], color=\"red\")\n",
411
+ "\n",
412
+ "db_scat_brush = HTML(value=\"[]\")"
413
+ ]
414
+ },
415
+ {
416
+ "cell_type": "code",
417
+ "execution_count": null,
418
+ "metadata": {},
419
+ "outputs": [],
420
+ "source": [
421
+ "## call back for the selector\n",
422
+ "def brush_callback(change):\n",
423
+ " db_scat_brush.value = str(br_sel.selected)"
424
+ ]
425
+ },
426
+ {
427
+ "cell_type": "code",
428
+ "execution_count": null,
429
+ "metadata": {},
430
+ "outputs": [],
431
+ "source": [
432
+ "br_sel.observe(brush_callback, names=[\"brushing\"])"
433
+ ]
434
+ },
435
+ {
436
+ "cell_type": "code",
437
+ "execution_count": null,
438
+ "metadata": {},
439
+ "outputs": [],
440
+ "source": [
441
+ "fig_scat_brush = Figure(\n",
442
+ " marks=[scatt],\n",
443
+ " axes=[sc_xax, sc_yax],\n",
444
+ " title=\"Scatter Chart Brush Selector Example\",\n",
445
+ " interaction=br_sel,\n",
446
+ ")"
447
+ ]
448
+ },
449
+ {
450
+ "cell_type": "code",
451
+ "execution_count": null,
452
+ "metadata": {
453
+ "scrolled": false
454
+ },
455
+ "outputs": [],
456
+ "source": [
457
+ "VBox([db_scat_brush, fig_scat_brush])"
458
+ ]
459
+ },
460
+ {
461
+ "cell_type": "markdown",
462
+ "metadata": {},
463
+ "source": [
464
+ "## Brush Selector with Date Values"
465
+ ]
466
+ },
467
+ {
468
+ "cell_type": "code",
469
+ "execution_count": null,
470
+ "metadata": {},
471
+ "outputs": [],
472
+ "source": [
473
+ "sc_brush_dt_x = DateScale(date_format=date_fmt)\n",
474
+ "sc_brush_dt_y = LinearScale()\n",
475
+ "\n",
476
+ "scatt2 = Scatter(\n",
477
+ " x=dates_actual, y=sec2_data, scales={\"x\": sc_brush_dt_x, \"y\": sc_brush_dt_y}\n",
478
+ ")"
479
+ ]
480
+ },
481
+ {
482
+ "cell_type": "code",
483
+ "execution_count": null,
484
+ "metadata": {},
485
+ "outputs": [],
486
+ "source": [
487
+ "br_sel_dt = BrushSelector(x_scale=sc_brush_dt_x, y_scale=sc_brush_dt_y, marks=[scatt2])"
488
+ ]
489
+ },
490
+ {
491
+ "cell_type": "code",
492
+ "execution_count": null,
493
+ "metadata": {},
494
+ "outputs": [],
495
+ "source": [
496
+ "db_brush_dt = HTML(value=str(br_sel_dt.selected))"
497
+ ]
498
+ },
499
+ {
500
+ "cell_type": "code",
501
+ "execution_count": null,
502
+ "metadata": {},
503
+ "outputs": [],
504
+ "source": [
505
+ "## call back for the selector\n",
506
+ "def brush_dt_callback(change):\n",
507
+ " db_brush_dt.value = str(br_sel_dt.selected)"
508
+ ]
509
+ },
510
+ {
511
+ "cell_type": "code",
512
+ "execution_count": null,
513
+ "metadata": {},
514
+ "outputs": [],
515
+ "source": [
516
+ "br_sel_dt.observe(brush_dt_callback, names=[\"brushing\"])"
517
+ ]
518
+ },
519
+ {
520
+ "cell_type": "code",
521
+ "execution_count": null,
522
+ "metadata": {},
523
+ "outputs": [],
524
+ "source": [
525
+ "sc_xax = Axis(label=(symbol), scale=sc_brush_dt_x)\n",
526
+ "sc_yax = Axis(label=(symbol2), scale=sc_brush_dt_y, orientation=\"vertical\")\n",
527
+ "fig_brush_dt = Figure(\n",
528
+ " marks=[scatt2],\n",
529
+ " axes=[sc_xax, sc_yax],\n",
530
+ " title=\"Brush Selector with Dates Example\",\n",
531
+ " interaction=br_sel_dt,\n",
532
+ ")"
533
+ ]
534
+ },
535
+ {
536
+ "cell_type": "code",
537
+ "execution_count": null,
538
+ "metadata": {},
539
+ "outputs": [],
540
+ "source": [
541
+ "VBox([db_brush_dt, fig_brush_dt])"
542
+ ]
543
+ },
544
+ {
545
+ "cell_type": "markdown",
546
+ "metadata": {},
547
+ "source": [
548
+ "# Histogram Selectors"
549
+ ]
550
+ },
551
+ {
552
+ "cell_type": "code",
553
+ "execution_count": null,
554
+ "metadata": {},
555
+ "outputs": [],
556
+ "source": [
557
+ "## call back for selectors\n",
558
+ "def interval_change_callback(name, value):\n",
559
+ " db3.value = str(value)\n",
560
+ "\n",
561
+ "\n",
562
+ "## call back for the selector\n",
563
+ "def brush_callback(change):\n",
564
+ " if not br_intsel.brushing:\n",
565
+ " db3.value = str(br_intsel.selected)"
566
+ ]
567
+ },
568
+ {
569
+ "cell_type": "code",
570
+ "execution_count": null,
571
+ "metadata": {},
572
+ "outputs": [],
573
+ "source": [
574
+ "returns = np.log(prices[1:]) - np.log(prices[:-1])\n",
575
+ "hist_x = LinearScale()\n",
576
+ "hist_y = LinearScale()\n",
577
+ "hist = Hist(sample=returns, scales={\"sample\": hist_x, \"count\": hist_y})\n",
578
+ "\n",
579
+ "br_intsel = BrushIntervalSelector(scale=hist_x, marks=[hist])\n",
580
+ "br_intsel.observe(brush_callback, names=[\"selected\"])\n",
581
+ "br_intsel.observe(brush_callback, names=[\"brushing\"])\n",
582
+ "\n",
583
+ "db3 = HTML()\n",
584
+ "db3.value = str(br_intsel.selected)\n",
585
+ "\n",
586
+ "h_xax = Axis(\n",
587
+ " scale=hist_x, label=\"Returns\", grids=\"off\", set_ticks=True, tick_format=\"0.2%\"\n",
588
+ ")\n",
589
+ "h_yax = Axis(scale=hist_y, label=\"Freq\", orientation=\"vertical\", grid_lines=\"none\")\n",
590
+ "\n",
591
+ "fig_hist = Figure(\n",
592
+ " marks=[hist],\n",
593
+ " axes=[h_xax, h_yax],\n",
594
+ " title=\"Histogram Selection Example\",\n",
595
+ " interaction=br_intsel,\n",
596
+ ")\n",
597
+ "VBox([db3, fig_hist])"
598
+ ]
599
+ },
600
+ {
601
+ "cell_type": "markdown",
602
+ "metadata": {},
603
+ "source": [
604
+ "## Multi Selector\n",
605
+ "\n",
606
+ "* This selector provides the ability to have multiple brush selectors on the same graph.\n",
607
+ "* The first brush works like a regular brush.\n",
608
+ "* `Ctrl + click` creates a new brush, which works like the regular brush.\n",
609
+ "* The `active` brush has a Green border while all the `inactive` brushes have a Red border.\n",
610
+ "* `Shift + click` deactivates the current `active` brush. Now, click on any `inactive` brush to make it `active`.\n",
611
+ "* `Ctrl + Alt + Shift + click` clears and resets all the brushes."
612
+ ]
613
+ },
614
+ {
615
+ "cell_type": "code",
616
+ "execution_count": null,
617
+ "metadata": {},
618
+ "outputs": [],
619
+ "source": [
620
+ "def multi_sel_callback(change):\n",
621
+ " if not multi_sel.brushing:\n",
622
+ " db4.value = str(multi_sel.selected)"
623
+ ]
624
+ },
625
+ {
626
+ "cell_type": "code",
627
+ "execution_count": null,
628
+ "metadata": {},
629
+ "outputs": [],
630
+ "source": [
631
+ "line_x = LinearScale()\n",
632
+ "line_y = LinearScale()\n",
633
+ "line = Lines(\n",
634
+ " x=np.arange(100), y=np.random.randn(100), scales={\"x\": line_x, \"y\": line_y}\n",
635
+ ")\n",
636
+ "\n",
637
+ "multi_sel = MultiSelector(scale=line_x, marks=[line])\n",
638
+ "multi_sel.observe(multi_sel_callback, names=[\"selected\"])\n",
639
+ "multi_sel.observe(multi_sel_callback, names=[\"brushing\"])\n",
640
+ "\n",
641
+ "db4 = HTML()\n",
642
+ "db4.value = str(multi_sel.selected)\n",
643
+ "\n",
644
+ "h_xax = Axis(scale=line_x, label=\"Returns\", grid_lines=\"none\")\n",
645
+ "h_yax = Axis(scale=hist_y, label=\"Freq\", orientation=\"vertical\", grid_lines=\"none\")\n",
646
+ "\n",
647
+ "fig_multi = Figure(\n",
648
+ " marks=[line],\n",
649
+ " axes=[h_xax, h_yax],\n",
650
+ " title=\"Multi-Selector Example\",\n",
651
+ " interaction=multi_sel,\n",
652
+ ")\n",
653
+ "VBox([db4, fig_multi])"
654
+ ]
655
+ },
656
+ {
657
+ "cell_type": "code",
658
+ "execution_count": null,
659
+ "metadata": {},
660
+ "outputs": [],
661
+ "source": [
662
+ "# changing the names of the intervals.\n",
663
+ "multi_sel.names = [\"int1\", \"int2\", \"int3\"]"
664
+ ]
665
+ },
666
+ {
667
+ "cell_type": "markdown",
668
+ "metadata": {},
669
+ "source": [
670
+ "## Multi Selector with Date X"
671
+ ]
672
+ },
673
+ {
674
+ "cell_type": "code",
675
+ "execution_count": null,
676
+ "metadata": {},
677
+ "outputs": [],
678
+ "source": [
679
+ "def multi_sel_dt_callback(change):\n",
680
+ " if not multi_sel_dt.brushing:\n",
681
+ " db_multi_dt.value = str(multi_sel_dt.selected)"
682
+ ]
683
+ },
684
+ {
685
+ "cell_type": "code",
686
+ "execution_count": null,
687
+ "metadata": {},
688
+ "outputs": [],
689
+ "source": [
690
+ "line_dt_x = DateScale(min=np.datetime64(py_dtime(2007, 1, 1)))\n",
691
+ "line_dt_y = LinearScale()\n",
692
+ "line_dt = Lines(\n",
693
+ " x=dates_actual, y=sec2_data, scales={\"x\": line_dt_x, \"y\": line_dt_y}, colors=[\"red\"]\n",
694
+ ")\n",
695
+ "\n",
696
+ "multi_sel_dt = MultiSelector(scale=line_dt_x)\n",
697
+ "multi_sel_dt.observe(multi_sel_dt_callback, names=[\"selected\"])\n",
698
+ "multi_sel_dt.observe(multi_sel_dt_callback, names=[\"brushing\"])\n",
699
+ "\n",
700
+ "db_multi_dt = HTML()\n",
701
+ "db_multi_dt.value = str(multi_sel_dt.selected)\n",
702
+ "\n",
703
+ "h_xax_dt = Axis(scale=line_dt_x, label=\"Returns\", grid_lines=\"none\")\n",
704
+ "h_yax_dt = Axis(\n",
705
+ " scale=line_dt_y, label=\"Freq\", orientation=\"vertical\", grid_lines=\"none\"\n",
706
+ ")\n",
707
+ "\n",
708
+ "fig_multi_dt = Figure(\n",
709
+ " marks=[line_dt],\n",
710
+ " axes=[h_xax_dt, h_yax_dt],\n",
711
+ " title=\"Multi-Selector with Date Example\",\n",
712
+ " interaction=multi_sel_dt,\n",
713
+ ")\n",
714
+ "VBox([db_multi_dt, fig_multi_dt])"
715
+ ]
716
+ },
717
+ {
718
+ "cell_type": "markdown",
719
+ "metadata": {},
720
+ "source": [
721
+ "## Lasso Selector"
722
+ ]
723
+ },
724
+ {
725
+ "cell_type": "code",
726
+ "execution_count": null,
727
+ "metadata": {},
728
+ "outputs": [],
729
+ "source": [
730
+ "lasso_sel = LassoSelector()"
731
+ ]
732
+ },
733
+ {
734
+ "cell_type": "code",
735
+ "execution_count": null,
736
+ "metadata": {},
737
+ "outputs": [],
738
+ "source": [
739
+ "xs, ys = LinearScale(), LinearScale()\n",
740
+ "data = np.arange(20)\n",
741
+ "line_lasso = Lines(x=data, y=data, scales={\"x\": xs, \"y\": ys})\n",
742
+ "scatter_lasso = Scatter(x=data, y=data, scales={\"x\": xs, \"y\": ys}, colors=[\"skyblue\"])\n",
743
+ "bar_lasso = Bars(x=data, y=data / 2.0, scales={\"x\": xs, \"y\": ys})\n",
744
+ "xax_lasso, yax_lasso = Axis(scale=xs, label=\"X\"), Axis(\n",
745
+ " scale=ys, label=\"Y\", orientation=\"vertical\"\n",
746
+ ")\n",
747
+ "fig_lasso = Figure(\n",
748
+ " marks=[scatter_lasso, line_lasso, bar_lasso],\n",
749
+ " axes=[xax_lasso, yax_lasso],\n",
750
+ " title=\"Lasso Selector Example\",\n",
751
+ " interaction=lasso_sel,\n",
752
+ ")\n",
753
+ "lasso_sel.marks = [scatter_lasso, line_lasso]\n",
754
+ "fig_lasso"
755
+ ]
756
+ },
757
+ {
758
+ "cell_type": "code",
759
+ "execution_count": null,
760
+ "metadata": {},
761
+ "outputs": [],
762
+ "source": [
763
+ "scatter_lasso.selected, line_lasso.selected"
764
+ ]
765
+ },
766
+ {
767
+ "cell_type": "markdown",
768
+ "metadata": {},
769
+ "source": [
770
+ "## Pan Zoom"
771
+ ]
772
+ },
773
+ {
774
+ "cell_type": "code",
775
+ "execution_count": null,
776
+ "metadata": {},
777
+ "outputs": [],
778
+ "source": [
779
+ "xs_pz = DateScale(min=np.datetime64(py_dtime(2007, 1, 1)))\n",
780
+ "ys_pz = LinearScale()\n",
781
+ "line_pz = Lines(\n",
782
+ " x=dates_actual, y=sec2_data, scales={\"x\": xs_pz, \"y\": ys_pz}, colors=[\"red\"]\n",
783
+ ")\n",
784
+ "\n",
785
+ "panzoom = PanZoom(scales={\"x\": [xs_pz], \"y\": [ys_pz]})\n",
786
+ "xax = Axis(scale=xs_pz, label=\"Date\", grids=\"off\")\n",
787
+ "yax = Axis(scale=ys_pz, label=\"Price\", orientation=\"vertical\", grid_lines=\"none\")\n",
788
+ "\n",
789
+ "Figure(marks=[line_pz], axes=[xax, yax], interaction=panzoom)"
790
+ ]
791
+ },
792
+ {
793
+ "cell_type": "markdown",
794
+ "metadata": {},
795
+ "source": [
796
+ "## Hand Draw"
797
+ ]
798
+ },
799
+ {
800
+ "cell_type": "code",
801
+ "execution_count": null,
802
+ "metadata": {},
803
+ "outputs": [],
804
+ "source": [
805
+ "xs_hd = DateScale(min=np.datetime64(py_dtime(2007, 1, 1)))\n",
806
+ "ys_hd = LinearScale()\n",
807
+ "line_hd = Lines(\n",
808
+ " x=dates_actual, y=sec2_data, scales={\"x\": xs_hd, \"y\": ys_hd}, colors=[\"red\"]\n",
809
+ ")\n",
810
+ "\n",
811
+ "handdraw = HandDraw(lines=line_hd)\n",
812
+ "xax = Axis(scale=xs_hd, label=\"Date\", grid_lines=\"none\")\n",
813
+ "yax = Axis(scale=ys_hd, label=\"Price\", orientation=\"vertical\", grid_lines=\"none\")\n",
814
+ "\n",
815
+ "Figure(marks=[line_hd], axes=[xax, yax], interaction=handdraw)"
816
+ ]
817
+ },
818
+ {
819
+ "cell_type": "markdown",
820
+ "metadata": {},
821
+ "source": [
822
+ "# Unified Figure with All Interactions"
823
+ ]
824
+ },
825
+ {
826
+ "cell_type": "code",
827
+ "execution_count": null,
828
+ "metadata": {},
829
+ "outputs": [],
830
+ "source": [
831
+ "dt_x = DateScale(date_format=date_fmt, min=py_dtime(2007, 1, 1))\n",
832
+ "lc1_x = LinearScale()\n",
833
+ "lc2_y = LinearScale()\n",
834
+ "\n",
835
+ "lc2 = Lines(\n",
836
+ " x=np.linspace(0.0, 10.0, len(prices)),\n",
837
+ " y=prices * 0.25,\n",
838
+ " scales={\"x\": lc1_x, \"y\": lc2_y},\n",
839
+ " display_legend=True,\n",
840
+ " labels=[\"Security 1\"],\n",
841
+ ")\n",
842
+ "\n",
843
+ "lc3 = Lines(\n",
844
+ " x=dates_actual,\n",
845
+ " y=sec2_data,\n",
846
+ " scales={\"x\": dt_x, \"y\": lc2_y},\n",
847
+ " colors=[\"red\"],\n",
848
+ " display_legend=True,\n",
849
+ " labels=[\"Security 2\"],\n",
850
+ ")\n",
851
+ "\n",
852
+ "lc4 = Lines(\n",
853
+ " x=np.linspace(0.0, 10.0, len(prices)),\n",
854
+ " y=sec2_data * 0.75,\n",
855
+ " scales={\"x\": LinearScale(min=5, max=10), \"y\": lc2_y},\n",
856
+ " colors=[\"green\"],\n",
857
+ " display_legend=True,\n",
858
+ " labels=[\"Security 2 squared\"],\n",
859
+ ")\n",
860
+ "\n",
861
+ "x_ax1 = Axis(label=\"Date\", scale=dt_x)\n",
862
+ "x_ax2 = Axis(label=\"Time\", scale=lc1_x, side=\"top\", grid_lines=\"none\")\n",
863
+ "x_ay2 = Axis(label=(symbol + \" Price\"), scale=lc2_y, orientation=\"vertical\")\n",
864
+ "\n",
865
+ "\n",
866
+ "fig = Figure(marks=[lc2, lc3, lc4], axes=[x_ax1, x_ax2, x_ay2])"
867
+ ]
868
+ },
869
+ {
870
+ "cell_type": "code",
871
+ "execution_count": null,
872
+ "metadata": {},
873
+ "outputs": [],
874
+ "source": [
875
+ "## declaring the interactions\n",
876
+ "multi_sel = MultiSelector(scale=dt_x, marks=[lc2, lc3])\n",
877
+ "br_intsel = BrushIntervalSelector(scale=lc1_x, marks=[lc2, lc3])\n",
878
+ "index_sel = IndexSelector(scale=dt_x, marks=[lc2, lc3])\n",
879
+ "int_sel = FastIntervalSelector(scale=dt_x, marks=[lc3, lc2])\n",
880
+ "\n",
881
+ "hd = HandDraw(lines=lc2)\n",
882
+ "hd2 = HandDraw(lines=lc3)\n",
883
+ "pz = PanZoom(scales={\"x\": [dt_x], \"y\": [lc2_y]})\n",
884
+ "\n",
885
+ "deb = HTML()\n",
886
+ "deb.value = \"[]\""
887
+ ]
888
+ },
889
+ {
890
+ "cell_type": "code",
891
+ "execution_count": null,
892
+ "metadata": {},
893
+ "outputs": [],
894
+ "source": [
895
+ "## Call back handler for the interactions\n",
896
+ "def test_callback(change):\n",
897
+ " deb.value = str(change.new)\n",
898
+ "\n",
899
+ "\n",
900
+ "multi_sel.observe(test_callback, names=[\"selected\"])\n",
901
+ "br_intsel.observe(test_callback, names=[\"selected\"])\n",
902
+ "index_sel.observe(test_callback, names=[\"selected\"])\n",
903
+ "int_sel.observe(test_callback, names=[\"selected\"])"
904
+ ]
905
+ },
906
+ {
907
+ "cell_type": "code",
908
+ "execution_count": null,
909
+ "metadata": {},
910
+ "outputs": [],
911
+ "source": [
912
+ "from collections import OrderedDict\n",
913
+ "\n",
914
+ "selection_interacts = ToggleButtons(\n",
915
+ " options=OrderedDict(\n",
916
+ " [\n",
917
+ " (\"HandDraw1\", hd),\n",
918
+ " (\"HandDraw2\", hd2),\n",
919
+ " (\"PanZoom\", pz),\n",
920
+ " (\"FastIntervalSelector\", int_sel),\n",
921
+ " (\"IndexSelector\", index_sel),\n",
922
+ " (\"BrushIntervalSelector\", br_intsel),\n",
923
+ " (\"MultiSelector\", multi_sel),\n",
924
+ " (\"None\", None),\n",
925
+ " ]\n",
926
+ " )\n",
927
+ ")\n",
928
+ "\n",
929
+ "link((selection_interacts, \"value\"), (fig, \"interaction\"))\n",
930
+ "VBox([deb, fig, selection_interacts], align_self=\"stretch\")"
931
+ ]
932
+ },
933
+ {
934
+ "cell_type": "code",
935
+ "execution_count": null,
936
+ "metadata": {},
937
+ "outputs": [],
938
+ "source": [
939
+ "# Set the scales of lc4 to the ones of lc2 and check if panzoom pans the two.\n",
940
+ "lc4.scales = lc2.scales"
941
+ ]
942
+ }
943
+ ],
944
+ "metadata": {
945
+ "anaconda-cloud": {},
946
+ "kernelspec": {
947
+ "display_name": "Python 3",
948
+ "language": "python",
949
+ "name": "python3"
950
+ },
951
+ "language_info": {
952
+ "codemirror_mode": {
953
+ "name": "ipython",
954
+ "version": 3
955
+ },
956
+ "file_extension": ".py",
957
+ "mimetype": "text/x-python",
958
+ "name": "python",
959
+ "nbconvert_exporter": "python",
960
+ "pygments_lexer": "ipython3",
961
+ "version": "3.7.6"
962
+ }
963
+ },
964
+ "nbformat": 4,
965
+ "nbformat_minor": 2
966
+ }