j1-template 2022.5.0.rc4 → 2022.5.1.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (413) hide show
  1. checksums.yaml +4 -4
  2. data/_includes/themes/j1/modules/attics/generator.html +5 -13
  3. data/_includes/themes/j1/procedures/global/date-german.proc +67 -0
  4. data/assets/data/banner.html +2 -2
  5. data/assets/data/menu.html +1 -1
  6. data/assets/data/mmenu.html +36 -36
  7. data/assets/themes/j1/adapter/js/attic.js +114 -62
  8. data/assets/themes/j1/adapter/js/cookieConsent.js +42 -25
  9. data/assets/themes/j1/adapter/js/masterslider.js +2 -2
  10. data/assets/themes/j1/adapter/js/mmenu.js +2 -2
  11. data/assets/themes/j1/core/css/themes/unolight/bootstrap.css +28 -3
  12. data/assets/themes/j1/core/css/themes/unolight/bootstrap.min.css +1 -1
  13. data/assets/themes/j1/modules/backstretch/js/backstretch.js +5 -5
  14. data/assets/themes/j1/modules/backstretch/js/backstretch.min.js +1 -1
  15. data/assets/themes/j1/modules/backstretch/js/v2.1.16/backstretch.js +1696 -0
  16. data/assets/themes/j1/modules/backstretch/js/v2.1.16/backstretch.min.js +20 -0
  17. data/assets/themes/j1/modules/backstretch/js/v2.1.18/backstretch.js +1627 -0
  18. data/assets/themes/j1/modules/backstretch/js/v2.1.18/backstretch.min.js +20 -0
  19. data/assets/themes/j1/modules/cryptoJS/js/rc4.js +2 -2
  20. data/assets/themes/j1/modules/mmenuLight/README.md +22 -0
  21. data/assets/themes/j1/modules/mmenuLight/css/mmenu-light.css +224 -243
  22. data/assets/themes/j1/modules/mmenuLight/css/mmenu-light.min.css +3 -3
  23. data/assets/themes/j1/modules/mmenuLight/css/theme/uno/mmenu.css +95 -55
  24. data/assets/themes/j1/modules/mmenuLight/css/theme/uno/mmenu.min.css +1 -1
  25. data/assets/themes/j1/modules/mmenuLight/js/mmenu.js +57 -440
  26. data/assets/themes/j1/modules/mmenuLight/js/mmenu.min.js +4 -15
  27. data/assets/themes/j1/modules/{twemoji/js/picker → themeSwitcher}/LICENSE +21 -21
  28. data/assets/themes/j1/modules/themeSwitcher/README.md +166 -0
  29. data/assets/themes/j1/modules/themeSwitcher/js/switcher.js +2 -2
  30. data/assets/themes/j1/modules/themeSwitcher/js/switcher.min.js +1 -1
  31. data/lib/j1/version.rb +1 -1
  32. data/lib/starter_web/Gemfile +1 -1
  33. data/lib/starter_web/README.md +440 -175
  34. data/lib/starter_web/_config.yml +2 -2
  35. data/lib/starter_web/_data/blocks/banner.yml +1 -1
  36. data/lib/starter_web/_data/modules/attics.yml +12 -0
  37. data/lib/starter_web/_data/modules/defaults/attics.yml +16 -1
  38. data/lib/starter_web/_data/modules/defaults/cookies.yml +1 -1
  39. data/lib/starter_web/_data/modules/navigator_menu.yml +31 -25
  40. data/lib/starter_web/_includes/attributes.asciidoc +2 -0
  41. data/lib/starter_web/_plugins/lunr_index.rb +1 -1
  42. data/lib/starter_web/assets/images/modules/attics/1920x1280/ben-kolde.jpg +0 -0
  43. data/lib/starter_web/assets/images/modules/attics/1920x1280/braden-collum.jpg +0 -0
  44. data/lib/starter_web/assets/images/modules/attics/1920x1280/ev.jpg +0 -0
  45. data/lib/starter_web/assets/images/modules/attics/1920x1280/firmbee-com.jpg +0 -0
  46. data/lib/starter_web/assets/images/modules/attics/1920x1280/max-harlynking.jpg +0 -0
  47. data/lib/starter_web/assets/images/modules/attics/guillaume-bolduc-1920x1280.jpg +0 -0
  48. data/lib/starter_web/assets/images/modules/attics/spacex-1920x1280.jpg +0 -0
  49. data/lib/starter_web/assets/videos/headers/{still → present_videos/still}/underground-broadway.jpg +0 -0
  50. data/lib/starter_web/assets/videos/headers/present_videos/underground-broadway.mp4 +0 -0
  51. data/lib/starter_web/collections/asciidoc_skeletons/simple-post/_posts/yyyy-mm-dd-your-post-name.asciidoc +3 -1
  52. data/lib/starter_web/collections/posts/public/featured/_posts/2021-01-01-about-cookies.adoc +3 -0
  53. data/lib/starter_web/collections/posts/public/featured/_posts/2021-02-01-site-generators.adoc +2 -3
  54. data/lib/starter_web/collections/posts/public/featured/_posts/2022-02-01-about-j1.adoc +3 -0
  55. data/lib/starter_web/collections/posts/public/series/_posts/2020-01-01-post-wiki-series.adoc +3 -0
  56. data/lib/starter_web/collections/posts/public/series/_posts/2020-01-02-post-wiki-series.adoc +3 -0
  57. data/lib/starter_web/collections/posts/public/series/_posts/2020-01-03-post-wiki-series.adoc +3 -0
  58. data/lib/starter_web/index.html +68 -12
  59. data/lib/starter_web/package.json +2 -2
  60. data/lib/starter_web/pages/public/about/features.adoc +119 -0
  61. data/lib/starter_web/pages/public/about/reporting_issues.adoc +78 -0
  62. data/lib/starter_web/pages/public/about/{about_site.adoc → site.adoc} +20 -15
  63. data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/documentation.adoc +3 -0
  64. data/lib/starter_web/pages/public/asciidoc_skeletons/multi-document/multi.adoc +3 -0
  65. data/lib/starter_web/pages/public/asciidoc_skeletons/simple-document/simple.adoc +3 -0
  66. data/lib/starter_web/pages/public/blog/navigator/archive/categoryview.html +3 -0
  67. data/lib/starter_web/pages/public/blog/navigator/archive/dateview.html +4 -1
  68. data/lib/starter_web/pages/public/blog/navigator/archive/tagview.html +4 -1
  69. data/lib/starter_web/pages/public/blog/navigator/archive.html +4 -1
  70. data/lib/starter_web/pages/public/blog/navigator/index.html +4 -1
  71. data/lib/starter_web/pages/public/features/general.adoc +5 -1
  72. data/lib/starter_web/pages/public/features/template.adoc +4 -0
  73. data/lib/starter_web/pages/public/jupyter/examples/distributed/j1-circular-times-table.adoc +3 -0
  74. data/lib/starter_web/pages/public/jupyter/examples/distributed/j1-common-used-widgets.adoc +3 -0
  75. data/lib/starter_web/pages/public/jupyter/examples/distributed/j1-odes-in-python.adoc +3 -0
  76. data/lib/starter_web/pages/public/jupyter/examples/localized/j1_climate-change-forecast.adoc +3 -0
  77. data/lib/starter_web/pages/public/learn/quickstart.adoc +4 -1
  78. data/lib/starter_web/pages/public/learn/roundtrip/100_present_images.adoc +4 -1
  79. data/lib/starter_web/pages/public/learn/roundtrip/100_present_videos.adoc +16 -5
  80. data/lib/starter_web/pages/public/learn/roundtrip/200_typography.adoc +3 -0
  81. data/lib/starter_web/pages/public/learn/roundtrip/300_icon_fonts.adoc +3 -0
  82. data/lib/starter_web/pages/public/learn/roundtrip/400_asciidoc_extensions.adoc +3 -0
  83. data/lib/starter_web/pages/public/learn/roundtrip/410_bs_modals_extentions.adoc +3 -0
  84. data/lib/starter_web/pages/public/learn/roundtrip/420_responsive_tables_extensions.adoc +3 -0
  85. data/lib/starter_web/pages/public/learn/roundtrip/500_themes.adoc +3 -0
  86. data/lib/starter_web/pages/public/learn/roundtrip/600_quicksearch.adoc +6 -2
  87. data/lib/starter_web/pages/public/learn/where_to_go.adoc +3 -0
  88. data/lib/starter_web/pages/public/legal/de/100_copyright.adoc +3 -0
  89. data/lib/starter_web/pages/public/legal/de/100_impress.adoc +3 -0
  90. data/lib/starter_web/pages/public/legal/de/300_privacy.adoc +142 -0
  91. data/lib/starter_web/pages/public/legal/de/400_comment_policy.adoc +3 -0
  92. data/lib/starter_web/pages/public/legal/en/100_copyright.adoc +9 -1
  93. data/lib/starter_web/pages/public/legal/en/200_impress.adoc +10 -2
  94. data/lib/starter_web/pages/public/legal/en/300_privacy.adoc +66 -3
  95. data/lib/starter_web/pages/public/legal/en/400_comment_policy.adoc +3 -0
  96. data/lib/starter_web/pages/public/panels/intro_panel/panel.adoc +3 -0
  97. data/lib/starter_web/pages/public/plans/plans.adoc +3 -0
  98. data/lib/starter_web/pages/public/previewer/preview_bootstrap_theme.adoc +4 -0
  99. data/lib/starter_web/pages/public/se/se-fake.adoc +4 -0
  100. data/lib/starter_web/utilsrv/_defaults/package.json +1 -1
  101. data/lib/starter_web/utilsrv/package.json +1 -1
  102. metadata +22 -372
  103. data/assets/themes/j1/modules/twemoji/css/picker/twemoji-picker.css +0 -153
  104. data/assets/themes/j1/modules/twemoji/css/picker/twemoji-picker.min.css +0 -19
  105. data/assets/themes/j1/modules/twemoji/js/picker/twemoji-picker.js +0 -304
  106. data/assets/themes/j1/modules/twemoji/js/picker/twemoji-picker.min.js +0 -322
  107. data/assets/themes/j1/modules/twemoji/js/twemoji.js +0 -580
  108. data/assets/themes/j1/modules/twemoji/js/twemoji.min.js +0 -19
  109. data/lib/starter_web/assets/videos/headers/still/victoria-oskolovich-on-vimeo.jpg +0 -0
  110. data/lib/starter_web/pages/public/_jupyter/docs/_includes/attributes.asciidoc +0 -67
  111. data/lib/starter_web/pages/public/_jupyter/docs/_includes/documents/j1_docs_example_static.asciidoc +0 -232
  112. data/lib/starter_web/pages/public/_jupyter/docs/binderhub.adoc +0 -631
  113. data/lib/starter_web/pages/public/_jupyter/docs/j1-nbinteract.adoc +0 -638
  114. data/lib/starter_web/pages/public/_jupyter/docs/jupyterhub.adoc +0 -248
  115. data/lib/starter_web/pages/public/_jupyter/docs/nbinteract-widget-manual.adoc +0 -928
  116. data/lib/starter_web/pages/public/_jupyter/examples/distributed/j1-circular-times-table.adoc +0 -139
  117. data/lib/starter_web/pages/public/_jupyter/examples/distributed/j1-common-used-widgets.adoc +0 -229
  118. data/lib/starter_web/pages/public/_jupyter/examples/distributed/j1-odes-in-python.adoc +0 -112
  119. data/lib/starter_web/pages/public/_jupyter/examples/localized/j1-altair/j1-altair-visualisations.adoc +0 -142
  120. data/lib/starter_web/pages/public/_jupyter/examples/localized/j1-bokeh/j1-bokeh-visualisations.adoc +0 -171
  121. data/lib/starter_web/pages/public/_jupyter/examples/localized/j1-bokeh/j1-bqplot-eamples.adoc +0 -111
  122. data/lib/starter_web/pages/public/_jupyter/examples/localized/j1-plotly/j1-plotly-visualisations.adoc +0 -94
  123. data/lib/starter_web/pages/public/_jupyter/examples/localized/j1_climate-change-forecast.adoc +0 -106
  124. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_altair_interactive-checkpoint.ipynb +0 -16260
  125. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_bgplot_line_plot-checkpoint.ipynb +0 -247
  126. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_circular_times_table-Copy1-checkpoint.ipynb +0 -12382
  127. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_circular_times_table-checkpoint.ipynb +0 -12387
  128. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_circular_times_table-short-checkpoint.ipynb +0 -12170
  129. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_climate_change_forecast-checkpoint.ipynb +0 -1058
  130. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_docs_example_dynamic-checkpoint.ipynb +0 -14478
  131. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_interactive_widgets-Copy1-checkpoint.ipynb +0 -379
  132. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_interactive_widgets-checkpoint.ipynb +0 -442
  133. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets-checkpoint.ipynb +0 -523
  134. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets.line_charts-checkpoint.ipynb +0 -84
  135. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets.questions-checkpoint.ipynb +0 -194
  136. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets_bar_chart-checkpoint.ipynb +0 -89
  137. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets_bar_charts-Copy1-checkpoint.ipynb +0 -164
  138. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets_bar_charts-checkpoint.ipynb +0 -173
  139. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets_bar_charts.1-checkpoint.ipynb +0 -256
  140. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets_barcharts-checkpoint.ipynb +0 -126
  141. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets_hist_chart-checkpoint.ipynb +0 -87
  142. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets_line_chart-checkpoint.ipynb +0 -90
  143. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets_line_charts-checkpoint.ipynb +0 -87
  144. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets_question_multiple_choice-checkpoint.ipynb +0 -64
  145. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets_question_short_answer-checkpoint.ipynb +0 -122
  146. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets_questions-checkpoint.ipynb +0 -181
  147. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets_scatter_chart-checkpoint.ipynb +0 -89
  148. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets_scatter_charts-checkpoint.ipynb +0 -175
  149. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets_scatter_drag_chart-checkpoint.ipynb +0 -87
  150. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_ode_selected-checkpoint.ipynb +0 -14478
  151. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_odes_in_python-checkpoint.ipynb +0 -15227
  152. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/factor_by_factor.mp4 +0 -0
  153. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/j1_circular_times_table.ipynb +0 -12382
  154. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/j1_climate_change_forecast.ipynb +0 -1058
  155. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/j1_docs_example_dynamic.ipynb +0 -14478
  156. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/j1_interactive_widgets.ipynb +0 -442
  157. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/j1_nbi_widgets.ipynb +0 -523
  158. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/j1_nbi_widgets_bar_chart.ipynb +0 -89
  159. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/j1_nbi_widgets_hist_chart.ipynb +0 -87
  160. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/j1_nbi_widgets_line_chart.ipynb +0 -90
  161. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/j1_nbi_widgets_question_multiple_choice.ipynb +0 -64
  162. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/j1_nbi_widgets_question_short_answer.ipynb +0 -122
  163. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/j1_nbi_widgets_scatter_chart.ipynb +0 -89
  164. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/j1_nbi_widgets_scatter_drag_chart.ipynb +0 -87
  165. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/j1_odes_in_python.ipynb +0 -15227
  166. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/line_by_line.mp4 +0 -0
  167. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/point_by_point.mp4 +0 -0
  168. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-altair-tutorial/.ipynb_checkpoints/j1_altair_interactive-checkpoint.ipynb +0 -16296
  169. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-altair-tutorial/.ipynb_checkpoints/j1_altair_non_interactive-checkpoint.ipynb +0 -15385
  170. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-altair-tutorial/j1_altair_interactive.ipynb +0 -16296
  171. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-altair-tutorial/j1_altair_non_interactive.ipynb +0 -15385
  172. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/00 - Introduction and Setup-checkpoint.ipynb +0 -717
  173. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/01 - Basic Plotting-checkpoint.ipynb +0 -1381
  174. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/02 - Styling and Theming-checkpoint.ipynb +0 -1440
  175. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/03 - Data Sources and Transformations-checkpoint.ipynb +0 -927
  176. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/04 - Adding Annotations-checkpoint.ipynb +0 -1105
  177. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/05 - Presentation Layouts-checkpoint.ipynb +0 -578
  178. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/06 - Linking and Interactions-checkpoint.ipynb +0 -1196
  179. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/07 - Bar and Categorical Data Plots-checkpoint.ipynb +0 -1681
  180. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/08 - Graph and Network Plots-checkpoint.ipynb +0 -680
  181. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/09 - Geographic Plots-checkpoint.ipynb +0 -693
  182. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/10 - Exporting and Embedding-checkpoint.ipynb +0 -751
  183. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/11 - Running Bokeh Applications-checkpoint.ipynb +0 -770
  184. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/bokeh_tut_00_introduction_and_setup-checkpoint.ipynb +0 -666
  185. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/j1_bokeh_01_basic_plotting-checkpoint.ipynb +0 -1365
  186. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/j1_bokeh_02_styling_and_theming-checkpoint.ipynb +0 -1405
  187. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/j1_bokeh_03_data_sources_and_transformations-checkpoint.ipynb +0 -856
  188. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/j1_bokeh_04_adding_annotations-checkpoint.ipynb +0 -1167
  189. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/j1_bokeh_05_presentation_layouts-checkpoint.ipynb +0 -601
  190. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/j1_bokeh_06_linking_and_interactions-checkpoint.ipynb +0 -1356
  191. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/j1_bokeh_07_bar_and_categorical_data_plots-checkpoint.ipynb +0 -1742
  192. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/j1_bokeh_08_graph_and_network_plots-checkpoint.ipynb +0 -625
  193. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/j1_bokeh_09_geographic_plots-checkpoint.ipynb +0 -685
  194. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/j1_bokeh_10_exporting_and_embedding-checkpoint.ipynb +0 -726
  195. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/j1_bokeh_10_exporting_and_embedding-checkpoint.org +0 -726
  196. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/j1_bokeh_10_exporting_and_embedding.new-checkpoint.ipynb +0 -560
  197. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/j1_bokeh_11_running_bokeh_applications-checkpoint.ipynb +0 -716
  198. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/j1_bokeh_01_basic_plotting.ipynb +0 -1365
  199. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/j1_bokeh_02_styling_and_theming.ipynb +0 -1405
  200. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/j1_bokeh_03_data_sources_and_transformations.ipynb +0 -856
  201. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/j1_bokeh_04_adding_annotations.ipynb +0 -1167
  202. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/j1_bokeh_05_presentation_layouts.ipynb +0 -601
  203. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/j1_bokeh_06_linking_and_interactions.ipynb +0 -1356
  204. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/j1_bokeh_07_bar_and_categorical_data_plots.ipynb +0 -1742
  205. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/j1_bokeh_08_graph_and_network_plots.ipynb +0 -625
  206. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/j1_bokeh_09_geographic_plots.ipynb +0 -685
  207. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bqplot/.ipynb_checkpoints/j1_mathplot_vs_bqplot-checkpoint.ipynb +0 -336
  208. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bqplot/advanced/Feature_Vector_Distribution-Iris-Digits.ipynb +0 -433
  209. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bqplot/j1_bgplot_line_plot.ipynb +0 -244
  210. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bqplot/j1_circular_times_table-short.ipynb +0 -12170
  211. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bqplot/j1_mathplot_vs_bqplot.ipynb +0 -336
  212. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/.ipynb_checkpoints/Index-checkpoint.ipynb +0 -163
  213. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/.ipynb_checkpoints/Tutorials-checkpoint.ipynb +0 -51
  214. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Advanced Plotting/Advanced Plotting.ipynb +0 -289
  215. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Advanced Plotting/Animations.ipynb +0 -266
  216. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Advanced Plotting/Axis Properties.ipynb +0 -396
  217. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Advanced Plotting/Plotting Dates.ipynb +0 -318
  218. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Applications/Equity Index Performance/Time Series.ipynb +0 -158
  219. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Applications/Equity Index Performance/spx_prices.csv +0 -6799
  220. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Applications/Feature_Vector_Distribution-Iris-Digits.ipynb +0 -470
  221. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Applications/Index.ipynb +0 -49
  222. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Applications/Logs Analytics/Logs Dashboard.ipynb +0 -378
  223. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Applications/Mobile Patent Suits.ipynb +0 -123
  224. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Applications/Neural Network.ipynb +0 -177
  225. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Applications/Outlier Detection.ipynb +0 -311
  226. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Applications/Wealth Of Nations/Bubble Chart.ipynb +0 -255
  227. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Applications/Wealth Of Nations/Choropleth.ipynb +0 -275
  228. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Applications/Wealth Of Nations/nations.json +0 -1
  229. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Applications/Wealth Of Nations/world_map_codes.csv +0 -234
  230. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Basic Plotting/.ipynb_checkpoints/Basic Plotting-checkpoint.ipynb +0 -186
  231. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Basic Plotting/.ipynb_checkpoints/Pyplot-checkpoint.ipynb +0 -794
  232. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Basic Plotting/.ipynb_checkpoints/Untitled-checkpoint.ipynb +0 -323
  233. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Basic Plotting/Basic Plotting.ipynb +0 -261
  234. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Basic Plotting/Pyplot.ipynb +0 -1489
  235. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Index.ipynb +0 -163
  236. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Interactions/Interaction Layer.ipynb +0 -966
  237. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Interactions/Mark Interactions.ipynb +0 -476
  238. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Interactions/Selectors.ipynb +0 -427
  239. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Introduction.ipynb +0 -528
  240. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/Bars.ipynb +0 -480
  241. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/Bins.ipynb +0 -217
  242. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/Boxplot.ipynb +0 -253
  243. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/Candles.ipynb +0 -225
  244. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/FlexLine.ipynb +0 -123
  245. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/Graph.ipynb +0 -357
  246. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/GridHeatMap.ipynb +0 -422
  247. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/HeatMap.ipynb +0 -157
  248. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/Hist.ipynb +0 -176
  249. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/Image.ipynb +0 -195
  250. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/Label.ipynb +0 -189
  251. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/Lines.ipynb +0 -565
  252. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/Map.ipynb +0 -182
  253. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/Market Map.ipynb +0 -315
  254. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/Pie.ipynb +0 -465
  255. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/Scatter.ipynb +0 -835
  256. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Pyplot/Bars.ipynb +0 -362
  257. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Pyplot/Bins.ipynb +0 -252
  258. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Pyplot/Boxplot.ipynb +0 -273
  259. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Pyplot/Candles.ipynb +0 -242
  260. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Pyplot/GridHeatMap.ipynb +0 -417
  261. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Pyplot/HeatMap.ipynb +0 -155
  262. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Pyplot/Hist.ipynb +0 -238
  263. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Pyplot/Image.ipynb +0 -152
  264. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Pyplot/Label.ipynb +0 -206
  265. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Pyplot/Lines.ipynb +0 -474
  266. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Pyplot/Map.ipynb +0 -181
  267. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Pyplot/Pie.ipynb +0 -310
  268. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Pyplot/Scatter.ipynb +0 -702
  269. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Scales/Color Scales.ipynb +0 -495
  270. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Tutorials/.ipynb_checkpoints/Feature_Vector_Distribution-Iris-Digits-checkpoint.ipynb +0 -433
  271. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Tutorials/.ipynb_checkpoints/Linking Plots With Widgets-checkpoint.ipynb +0 -326
  272. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Tutorials/.ipynb_checkpoints/Updating Plots-Copy1-checkpoint.ipynb +0 -177
  273. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Tutorials/.ipynb_checkpoints/Updating Plots-checkpoint.ipynb +0 -177
  274. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Tutorials/Brush Interval Selector.ipynb +0 -154
  275. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Tutorials/Fast Interval Selector.ipynb +0 -152
  276. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Tutorials/Gaussian Density Widget.ipynb +0 -128
  277. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Tutorials/Gaussian Density.ipynb +0 -113
  278. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Tutorials/Linking Plots With Widgets.ipynb +0 -326
  279. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Tutorials/Object Model.ipynb +0 -179
  280. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Tutorials/Pyplot.ipynb +0 -174
  281. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Tutorials/Updating Plots.ipynb +0 -177
  282. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Tutorials.ipynb +0 -51
  283. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/data_files/country_codes.csv +0 -213
  284. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/data_files/gdp_per_capita.csv +0 -56
  285. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/data_files/state_codes.csv +0 -52
  286. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/data_files/trees.jpg +0 -0
  287. data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/.ipynb_checkpoints/nbi_docs_examples_central_limit_theorem-checkpoint.ipynb +0 -247
  288. data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/.ipynb_checkpoints/nbi_docs_examples_variability_of_the_sample_mean-checkpoint.ipynb +0 -323
  289. data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/.ipynb_checkpoints/nbi_docs_recipes_graphing-checkpoint.ipynb +0 -387
  290. data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/.ipynb_checkpoints/nbi_docs_recipes_interactive_questions-checkpoint.ipynb +0 -185
  291. data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/.ipynb_checkpoints/nbi_docs_recipes_layout-checkpoint.ipynb +0 -384
  292. data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/.ipynb_checkpoints/nbi_docs_tutorial_interact-checkpoint.ipynb +0 -254
  293. data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/.ipynb_checkpoints/nbi_docs_tutorial_monty_hall-checkpoint.ipynb +0 -732
  294. data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/nbi_docs_examples_central_limit_theorem.ipynb +0 -247
  295. data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/nbi_docs_examples_correlation.ipynb +0 -651
  296. data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/nbi_docs_examples_empirical_distributions.ipynb +0 -773
  297. data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/nbi_docs_examples_linear_regression.ipynb +0 -111
  298. data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/nbi_docs_examples_probability_distribution_plots.ipynb +0 -199
  299. data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/nbi_docs_examples_sampling_from_a_population.ipynb +0 -421
  300. data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/nbi_docs_examples_variability_of_the_sample_mean.ipynb +0 -323
  301. data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/nbi_docs_recipes_graphing.ipynb +0 -387
  302. data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/nbi_docs_recipes_interactive_questions.ipynb +0 -185
  303. data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/nbi_docs_recipes_layout.ipynb +0 -384
  304. data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/nbi_docs_tutorial_interact.ipynb +0 -254
  305. data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/nbi_docs_tutorial_monty_hall.ipynb +0 -732
  306. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Advanced Plotting.html +0 -373
  307. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Animations.html +0 -361
  308. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Axis Properties.html +0 -569
  309. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Bars.html +0 -487
  310. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Basic Plotting.html +0 -341
  311. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Bins.html +0 -259
  312. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Boxplot.html +0 -277
  313. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Brush Interval Selector.html +0 -182
  314. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Bubble Chart.html +0 -299
  315. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Candles.html +0 -252
  316. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Choropleth.html +0 -318
  317. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Color Scales.html +0 -514
  318. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Fast Interval Selector.html +0 -182
  319. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Feature_Vector_Distribution-Iris-Digits.html +0 -479
  320. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/FlexLine.html +0 -128
  321. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Gaussian Density Widget.html +0 -152
  322. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Gaussian Density.html +0 -137
  323. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Graph.html +0 -484
  324. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/GridHeatMap.html +0 -483
  325. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/HeatMap.html +0 -170
  326. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Hist.html +0 -349
  327. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Image.html +0 -177
  328. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Index.html +0 -29
  329. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Interaction Layer.html +0 -1372
  330. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Introduction.html +0 -749
  331. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Label.html +0 -268
  332. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Lines.html +0 -704
  333. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Linking Plots With Widgets.html +0 -389
  334. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Logs Dashboard.html +0 -455
  335. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Map.html +0 -229
  336. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Mark Interactions.html +0 -613
  337. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Market Map.html +0 -413
  338. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Mobile Patent Suits.html +0 -131
  339. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Neural Network.html +0 -190
  340. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Object Model.html +0 -193
  341. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Outlier Detection.html +0 -363
  342. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Pie.html +0 -367
  343. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Plotting Dates.html +0 -337
  344. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Pyplot.html +0 -196
  345. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Scatter.html +0 -948
  346. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Selectors.html +0 -489
  347. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Time Series.html +0 -173
  348. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Tutorials.html +0 -40
  349. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Updating Plots.html +0 -228
  350. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_altair_interactive.html +0 -2216
  351. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_altair_non_interactive.html +0 -1170
  352. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_bgplot_line_plot.html +0 -318
  353. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_bokeh_01_basic_plotting.html +0 -1479
  354. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_bokeh_02_styling_and_theming.html +0 -1524
  355. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_bokeh_03_data_sources_and_transformations.html +0 -983
  356. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_bokeh_04_adding_annotations.html +0 -1280
  357. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_bokeh_05_presentation_layouts.html +0 -660
  358. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_bokeh_06_linking_and_interactions.html +0 -1563
  359. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_bokeh_07_bar_and_categorical_data_plots.html +0 -1888
  360. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_bokeh_08_graph_and_network_plots.html +0 -689
  361. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_bokeh_09_geographic_plots.html +0 -767
  362. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_circular_times_table-short.html +0 -475
  363. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_circular_times_table.html +0 -747
  364. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_climate_change_forecast.html +0 -1250
  365. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_docs_example_dynamic.html +0 -186
  366. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_interactive_widgets.html +0 -512
  367. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_mathplot_vs_bqplot.html +0 -407
  368. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_nbi_widgets.html +0 -629
  369. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_nbi_widgets_bar_chart.html +0 -95
  370. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_nbi_widgets_hist_chart.html +0 -93
  371. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_nbi_widgets_line_chart.html +0 -96
  372. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_nbi_widgets_question_multiple_choice.html +0 -70
  373. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_nbi_widgets_question_short_answer.html +0 -156
  374. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_nbi_widgets_scatter_chart.html +0 -95
  375. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_nbi_widgets_scatter_drag_chart.html +0 -93
  376. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_odes_in_python.html +0 -955
  377. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/nbi_docs_examples_central_limit_theorem.html +0 -290
  378. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/nbi_docs_examples_correlation.html +0 -818
  379. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/nbi_docs_examples_empirical_distributions.html +0 -351
  380. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/nbi_docs_examples_linear_regression.html +0 -106
  381. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/nbi_docs_examples_probability_distribution_plots.html +0 -228
  382. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/nbi_docs_examples_sampling_from_a_population.html +0 -518
  383. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/nbi_docs_examples_variability_of_the_sample_mean.html +0 -372
  384. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/nbi_docs_recipes_graphing.html +0 -473
  385. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/nbi_docs_recipes_interactive_questions.html +0 -242
  386. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/nbi_docs_recipes_layout.html +0 -496
  387. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/nbi_docs_tutorial_interact.html +0 -329
  388. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/nbi_docs_tutorial_monty_hall.html +0 -866
  389. data/lib/starter_web/pages/public/_jupyter/where_to_go.adoc +0 -270
  390. data/lib/starter_web/pages/public/learn/_roundtrip/100_present_images.adoc +0 -313
  391. data/lib/starter_web/pages/public/learn/_roundtrip/100_present_videos.adoc +0 -281
  392. data/lib/starter_web/pages/public/learn/_roundtrip/200_typography.adoc +0 -253
  393. data/lib/starter_web/pages/public/learn/_roundtrip/300_icon_fonts.adoc +0 -579
  394. data/lib/starter_web/pages/public/learn/_roundtrip/400_asciidoc_extensions.adoc +0 -718
  395. data/lib/starter_web/pages/public/learn/_roundtrip/410_bs_modals_extentions.adoc +0 -91
  396. data/lib/starter_web/pages/public/learn/_roundtrip/420_responsive_tables_extensions.adoc +0 -420
  397. data/lib/starter_web/pages/public/learn/_roundtrip/500_themes.adoc +0 -250
  398. data/lib/starter_web/pages/public/learn/_roundtrip/600_quicksearch.adoc +0 -425
  399. data/lib/starter_web/pages/public/learn/_roundtrip/_includes/attributes.asciidoc +0 -118
  400. data/lib/starter_web/pages/public/learn/_roundtrip/_includes/documents/100_gistblock.asciidoc +0 -28
  401. data/lib/starter_web/pages/public/learn/_roundtrip/_includes/documents/410_bottom_info.asciidoc +0 -14
  402. data/lib/starter_web/pages/public/learn/_roundtrip/_includes/documents/410_bottom_left_warning.asciidoc +0 -11
  403. data/lib/starter_web/pages/public/learn/_roundtrip/_includes/documents/410_bottom_right_danger.asciidoc +0 -11
  404. data/lib/starter_web/pages/public/learn/_roundtrip/_includes/documents/410_central_success.asciidoc +0 -11
  405. data/lib/starter_web/pages/public/learn/_roundtrip/_includes/documents/410_full_height_left_info.asciidoc +0 -11
  406. data/lib/starter_web/pages/public/learn/_roundtrip/_includes/documents/410_full_height_right_success.asciidoc +0 -11
  407. data/lib/starter_web/pages/public/learn/_roundtrip/_includes/documents/410_table_bs_modal_examples.asciidoc +0 -47
  408. data/lib/starter_web/pages/public/learn/_roundtrip/_includes/documents/410_top_info.asciidoc +0 -11
  409. data/lib/starter_web/pages/public/learn/_roundtrip/_includes/documents/410_top_left_info.asciidoc +0 -11
  410. data/lib/starter_web/pages/public/learn/_roundtrip/_includes/documents/410_top_right_success.asciidoc +0 -11
  411. data/lib/starter_web/pages/public/learn/_roundtrip/_includes/documents/419_advanced_modals_demo.asciidoc +0 -337
  412. data/lib/starter_web/pages/public/learn/_roundtrip/_includes/documents/tables/bs_modal_examples.asciidoc +0 -47
  413. data/lib/starter_web/pages/public/learn/_roundtrip/_includes/google-ad.js +0 -130
@@ -1,2216 +0,0 @@
1
- <div class="cell text_cell">
2
- <button class="js-nbinteract-widget">
3
- Loading widgets...
4
- </button>
5
- </div>
6
-
7
-
8
-
9
- <div class="cell border-box-sizing text_cell rendered"><div class="inner_cell">
10
- <div class="text_cell_render border-box-sizing rendered_html">
11
- <h2 id="Resources">Resources<a class="anchor-link" href="#Resources">&#182;</a></h2>
12
- </div>
13
- </div>
14
- </div>
15
-
16
-
17
-
18
- <div class="
19
- cell border-box-sizing code_cell rendered">
20
- <div class="input">
21
-
22
- <div class="inner_cell">
23
- <div class="input_area">
24
- <div class=" highlight hl-ipython3"><pre><span></span><span class="kn">import</span> <span class="nn">warnings</span>
25
- <span class="n">warnings</span><span class="o">.</span><span class="n">filterwarnings</span><span class="p">(</span><span class="s2">&quot;ignore&quot;</span><span class="p">)</span>
26
-
27
- <span class="kn">import</span> <span class="nn">pandas</span> <span class="k">as</span> <span class="nn">pd</span>
28
- <span class="kn">import</span> <span class="nn">altair</span> <span class="k">as</span> <span class="nn">alt</span>
29
- <span class="kn">from</span> <span class="nn">vega_datasets</span> <span class="kn">import</span> <span class="n">data</span>
30
- </pre></div>
31
-
32
- </div>
33
- </div>
34
- </div>
35
-
36
- </div>
37
- <div class="cell border-box-sizing text_cell rendered"><div class="inner_cell">
38
- <div class="text_cell_render border-box-sizing rendered_html">
39
- <h2 id="Interactive-Visualization">Interactive Visualization<a class="anchor-link" href="#Interactive-Visualization">&#182;</a></h2><p>Interactive charts can use one or more of these elements to create rich interactivity between the viewer and the data. Selections in Altair come in a few flavors, and they can be bound to particular charts or sub-charts in your visualization, then referenced in other parts of the visualization. Let’s create a simple chart and then add some selections to it. Here is a simple scatter-plot created from the cars dataset:</p>
40
-
41
- </div>
42
- </div>
43
- </div>
44
-
45
-
46
-
47
- <div class="
48
- cell border-box-sizing code_cell rendered">
49
- <div class="input">
50
-
51
- <div class="inner_cell">
52
- <div class="input_area">
53
- <div class=" highlight hl-ipython3"><pre><span></span><span class="n">cars</span> <span class="o">=</span> <span class="n">data</span><span class="o">.</span><span class="n">cars</span><span class="o">.</span><span class="n">url</span>
54
-
55
- <span class="n">alt</span><span class="o">.</span><span class="n">Chart</span><span class="p">(</span><span class="n">cars</span><span class="p">)</span><span class="o">.</span><span class="n">mark_point</span><span class="p">()</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span>
56
- <span class="n">x</span><span class="o">=</span><span class="s1">&#39;Miles_per_Gallon:Q&#39;</span><span class="p">,</span>
57
- <span class="n">y</span><span class="o">=</span><span class="s1">&#39;Horsepower:Q&#39;</span><span class="p">,</span>
58
- <span class="n">color</span><span class="o">=</span><span class="s1">&#39;Origin:N&#39;</span>
59
- <span class="p">)</span><span class="o">.</span><span class="n">properties</span><span class="p">(</span>
60
- <span class="n">width</span><span class="o">=</span><span class="mi">800</span><span class="p">,</span>
61
- <span class="n">height</span><span class="o">=</span><span class="mi">400</span>
62
- <span class="p">)</span>
63
- </pre></div>
64
-
65
- </div>
66
- </div>
67
- </div>
68
-
69
- <div class="output_wrapper">
70
- <div class="output">
71
-
72
-
73
- <div class="output_area">
74
-
75
-
76
-
77
-
78
- <div class="output_html rendered_html output_subarea output_execute_result">
79
-
80
- <div id="altair-viz-db12a028322746ac80da573f8f9061e8"></div>
81
- <script type="text/javascript">
82
- var VEGA_DEBUG = (typeof VEGA_DEBUG == "undefined") ? {} : VEGA_DEBUG;
83
- (function(spec, embedOpt){
84
- let outputDiv = document.currentScript.previousElementSibling;
85
- if (outputDiv.id !== "altair-viz-db12a028322746ac80da573f8f9061e8") {
86
- outputDiv = document.getElementById("altair-viz-db12a028322746ac80da573f8f9061e8");
87
- }
88
- const paths = {
89
- "vega": "https://cdn.jsdelivr.net/npm//vega@5?noext",
90
- "vega-lib": "https://cdn.jsdelivr.net/npm//vega-lib?noext",
91
- "vega-lite": "https://cdn.jsdelivr.net/npm//vega-lite@4.17.0?noext",
92
- "vega-embed": "https://cdn.jsdelivr.net/npm//vega-embed@6?noext",
93
- };
94
-
95
- function maybeLoadScript(lib, version) {
96
- var key = `${lib.replace("-", "")}_version`;
97
- return (VEGA_DEBUG[key] == version) ?
98
- Promise.resolve(paths[lib]) :
99
- new Promise(function(resolve, reject) {
100
- var s = document.createElement('script');
101
- document.getElementsByTagName("head")[0].appendChild(s);
102
- s.async = true;
103
- s.onload = () => {
104
- VEGA_DEBUG[key] = version;
105
- return resolve(paths[lib]);
106
- };
107
- s.onerror = () => reject(`Error loading script: ${paths[lib]}`);
108
- s.src = paths[lib];
109
- });
110
- }
111
-
112
- function showError(err) {
113
- outputDiv.innerHTML = `<div class="error" style="color:red;">${err}</div>`;
114
- throw err;
115
- }
116
-
117
- function displayChart(vegaEmbed) {
118
- vegaEmbed(outputDiv, spec, embedOpt)
119
- .catch(err => showError(`Javascript Error: ${err.message}<br>This usually means there's a typo in your chart specification. See the javascript console for the full traceback.`));
120
- }
121
-
122
- if(typeof define === "function" && define.amd) {
123
- requirejs.config({paths});
124
- require(["vega-embed"], displayChart, err => showError(`Error loading script: ${err.message}`));
125
- } else {
126
- maybeLoadScript("vega", "5")
127
- .then(() => maybeLoadScript("vega-lite", "4.17.0"))
128
- .then(() => maybeLoadScript("vega-embed", "6"))
129
- .catch(showError)
130
- .then(() => displayChart(vegaEmbed));
131
- }
132
- })({"config": {"view": {"continuousWidth": 400, "continuousHeight": 300}}, "data": {"url": "https://cdn.jsdelivr.net/npm/vega-datasets@v1.29.0/data/cars.json"}, "mark": "point", "encoding": {"color": {"field": "Origin", "type": "nominal"}, "x": {"field": "Miles_per_Gallon", "type": "quantitative"}, "y": {"field": "Horsepower", "type": "quantitative"}}, "height": 400, "width": 800, "$schema": "https://vega.github.io/schema/vega-lite/v4.17.0.json"}, {"mode": "vega-lite"});
133
- </script>
134
- </div>
135
-
136
- </div>
137
-
138
- </div>
139
- </div>
140
-
141
- </div>
142
- <div class="cell border-box-sizing text_cell rendered"><div class="inner_cell">
143
- <div class="text_cell_render border-box-sizing rendered_html">
144
- <p>First we’ll create an interval selection using the selection_interval() function. We can now bind this brush to our chart by setting the selection property. The result below is a chart that allows you to click and drag to create a selection region (the brush), and to move this region once the region is created.</p>
145
-
146
- </div>
147
- </div>
148
- </div>
149
-
150
-
151
-
152
- <div class="
153
- cell border-box-sizing code_cell rendered">
154
- <div class="input">
155
-
156
- <div class="inner_cell">
157
- <div class="input_area">
158
- <div class=" highlight hl-ipython3"><pre><span></span><span class="n">brush</span> <span class="o">=</span> <span class="n">alt</span><span class="o">.</span><span class="n">selection_interval</span><span class="p">()</span> <span class="c1"># selection of type &quot;interval&quot;</span>
159
-
160
- <span class="n">alt</span><span class="o">.</span><span class="n">Chart</span><span class="p">(</span><span class="n">cars</span><span class="p">)</span><span class="o">.</span><span class="n">mark_point</span><span class="p">()</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span>
161
- <span class="n">x</span><span class="o">=</span><span class="s1">&#39;Miles_per_Gallon:Q&#39;</span><span class="p">,</span>
162
- <span class="n">y</span><span class="o">=</span><span class="s1">&#39;Horsepower:Q&#39;</span><span class="p">,</span>
163
- <span class="n">color</span><span class="o">=</span><span class="s1">&#39;Origin:N&#39;</span>
164
- <span class="p">)</span><span class="o">.</span><span class="n">add_selection</span><span class="p">(</span>
165
- <span class="n">brush</span>
166
- <span class="p">)</span><span class="o">.</span><span class="n">properties</span><span class="p">(</span>
167
- <span class="n">width</span><span class="o">=</span><span class="mi">800</span><span class="p">,</span>
168
- <span class="n">height</span><span class="o">=</span><span class="mi">400</span>
169
- <span class="p">)</span>
170
- </pre></div>
171
-
172
- </div>
173
- </div>
174
- </div>
175
-
176
- <div class="output_wrapper">
177
- <div class="output">
178
-
179
-
180
- <div class="output_area">
181
-
182
-
183
-
184
-
185
- <div class="output_html rendered_html output_subarea output_execute_result">
186
-
187
- <div id="altair-viz-1149fcb518b44b2ca4949690b06e4feb"></div>
188
- <script type="text/javascript">
189
- var VEGA_DEBUG = (typeof VEGA_DEBUG == "undefined") ? {} : VEGA_DEBUG;
190
- (function(spec, embedOpt){
191
- let outputDiv = document.currentScript.previousElementSibling;
192
- if (outputDiv.id !== "altair-viz-1149fcb518b44b2ca4949690b06e4feb") {
193
- outputDiv = document.getElementById("altair-viz-1149fcb518b44b2ca4949690b06e4feb");
194
- }
195
- const paths = {
196
- "vega": "https://cdn.jsdelivr.net/npm//vega@5?noext",
197
- "vega-lib": "https://cdn.jsdelivr.net/npm//vega-lib?noext",
198
- "vega-lite": "https://cdn.jsdelivr.net/npm//vega-lite@4.17.0?noext",
199
- "vega-embed": "https://cdn.jsdelivr.net/npm//vega-embed@6?noext",
200
- };
201
-
202
- function maybeLoadScript(lib, version) {
203
- var key = `${lib.replace("-", "")}_version`;
204
- return (VEGA_DEBUG[key] == version) ?
205
- Promise.resolve(paths[lib]) :
206
- new Promise(function(resolve, reject) {
207
- var s = document.createElement('script');
208
- document.getElementsByTagName("head")[0].appendChild(s);
209
- s.async = true;
210
- s.onload = () => {
211
- VEGA_DEBUG[key] = version;
212
- return resolve(paths[lib]);
213
- };
214
- s.onerror = () => reject(`Error loading script: ${paths[lib]}`);
215
- s.src = paths[lib];
216
- });
217
- }
218
-
219
- function showError(err) {
220
- outputDiv.innerHTML = `<div class="error" style="color:red;">${err}</div>`;
221
- throw err;
222
- }
223
-
224
- function displayChart(vegaEmbed) {
225
- vegaEmbed(outputDiv, spec, embedOpt)
226
- .catch(err => showError(`Javascript Error: ${err.message}<br>This usually means there's a typo in your chart specification. See the javascript console for the full traceback.`));
227
- }
228
-
229
- if(typeof define === "function" && define.amd) {
230
- requirejs.config({paths});
231
- require(["vega-embed"], displayChart, err => showError(`Error loading script: ${err.message}`));
232
- } else {
233
- maybeLoadScript("vega", "5")
234
- .then(() => maybeLoadScript("vega-lite", "4.17.0"))
235
- .then(() => maybeLoadScript("vega-embed", "6"))
236
- .catch(showError)
237
- .then(() => displayChart(vegaEmbed));
238
- }
239
- })({"config": {"view": {"continuousWidth": 400, "continuousHeight": 300}}, "data": {"url": "https://cdn.jsdelivr.net/npm/vega-datasets@v1.29.0/data/cars.json"}, "mark": "point", "encoding": {"color": {"field": "Origin", "type": "nominal"}, "x": {"field": "Miles_per_Gallon", "type": "quantitative"}, "y": {"field": "Horsepower", "type": "quantitative"}}, "height": 400, "selection": {"selector001": {"type": "interval"}}, "width": 800, "$schema": "https://vega.github.io/schema/vega-lite/v4.17.0.json"}, {"mode": "vega-lite"});
240
- </script>
241
- </div>
242
-
243
- </div>
244
-
245
- </div>
246
- </div>
247
-
248
- </div>
249
- <div class="cell border-box-sizing text_cell rendered"><div class="inner_cell">
250
- <div class="text_cell_render border-box-sizing rendered_html">
251
- <h3 id="Conditions:-Making-the-chart-respond">Conditions: Making the chart respond<a class="anchor-link" href="#Conditions:-Making-the-chart-respond">&#182;</a></h3><p>This is neat, but the selection doesn’t actually do anything yet. To use this selection, we need to reference it in some way within the chart. Here, we will use the condition() function to create a conditional color encoding: we’ll tie the color to the "Origin" column for points in the selection, and set the color to "lightgray" for points outside the selection:</p>
252
-
253
- </div>
254
- </div>
255
- </div>
256
-
257
-
258
-
259
- <div class="
260
- cell border-box-sizing code_cell rendered">
261
- <div class="input">
262
-
263
- <div class="inner_cell">
264
- <div class="input_area">
265
- <div class=" highlight hl-ipython3"><pre><span></span><span class="n">alt</span><span class="o">.</span><span class="n">Chart</span><span class="p">(</span><span class="n">cars</span><span class="p">)</span><span class="o">.</span><span class="n">mark_point</span><span class="p">()</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span>
266
- <span class="n">x</span><span class="o">=</span><span class="s1">&#39;Miles_per_Gallon:Q&#39;</span><span class="p">,</span>
267
- <span class="n">y</span><span class="o">=</span><span class="s1">&#39;Horsepower:Q&#39;</span><span class="p">,</span>
268
- <span class="n">color</span><span class="o">=</span><span class="n">alt</span><span class="o">.</span><span class="n">condition</span><span class="p">(</span><span class="n">brush</span><span class="p">,</span> <span class="s1">&#39;Origin:N&#39;</span><span class="p">,</span> <span class="n">alt</span><span class="o">.</span><span class="n">value</span><span class="p">(</span><span class="s1">&#39;lightgray&#39;</span><span class="p">))</span>
269
- <span class="p">)</span><span class="o">.</span><span class="n">add_selection</span><span class="p">(</span>
270
- <span class="n">brush</span>
271
- <span class="p">)</span><span class="o">.</span><span class="n">properties</span><span class="p">(</span>
272
- <span class="n">width</span><span class="o">=</span><span class="mi">800</span><span class="p">,</span>
273
- <span class="n">height</span><span class="o">=</span><span class="mi">400</span>
274
- <span class="p">)</span>
275
- </pre></div>
276
-
277
- </div>
278
- </div>
279
- </div>
280
-
281
- <div class="output_wrapper">
282
- <div class="output">
283
-
284
-
285
- <div class="output_area">
286
-
287
-
288
-
289
-
290
- <div class="output_html rendered_html output_subarea output_execute_result">
291
-
292
- <div id="altair-viz-cd659585be6a4874852b143ec4853056"></div>
293
- <script type="text/javascript">
294
- var VEGA_DEBUG = (typeof VEGA_DEBUG == "undefined") ? {} : VEGA_DEBUG;
295
- (function(spec, embedOpt){
296
- let outputDiv = document.currentScript.previousElementSibling;
297
- if (outputDiv.id !== "altair-viz-cd659585be6a4874852b143ec4853056") {
298
- outputDiv = document.getElementById("altair-viz-cd659585be6a4874852b143ec4853056");
299
- }
300
- const paths = {
301
- "vega": "https://cdn.jsdelivr.net/npm//vega@5?noext",
302
- "vega-lib": "https://cdn.jsdelivr.net/npm//vega-lib?noext",
303
- "vega-lite": "https://cdn.jsdelivr.net/npm//vega-lite@4.17.0?noext",
304
- "vega-embed": "https://cdn.jsdelivr.net/npm//vega-embed@6?noext",
305
- };
306
-
307
- function maybeLoadScript(lib, version) {
308
- var key = `${lib.replace("-", "")}_version`;
309
- return (VEGA_DEBUG[key] == version) ?
310
- Promise.resolve(paths[lib]) :
311
- new Promise(function(resolve, reject) {
312
- var s = document.createElement('script');
313
- document.getElementsByTagName("head")[0].appendChild(s);
314
- s.async = true;
315
- s.onload = () => {
316
- VEGA_DEBUG[key] = version;
317
- return resolve(paths[lib]);
318
- };
319
- s.onerror = () => reject(`Error loading script: ${paths[lib]}`);
320
- s.src = paths[lib];
321
- });
322
- }
323
-
324
- function showError(err) {
325
- outputDiv.innerHTML = `<div class="error" style="color:red;">${err}</div>`;
326
- throw err;
327
- }
328
-
329
- function displayChart(vegaEmbed) {
330
- vegaEmbed(outputDiv, spec, embedOpt)
331
- .catch(err => showError(`Javascript Error: ${err.message}<br>This usually means there's a typo in your chart specification. See the javascript console for the full traceback.`));
332
- }
333
-
334
- if(typeof define === "function" && define.amd) {
335
- requirejs.config({paths});
336
- require(["vega-embed"], displayChart, err => showError(`Error loading script: ${err.message}`));
337
- } else {
338
- maybeLoadScript("vega", "5")
339
- .then(() => maybeLoadScript("vega-lite", "4.17.0"))
340
- .then(() => maybeLoadScript("vega-embed", "6"))
341
- .catch(showError)
342
- .then(() => displayChart(vegaEmbed));
343
- }
344
- })({"config": {"view": {"continuousWidth": 400, "continuousHeight": 300}}, "data": {"url": "https://cdn.jsdelivr.net/npm/vega-datasets@v1.29.0/data/cars.json"}, "mark": "point", "encoding": {"color": {"condition": {"field": "Origin", "type": "nominal", "selection": "selector001"}, "value": "lightgray"}, "x": {"field": "Miles_per_Gallon", "type": "quantitative"}, "y": {"field": "Horsepower", "type": "quantitative"}}, "height": 400, "selection": {"selector001": {"type": "interval"}}, "width": 800, "$schema": "https://vega.github.io/schema/vega-lite/v4.17.0.json"}, {"mode": "vega-lite"});
345
- </script>
346
- </div>
347
-
348
- </div>
349
-
350
- </div>
351
- </div>
352
-
353
- </div>
354
- <div class="cell border-box-sizing text_cell rendered"><div class="inner_cell">
355
- <div class="text_cell_render border-box-sizing rendered_html">
356
- <p>As you can see, with this simple change, the color of the points responds to the selection.</p>
357
- <p>This approach becomes even more powerful when the selection behavior is tied across multiple views of the data within a compound chart. For example, here we create a chart object using the same code as above, and horizontally concatenate two versions of this chart: one with the x-encoding tied to "Acceleration", and one with the x-encoding tied to "Miles_per_Gallon"</p>
358
-
359
- </div>
360
- </div>
361
- </div>
362
-
363
-
364
-
365
- <div class="
366
- cell border-box-sizing code_cell rendered">
367
- <div class="input">
368
-
369
- <div class="inner_cell">
370
- <div class="input_area">
371
- <div class=" highlight hl-ipython3"><pre><span></span><span class="n">chart</span> <span class="o">=</span> <span class="n">alt</span><span class="o">.</span><span class="n">Chart</span><span class="p">(</span><span class="n">cars</span><span class="p">)</span><span class="o">.</span><span class="n">mark_point</span><span class="p">()</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span>
372
- <span class="n">y</span><span class="o">=</span><span class="s1">&#39;Horsepower:Q&#39;</span><span class="p">,</span>
373
- <span class="n">color</span><span class="o">=</span><span class="n">alt</span><span class="o">.</span><span class="n">condition</span><span class="p">(</span><span class="n">brush</span><span class="p">,</span> <span class="s1">&#39;Origin:N&#39;</span><span class="p">,</span> <span class="n">alt</span><span class="o">.</span><span class="n">value</span><span class="p">(</span><span class="s1">&#39;lightgray&#39;</span><span class="p">))</span>
374
- <span class="p">)</span><span class="o">.</span><span class="n">properties</span><span class="p">(</span>
375
- <span class="n">width</span><span class="o">=</span><span class="mi">400</span><span class="p">,</span>
376
- <span class="n">height</span><span class="o">=</span><span class="mi">400</span>
377
- <span class="p">)</span><span class="o">.</span><span class="n">add_selection</span><span class="p">(</span>
378
- <span class="n">brush</span>
379
- <span class="p">)</span>
380
-
381
- <span class="n">chart</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="n">x</span><span class="o">=</span><span class="s1">&#39;Acceleration:Q&#39;</span><span class="p">)</span> <span class="o">|</span> <span class="n">chart</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="n">x</span><span class="o">=</span><span class="s1">&#39;Miles_per_Gallon:Q&#39;</span><span class="p">)</span>
382
- </pre></div>
383
-
384
- </div>
385
- </div>
386
- </div>
387
-
388
- <div class="output_wrapper">
389
- <div class="output">
390
-
391
-
392
- <div class="output_area">
393
-
394
-
395
-
396
-
397
- <div class="output_html rendered_html output_subarea output_execute_result">
398
-
399
- <div id="altair-viz-7fe614eb5ffb42dabd890c2c042fe8bc"></div>
400
- <script type="text/javascript">
401
- var VEGA_DEBUG = (typeof VEGA_DEBUG == "undefined") ? {} : VEGA_DEBUG;
402
- (function(spec, embedOpt){
403
- let outputDiv = document.currentScript.previousElementSibling;
404
- if (outputDiv.id !== "altair-viz-7fe614eb5ffb42dabd890c2c042fe8bc") {
405
- outputDiv = document.getElementById("altair-viz-7fe614eb5ffb42dabd890c2c042fe8bc");
406
- }
407
- const paths = {
408
- "vega": "https://cdn.jsdelivr.net/npm//vega@5?noext",
409
- "vega-lib": "https://cdn.jsdelivr.net/npm//vega-lib?noext",
410
- "vega-lite": "https://cdn.jsdelivr.net/npm//vega-lite@4.17.0?noext",
411
- "vega-embed": "https://cdn.jsdelivr.net/npm//vega-embed@6?noext",
412
- };
413
-
414
- function maybeLoadScript(lib, version) {
415
- var key = `${lib.replace("-", "")}_version`;
416
- return (VEGA_DEBUG[key] == version) ?
417
- Promise.resolve(paths[lib]) :
418
- new Promise(function(resolve, reject) {
419
- var s = document.createElement('script');
420
- document.getElementsByTagName("head")[0].appendChild(s);
421
- s.async = true;
422
- s.onload = () => {
423
- VEGA_DEBUG[key] = version;
424
- return resolve(paths[lib]);
425
- };
426
- s.onerror = () => reject(`Error loading script: ${paths[lib]}`);
427
- s.src = paths[lib];
428
- });
429
- }
430
-
431
- function showError(err) {
432
- outputDiv.innerHTML = `<div class="error" style="color:red;">${err}</div>`;
433
- throw err;
434
- }
435
-
436
- function displayChart(vegaEmbed) {
437
- vegaEmbed(outputDiv, spec, embedOpt)
438
- .catch(err => showError(`Javascript Error: ${err.message}<br>This usually means there's a typo in your chart specification. See the javascript console for the full traceback.`));
439
- }
440
-
441
- if(typeof define === "function" && define.amd) {
442
- requirejs.config({paths});
443
- require(["vega-embed"], displayChart, err => showError(`Error loading script: ${err.message}`));
444
- } else {
445
- maybeLoadScript("vega", "5")
446
- .then(() => maybeLoadScript("vega-lite", "4.17.0"))
447
- .then(() => maybeLoadScript("vega-embed", "6"))
448
- .catch(showError)
449
- .then(() => displayChart(vegaEmbed));
450
- }
451
- })({"config": {"view": {"continuousWidth": 400, "continuousHeight": 300}}, "hconcat": [{"mark": "point", "encoding": {"color": {"condition": {"field": "Origin", "type": "nominal", "selection": "selector002"}, "value": "lightgray"}, "x": {"field": "Acceleration", "type": "quantitative"}, "y": {"field": "Horsepower", "type": "quantitative"}}, "height": 400, "selection": {"selector002": {"type": "interval", "encodings": ["x"]}}, "width": 400}, {"mark": "point", "encoding": {"color": {"condition": {"field": "Origin", "type": "nominal", "selection": "selector002"}, "value": "lightgray"}, "x": {"field": "Miles_per_Gallon", "type": "quantitative"}, "y": {"field": "Horsepower", "type": "quantitative"}}, "height": 400, "selection": {"selector002": {"type": "interval", "encodings": ["x"]}}, "width": 400}], "data": {"url": "https://cdn.jsdelivr.net/npm/vega-datasets@v1.29.0/data/cars.json"}, "$schema": "https://vega.github.io/schema/vega-lite/v4.17.0.json"}, {"mode": "vega-lite"});
452
- </script>
453
- </div>
454
-
455
- </div>
456
-
457
- </div>
458
- </div>
459
-
460
- </div>
461
- <div class="cell border-box-sizing text_cell rendered"><div class="inner_cell">
462
- <div class="text_cell_render border-box-sizing rendered_html">
463
- <p>Because both copies of the chart reference the same selection object, the renderer ties the selections together across panels, leading to a dynamic display that helps you gain insight into the relationships within the dataset.</p>
464
- <p>Each selection type has attributes through which its behavior can be customized; for example we might wish for our brush to be tied only to the "x" encoding to emphasize that feature in the data. We can modify the brush definition, and leave the rest of the code unchanged:</p>
465
-
466
- </div>
467
- </div>
468
- </div>
469
-
470
-
471
-
472
- <div class="
473
- cell border-box-sizing code_cell rendered">
474
- <div class="input">
475
-
476
- <div class="inner_cell">
477
- <div class="input_area">
478
- <div class=" highlight hl-ipython3"><pre><span></span><span class="n">brush</span> <span class="o">=</span> <span class="n">alt</span><span class="o">.</span><span class="n">selection_interval</span><span class="p">(</span><span class="n">encodings</span><span class="o">=</span><span class="p">[</span><span class="s1">&#39;x&#39;</span><span class="p">])</span>
479
-
480
- <span class="n">chart</span> <span class="o">=</span> <span class="n">alt</span><span class="o">.</span><span class="n">Chart</span><span class="p">(</span><span class="n">cars</span><span class="p">)</span><span class="o">.</span><span class="n">mark_point</span><span class="p">()</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span>
481
- <span class="n">y</span><span class="o">=</span><span class="s1">&#39;Horsepower:Q&#39;</span><span class="p">,</span>
482
- <span class="n">color</span><span class="o">=</span><span class="n">alt</span><span class="o">.</span><span class="n">condition</span><span class="p">(</span><span class="n">brush</span><span class="p">,</span> <span class="s1">&#39;Origin:N&#39;</span><span class="p">,</span> <span class="n">alt</span><span class="o">.</span><span class="n">value</span><span class="p">(</span><span class="s1">&#39;lightgray&#39;</span><span class="p">))</span>
483
- <span class="p">)</span><span class="o">.</span><span class="n">properties</span><span class="p">(</span>
484
- <span class="n">width</span><span class="o">=</span><span class="mi">400</span><span class="p">,</span>
485
- <span class="n">height</span><span class="o">=</span><span class="mi">400</span>
486
- <span class="p">)</span><span class="o">.</span><span class="n">add_selection</span><span class="p">(</span>
487
- <span class="n">brush</span>
488
- <span class="p">)</span>
489
-
490
- <span class="n">chart</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="n">x</span><span class="o">=</span><span class="s1">&#39;Acceleration:Q&#39;</span><span class="p">)</span> <span class="o">|</span> <span class="n">chart</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="n">x</span><span class="o">=</span><span class="s1">&#39;Miles_per_Gallon:Q&#39;</span><span class="p">)</span>
491
- </pre></div>
492
-
493
- </div>
494
- </div>
495
- </div>
496
-
497
- <div class="output_wrapper">
498
- <div class="output">
499
-
500
-
501
- <div class="output_area">
502
-
503
-
504
-
505
-
506
- <div class="output_html rendered_html output_subarea output_execute_result">
507
-
508
- <div id="altair-viz-f6033be2fdfa4a1295275ff044b3122f"></div>
509
- <script type="text/javascript">
510
- var VEGA_DEBUG = (typeof VEGA_DEBUG == "undefined") ? {} : VEGA_DEBUG;
511
- (function(spec, embedOpt){
512
- let outputDiv = document.currentScript.previousElementSibling;
513
- if (outputDiv.id !== "altair-viz-f6033be2fdfa4a1295275ff044b3122f") {
514
- outputDiv = document.getElementById("altair-viz-f6033be2fdfa4a1295275ff044b3122f");
515
- }
516
- const paths = {
517
- "vega": "https://cdn.jsdelivr.net/npm//vega@5?noext",
518
- "vega-lib": "https://cdn.jsdelivr.net/npm//vega-lib?noext",
519
- "vega-lite": "https://cdn.jsdelivr.net/npm//vega-lite@4.17.0?noext",
520
- "vega-embed": "https://cdn.jsdelivr.net/npm//vega-embed@6?noext",
521
- };
522
-
523
- function maybeLoadScript(lib, version) {
524
- var key = `${lib.replace("-", "")}_version`;
525
- return (VEGA_DEBUG[key] == version) ?
526
- Promise.resolve(paths[lib]) :
527
- new Promise(function(resolve, reject) {
528
- var s = document.createElement('script');
529
- document.getElementsByTagName("head")[0].appendChild(s);
530
- s.async = true;
531
- s.onload = () => {
532
- VEGA_DEBUG[key] = version;
533
- return resolve(paths[lib]);
534
- };
535
- s.onerror = () => reject(`Error loading script: ${paths[lib]}`);
536
- s.src = paths[lib];
537
- });
538
- }
539
-
540
- function showError(err) {
541
- outputDiv.innerHTML = `<div class="error" style="color:red;">${err}</div>`;
542
- throw err;
543
- }
544
-
545
- function displayChart(vegaEmbed) {
546
- vegaEmbed(outputDiv, spec, embedOpt)
547
- .catch(err => showError(`Javascript Error: ${err.message}<br>This usually means there's a typo in your chart specification. See the javascript console for the full traceback.`));
548
- }
549
-
550
- if(typeof define === "function" && define.amd) {
551
- requirejs.config({paths});
552
- require(["vega-embed"], displayChart, err => showError(`Error loading script: ${err.message}`));
553
- } else {
554
- maybeLoadScript("vega", "5")
555
- .then(() => maybeLoadScript("vega-lite", "4.17.0"))
556
- .then(() => maybeLoadScript("vega-embed", "6"))
557
- .catch(showError)
558
- .then(() => displayChart(vegaEmbed));
559
- }
560
- })({"config": {"view": {"continuousWidth": 400, "continuousHeight": 300}}, "hconcat": [{"mark": "point", "encoding": {"color": {"condition": {"field": "Origin", "type": "nominal", "selection": "selector018"}, "value": "lightgray"}, "x": {"field": "Acceleration", "type": "quantitative"}, "y": {"field": "Horsepower", "type": "quantitative"}}, "height": 400, "selection": {"selector018": {"type": "interval", "encodings": ["x"]}}, "width": 400}, {"mark": "point", "encoding": {"color": {"condition": {"field": "Origin", "type": "nominal", "selection": "selector018"}, "value": "lightgray"}, "x": {"field": "Miles_per_Gallon", "type": "quantitative"}, "y": {"field": "Horsepower", "type": "quantitative"}}, "height": 400, "selection": {"selector018": {"type": "interval", "encodings": ["x"]}}, "width": 400}], "data": {"url": "https://cdn.jsdelivr.net/npm/vega-datasets@v1.29.0/data/cars.json"}, "$schema": "https://vega.github.io/schema/vega-lite/v4.17.0.json"}, {"mode": "vega-lite"});
561
- </script>
562
- </div>
563
-
564
- </div>
565
-
566
- </div>
567
- </div>
568
-
569
- </div>
570
- <div class="cell border-box-sizing text_cell rendered"><div class="inner_cell">
571
- <div class="text_cell_render border-box-sizing rendered_html">
572
- <h3 id="Selection-Types:-Interval,-Single,-Multi">Selection Types: Interval, Single, Multi<a class="anchor-link" href="#Selection-Types:-Interval,-Single,-Multi">&#182;</a></h3><p>With this interesting example under our belt, let’s take a more systematic look at some of the types of selections available in Altair. For simplicity, we’ll use a common chart in all the following examples; a simple heat-map based on the cars dataset. For convenience, let’s write a quick Python function that will take a selection object and create a chart with the color of the chart elements linked to this selection:</p>
573
-
574
- </div>
575
- </div>
576
- </div>
577
-
578
-
579
-
580
- <div class="
581
- cell border-box-sizing code_cell rendered">
582
- <div class="input">
583
-
584
- <div class="inner_cell">
585
- <div class="input_area">
586
- <div class=" highlight hl-ipython3"><pre><span></span><span class="k">def</span> <span class="nf">make_example</span><span class="p">(</span><span class="n">selector</span><span class="p">):</span>
587
- <span class="n">cars</span> <span class="o">=</span> <span class="n">data</span><span class="o">.</span><span class="n">cars</span><span class="o">.</span><span class="n">url</span>
588
-
589
- <span class="k">return</span> <span class="n">alt</span><span class="o">.</span><span class="n">Chart</span><span class="p">(</span><span class="n">cars</span><span class="p">)</span><span class="o">.</span><span class="n">mark_rect</span><span class="p">()</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span>
590
- <span class="n">x</span><span class="o">=</span><span class="s2">&quot;Cylinders:O&quot;</span><span class="p">,</span>
591
- <span class="n">y</span><span class="o">=</span><span class="s2">&quot;Origin:N&quot;</span><span class="p">,</span>
592
- <span class="n">color</span><span class="o">=</span><span class="n">alt</span><span class="o">.</span><span class="n">condition</span><span class="p">(</span><span class="n">selector</span><span class="p">,</span> <span class="s1">&#39;count()&#39;</span><span class="p">,</span> <span class="n">alt</span><span class="o">.</span><span class="n">value</span><span class="p">(</span><span class="s1">&#39;lightgray&#39;</span><span class="p">))</span>
593
- <span class="p">)</span><span class="o">.</span><span class="n">properties</span><span class="p">(</span>
594
- <span class="n">width</span><span class="o">=</span><span class="mi">300</span><span class="p">,</span>
595
- <span class="n">height</span><span class="o">=</span><span class="mi">180</span>
596
- <span class="p">)</span><span class="o">.</span><span class="n">add_selection</span><span class="p">(</span>
597
- <span class="n">selector</span>
598
- <span class="p">)</span><span class="o">.</span><span class="n">properties</span><span class="p">(</span>
599
- <span class="n">width</span><span class="o">=</span><span class="mi">800</span><span class="p">,</span>
600
- <span class="n">height</span><span class="o">=</span><span class="mi">400</span>
601
- <span class="p">)</span>
602
- </pre></div>
603
-
604
- </div>
605
- </div>
606
- </div>
607
-
608
- </div>
609
- <div class="cell border-box-sizing text_cell rendered"><div class="inner_cell">
610
- <div class="text_cell_render border-box-sizing rendered_html">
611
- <h4 id="Interval-Selections">Interval Selections<a class="anchor-link" href="#Interval-Selections">&#182;</a></h4><p>An interval selection allows you to select chart elements by clicking and dragging. You can create such a selection using the selection_interval() function:</p>
612
-
613
- </div>
614
- </div>
615
- </div>
616
-
617
-
618
-
619
- <div class="
620
- cell border-box-sizing code_cell rendered">
621
- <div class="input">
622
-
623
- <div class="inner_cell">
624
- <div class="input_area">
625
- <div class=" highlight hl-ipython3"><pre><span></span><span class="n">interval</span> <span class="o">=</span> <span class="n">alt</span><span class="o">.</span><span class="n">selection_interval</span><span class="p">()</span>
626
- <span class="n">make_example</span><span class="p">(</span><span class="n">interval</span><span class="p">)</span>
627
- </pre></div>
628
-
629
- </div>
630
- </div>
631
- </div>
632
-
633
- <div class="output_wrapper">
634
- <div class="output">
635
-
636
-
637
- <div class="output_area">
638
-
639
-
640
-
641
-
642
- <div class="output_html rendered_html output_subarea output_execute_result">
643
-
644
- <div id="altair-viz-207087ac2a78460d9d89b784f524aadb"></div>
645
- <script type="text/javascript">
646
- var VEGA_DEBUG = (typeof VEGA_DEBUG == "undefined") ? {} : VEGA_DEBUG;
647
- (function(spec, embedOpt){
648
- let outputDiv = document.currentScript.previousElementSibling;
649
- if (outputDiv.id !== "altair-viz-207087ac2a78460d9d89b784f524aadb") {
650
- outputDiv = document.getElementById("altair-viz-207087ac2a78460d9d89b784f524aadb");
651
- }
652
- const paths = {
653
- "vega": "https://cdn.jsdelivr.net/npm//vega@5?noext",
654
- "vega-lib": "https://cdn.jsdelivr.net/npm//vega-lib?noext",
655
- "vega-lite": "https://cdn.jsdelivr.net/npm//vega-lite@4.17.0?noext",
656
- "vega-embed": "https://cdn.jsdelivr.net/npm//vega-embed@6?noext",
657
- };
658
-
659
- function maybeLoadScript(lib, version) {
660
- var key = `${lib.replace("-", "")}_version`;
661
- return (VEGA_DEBUG[key] == version) ?
662
- Promise.resolve(paths[lib]) :
663
- new Promise(function(resolve, reject) {
664
- var s = document.createElement('script');
665
- document.getElementsByTagName("head")[0].appendChild(s);
666
- s.async = true;
667
- s.onload = () => {
668
- VEGA_DEBUG[key] = version;
669
- return resolve(paths[lib]);
670
- };
671
- s.onerror = () => reject(`Error loading script: ${paths[lib]}`);
672
- s.src = paths[lib];
673
- });
674
- }
675
-
676
- function showError(err) {
677
- outputDiv.innerHTML = `<div class="error" style="color:red;">${err}</div>`;
678
- throw err;
679
- }
680
-
681
- function displayChart(vegaEmbed) {
682
- vegaEmbed(outputDiv, spec, embedOpt)
683
- .catch(err => showError(`Javascript Error: ${err.message}<br>This usually means there's a typo in your chart specification. See the javascript console for the full traceback.`));
684
- }
685
-
686
- if(typeof define === "function" && define.amd) {
687
- requirejs.config({paths});
688
- require(["vega-embed"], displayChart, err => showError(`Error loading script: ${err.message}`));
689
- } else {
690
- maybeLoadScript("vega", "5")
691
- .then(() => maybeLoadScript("vega-lite", "4.17.0"))
692
- .then(() => maybeLoadScript("vega-embed", "6"))
693
- .catch(showError)
694
- .then(() => displayChart(vegaEmbed));
695
- }
696
- })({"config": {"view": {"continuousWidth": 400, "continuousHeight": 300}}, "data": {"url": "https://cdn.jsdelivr.net/npm/vega-datasets@v1.29.0/data/cars.json"}, "mark": "rect", "encoding": {"color": {"condition": {"aggregate": "count", "type": "quantitative", "selection": "selector003"}, "value": "lightgray"}, "x": {"field": "Cylinders", "type": "ordinal"}, "y": {"field": "Origin", "type": "nominal"}}, "height": 400, "selection": {"selector003": {"type": "interval"}}, "width": 800, "$schema": "https://vega.github.io/schema/vega-lite/v4.17.0.json"}, {"mode": "vega-lite"});
697
- </script>
698
- </div>
699
-
700
- </div>
701
-
702
- </div>
703
- </div>
704
-
705
- </div>
706
- <div class="cell border-box-sizing text_cell rendered"><div class="inner_cell">
707
- <div class="text_cell_render border-box-sizing rendered_html">
708
- <p>As you click and drag on the plot, you’ll find that your mouse creates a box that can be subsequently moved to change the selection.</p>
709
- <p>The selection_interval() function takes a few additional arguments; for example we can bind the interval to only the x-axis, and set it such that the empty selection contains none of the points:</p>
710
-
711
- </div>
712
- </div>
713
- </div>
714
-
715
-
716
-
717
- <div class="
718
- cell border-box-sizing code_cell rendered">
719
- <div class="input">
720
-
721
- <div class="inner_cell">
722
- <div class="input_area">
723
- <div class=" highlight hl-ipython3"><pre><span></span><span class="n">interval_x</span> <span class="o">=</span> <span class="n">alt</span><span class="o">.</span><span class="n">selection_interval</span><span class="p">(</span><span class="n">encodings</span><span class="o">=</span><span class="p">[</span><span class="s1">&#39;x&#39;</span><span class="p">],</span> <span class="n">empty</span><span class="o">=</span><span class="s1">&#39;none&#39;</span><span class="p">)</span>
724
- <span class="n">make_example</span><span class="p">(</span><span class="n">interval_x</span><span class="p">)</span>
725
- </pre></div>
726
-
727
- </div>
728
- </div>
729
- </div>
730
-
731
- <div class="output_wrapper">
732
- <div class="output">
733
-
734
-
735
- <div class="output_area">
736
-
737
-
738
-
739
-
740
- <div class="output_html rendered_html output_subarea output_execute_result">
741
-
742
- <div id="altair-viz-7bdf8b076f094ca1a361174cb238c6e2"></div>
743
- <script type="text/javascript">
744
- var VEGA_DEBUG = (typeof VEGA_DEBUG == "undefined") ? {} : VEGA_DEBUG;
745
- (function(spec, embedOpt){
746
- let outputDiv = document.currentScript.previousElementSibling;
747
- if (outputDiv.id !== "altair-viz-7bdf8b076f094ca1a361174cb238c6e2") {
748
- outputDiv = document.getElementById("altair-viz-7bdf8b076f094ca1a361174cb238c6e2");
749
- }
750
- const paths = {
751
- "vega": "https://cdn.jsdelivr.net/npm//vega@5?noext",
752
- "vega-lib": "https://cdn.jsdelivr.net/npm//vega-lib?noext",
753
- "vega-lite": "https://cdn.jsdelivr.net/npm//vega-lite@4.17.0?noext",
754
- "vega-embed": "https://cdn.jsdelivr.net/npm//vega-embed@6?noext",
755
- };
756
-
757
- function maybeLoadScript(lib, version) {
758
- var key = `${lib.replace("-", "")}_version`;
759
- return (VEGA_DEBUG[key] == version) ?
760
- Promise.resolve(paths[lib]) :
761
- new Promise(function(resolve, reject) {
762
- var s = document.createElement('script');
763
- document.getElementsByTagName("head")[0].appendChild(s);
764
- s.async = true;
765
- s.onload = () => {
766
- VEGA_DEBUG[key] = version;
767
- return resolve(paths[lib]);
768
- };
769
- s.onerror = () => reject(`Error loading script: ${paths[lib]}`);
770
- s.src = paths[lib];
771
- });
772
- }
773
-
774
- function showError(err) {
775
- outputDiv.innerHTML = `<div class="error" style="color:red;">${err}</div>`;
776
- throw err;
777
- }
778
-
779
- function displayChart(vegaEmbed) {
780
- vegaEmbed(outputDiv, spec, embedOpt)
781
- .catch(err => showError(`Javascript Error: ${err.message}<br>This usually means there's a typo in your chart specification. See the javascript console for the full traceback.`));
782
- }
783
-
784
- if(typeof define === "function" && define.amd) {
785
- requirejs.config({paths});
786
- require(["vega-embed"], displayChart, err => showError(`Error loading script: ${err.message}`));
787
- } else {
788
- maybeLoadScript("vega", "5")
789
- .then(() => maybeLoadScript("vega-lite", "4.17.0"))
790
- .then(() => maybeLoadScript("vega-embed", "6"))
791
- .catch(showError)
792
- .then(() => displayChart(vegaEmbed));
793
- }
794
- })({"config": {"view": {"continuousWidth": 400, "continuousHeight": 300}}, "data": {"url": "https://cdn.jsdelivr.net/npm/vega-datasets@v1.29.0/data/cars.json"}, "mark": "rect", "encoding": {"color": {"condition": {"aggregate": "count", "type": "quantitative", "selection": "selector004"}, "value": "lightgray"}, "x": {"field": "Cylinders", "type": "ordinal"}, "y": {"field": "Origin", "type": "nominal"}}, "height": 400, "selection": {"selector004": {"type": "interval", "encodings": ["x"], "empty": "none"}}, "width": 800, "$schema": "https://vega.github.io/schema/vega-lite/v4.17.0.json"}, {"mode": "vega-lite"});
795
- </script>
796
- </div>
797
-
798
- </div>
799
-
800
- </div>
801
- </div>
802
-
803
- </div>
804
- <div class="cell border-box-sizing text_cell rendered"><div class="inner_cell">
805
- <div class="text_cell_render border-box-sizing rendered_html">
806
- <p>A special case of an interval selection is when the interval is bound to the chart scales; this is how Altair plots can be made interactive:</p>
807
-
808
- </div>
809
- </div>
810
- </div>
811
-
812
-
813
-
814
- <div class="
815
- cell border-box-sizing code_cell rendered">
816
- <div class="input">
817
-
818
- <div class="inner_cell">
819
- <div class="input_area">
820
- <div class=" highlight hl-ipython3"><pre><span></span><span class="n">scales</span> <span class="o">=</span> <span class="n">alt</span><span class="o">.</span><span class="n">selection_interval</span><span class="p">(</span><span class="n">bind</span><span class="o">=</span><span class="s1">&#39;scales&#39;</span><span class="p">)</span>
821
-
822
- <span class="n">alt</span><span class="o">.</span><span class="n">Chart</span><span class="p">(</span><span class="n">cars</span><span class="p">)</span><span class="o">.</span><span class="n">mark_point</span><span class="p">()</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span>
823
- <span class="n">x</span><span class="o">=</span><span class="s1">&#39;Horsepower:Q&#39;</span><span class="p">,</span>
824
- <span class="n">y</span><span class="o">=</span><span class="s1">&#39;Miles_per_Gallon:Q&#39;</span><span class="p">,</span>
825
- <span class="n">color</span><span class="o">=</span><span class="s1">&#39;Origin:N&#39;</span>
826
- <span class="p">)</span><span class="o">.</span><span class="n">add_selection</span><span class="p">(</span>
827
- <span class="n">scales</span>
828
- <span class="p">)</span><span class="o">.</span><span class="n">properties</span><span class="p">(</span>
829
- <span class="n">width</span><span class="o">=</span><span class="mi">800</span><span class="p">,</span>
830
- <span class="n">height</span><span class="o">=</span><span class="mi">400</span>
831
- <span class="p">)</span>
832
- </pre></div>
833
-
834
- </div>
835
- </div>
836
- </div>
837
-
838
- <div class="output_wrapper">
839
- <div class="output">
840
-
841
-
842
- <div class="output_area">
843
-
844
-
845
-
846
-
847
- <div class="output_html rendered_html output_subarea output_execute_result">
848
-
849
- <div id="altair-viz-be80c441bc3e427cace05dd5042c9a91"></div>
850
- <script type="text/javascript">
851
- var VEGA_DEBUG = (typeof VEGA_DEBUG == "undefined") ? {} : VEGA_DEBUG;
852
- (function(spec, embedOpt){
853
- let outputDiv = document.currentScript.previousElementSibling;
854
- if (outputDiv.id !== "altair-viz-be80c441bc3e427cace05dd5042c9a91") {
855
- outputDiv = document.getElementById("altair-viz-be80c441bc3e427cace05dd5042c9a91");
856
- }
857
- const paths = {
858
- "vega": "https://cdn.jsdelivr.net/npm//vega@5?noext",
859
- "vega-lib": "https://cdn.jsdelivr.net/npm//vega-lib?noext",
860
- "vega-lite": "https://cdn.jsdelivr.net/npm//vega-lite@4.17.0?noext",
861
- "vega-embed": "https://cdn.jsdelivr.net/npm//vega-embed@6?noext",
862
- };
863
-
864
- function maybeLoadScript(lib, version) {
865
- var key = `${lib.replace("-", "")}_version`;
866
- return (VEGA_DEBUG[key] == version) ?
867
- Promise.resolve(paths[lib]) :
868
- new Promise(function(resolve, reject) {
869
- var s = document.createElement('script');
870
- document.getElementsByTagName("head")[0].appendChild(s);
871
- s.async = true;
872
- s.onload = () => {
873
- VEGA_DEBUG[key] = version;
874
- return resolve(paths[lib]);
875
- };
876
- s.onerror = () => reject(`Error loading script: ${paths[lib]}`);
877
- s.src = paths[lib];
878
- });
879
- }
880
-
881
- function showError(err) {
882
- outputDiv.innerHTML = `<div class="error" style="color:red;">${err}</div>`;
883
- throw err;
884
- }
885
-
886
- function displayChart(vegaEmbed) {
887
- vegaEmbed(outputDiv, spec, embedOpt)
888
- .catch(err => showError(`Javascript Error: ${err.message}<br>This usually means there's a typo in your chart specification. See the javascript console for the full traceback.`));
889
- }
890
-
891
- if(typeof define === "function" && define.amd) {
892
- requirejs.config({paths});
893
- require(["vega-embed"], displayChart, err => showError(`Error loading script: ${err.message}`));
894
- } else {
895
- maybeLoadScript("vega", "5")
896
- .then(() => maybeLoadScript("vega-lite", "4.17.0"))
897
- .then(() => maybeLoadScript("vega-embed", "6"))
898
- .catch(showError)
899
- .then(() => displayChart(vegaEmbed));
900
- }
901
- })({"config": {"view": {"continuousWidth": 400, "continuousHeight": 300}}, "data": {"url": "https://cdn.jsdelivr.net/npm/vega-datasets@v1.29.0/data/cars.json"}, "mark": "point", "encoding": {"color": {"field": "Origin", "type": "nominal"}, "x": {"field": "Horsepower", "type": "quantitative"}, "y": {"field": "Miles_per_Gallon", "type": "quantitative"}}, "height": 400, "selection": {"selector005": {"type": "interval", "bind": "scales"}}, "width": 800, "$schema": "https://vega.github.io/schema/vega-lite/v4.17.0.json"}, {"mode": "vega-lite"});
902
- </script>
903
- </div>
904
-
905
- </div>
906
-
907
- </div>
908
- </div>
909
-
910
- </div>
911
- <div class="cell border-box-sizing text_cell rendered"><div class="inner_cell">
912
- <div class="text_cell_render border-box-sizing rendered_html">
913
- <p>Because this is such a common pattern, Altair provides the Chart.interactive()
914
- method which creates such a selection more concisely.</p>
915
-
916
- </div>
917
- </div>
918
- </div>
919
- <div class="cell border-box-sizing text_cell rendered"><div class="inner_cell">
920
- <div class="text_cell_render border-box-sizing rendered_html">
921
- <h4 id="Single-Selections">Single Selections<a class="anchor-link" href="#Single-Selections">&#182;</a></h4><p>A single selection allows you to select a single chart element at a time using mouse actions. By default, points are selected on <strong>click</strong>:</p>
922
-
923
- </div>
924
- </div>
925
- </div>
926
-
927
-
928
-
929
- <div class="
930
- cell border-box-sizing code_cell rendered">
931
- <div class="input">
932
-
933
- <div class="inner_cell">
934
- <div class="input_area">
935
- <div class=" highlight hl-ipython3"><pre><span></span><span class="n">single</span> <span class="o">=</span> <span class="n">alt</span><span class="o">.</span><span class="n">selection_single</span><span class="p">()</span>
936
- <span class="n">make_example</span><span class="p">(</span><span class="n">single</span><span class="p">)</span>
937
- </pre></div>
938
-
939
- </div>
940
- </div>
941
- </div>
942
-
943
- <div class="output_wrapper">
944
- <div class="output">
945
-
946
-
947
- <div class="output_area">
948
-
949
-
950
-
951
-
952
- <div class="output_html rendered_html output_subarea output_execute_result">
953
-
954
- <div id="altair-viz-59d28042c3774bacad1c4574bd3ea6e3"></div>
955
- <script type="text/javascript">
956
- var VEGA_DEBUG = (typeof VEGA_DEBUG == "undefined") ? {} : VEGA_DEBUG;
957
- (function(spec, embedOpt){
958
- let outputDiv = document.currentScript.previousElementSibling;
959
- if (outputDiv.id !== "altair-viz-59d28042c3774bacad1c4574bd3ea6e3") {
960
- outputDiv = document.getElementById("altair-viz-59d28042c3774bacad1c4574bd3ea6e3");
961
- }
962
- const paths = {
963
- "vega": "https://cdn.jsdelivr.net/npm//vega@5?noext",
964
- "vega-lib": "https://cdn.jsdelivr.net/npm//vega-lib?noext",
965
- "vega-lite": "https://cdn.jsdelivr.net/npm//vega-lite@4.17.0?noext",
966
- "vega-embed": "https://cdn.jsdelivr.net/npm//vega-embed@6?noext",
967
- };
968
-
969
- function maybeLoadScript(lib, version) {
970
- var key = `${lib.replace("-", "")}_version`;
971
- return (VEGA_DEBUG[key] == version) ?
972
- Promise.resolve(paths[lib]) :
973
- new Promise(function(resolve, reject) {
974
- var s = document.createElement('script');
975
- document.getElementsByTagName("head")[0].appendChild(s);
976
- s.async = true;
977
- s.onload = () => {
978
- VEGA_DEBUG[key] = version;
979
- return resolve(paths[lib]);
980
- };
981
- s.onerror = () => reject(`Error loading script: ${paths[lib]}`);
982
- s.src = paths[lib];
983
- });
984
- }
985
-
986
- function showError(err) {
987
- outputDiv.innerHTML = `<div class="error" style="color:red;">${err}</div>`;
988
- throw err;
989
- }
990
-
991
- function displayChart(vegaEmbed) {
992
- vegaEmbed(outputDiv, spec, embedOpt)
993
- .catch(err => showError(`Javascript Error: ${err.message}<br>This usually means there's a typo in your chart specification. See the javascript console for the full traceback.`));
994
- }
995
-
996
- if(typeof define === "function" && define.amd) {
997
- requirejs.config({paths});
998
- require(["vega-embed"], displayChart, err => showError(`Error loading script: ${err.message}`));
999
- } else {
1000
- maybeLoadScript("vega", "5")
1001
- .then(() => maybeLoadScript("vega-lite", "4.17.0"))
1002
- .then(() => maybeLoadScript("vega-embed", "6"))
1003
- .catch(showError)
1004
- .then(() => displayChart(vegaEmbed));
1005
- }
1006
- })({"config": {"view": {"continuousWidth": 400, "continuousHeight": 300}}, "data": {"url": "https://cdn.jsdelivr.net/npm/vega-datasets@v1.29.0/data/cars.json"}, "mark": "rect", "encoding": {"color": {"condition": {"aggregate": "count", "type": "quantitative", "selection": "selector006"}, "value": "lightgray"}, "x": {"field": "Cylinders", "type": "ordinal"}, "y": {"field": "Origin", "type": "nominal"}}, "height": 400, "selection": {"selector006": {"type": "single"}}, "width": 800, "$schema": "https://vega.github.io/schema/vega-lite/v4.17.0.json"}, {"mode": "vega-lite"});
1007
- </script>
1008
- </div>
1009
-
1010
- </div>
1011
-
1012
- </div>
1013
- </div>
1014
-
1015
- </div>
1016
- <div class="cell border-box-sizing text_cell rendered"><div class="inner_cell">
1017
- <div class="text_cell_render border-box-sizing rendered_html">
1018
- <p>By changing some arguments, we can select points on <strong>mouseover</strong> rather than on click. We can also set the nearest flag to True so that the nearest point is highlighted:</p>
1019
-
1020
- </div>
1021
- </div>
1022
- </div>
1023
-
1024
-
1025
-
1026
- <div class="
1027
- cell border-box-sizing code_cell rendered">
1028
- <div class="input">
1029
-
1030
- <div class="inner_cell">
1031
- <div class="input_area">
1032
- <div class=" highlight hl-ipython3"><pre><span></span><span class="n">single_nearest</span> <span class="o">=</span> <span class="n">alt</span><span class="o">.</span><span class="n">selection_single</span><span class="p">(</span><span class="n">on</span><span class="o">=</span><span class="s1">&#39;mouseover&#39;</span><span class="p">,</span> <span class="n">nearest</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
1033
- <span class="n">make_example</span><span class="p">(</span><span class="n">single_nearest</span><span class="p">)</span>
1034
- </pre></div>
1035
-
1036
- </div>
1037
- </div>
1038
- </div>
1039
-
1040
- <div class="output_wrapper">
1041
- <div class="output">
1042
-
1043
-
1044
- <div class="output_area">
1045
-
1046
-
1047
-
1048
-
1049
- <div class="output_html rendered_html output_subarea output_execute_result">
1050
-
1051
- <div id="altair-viz-c837e04012af483083665ab312401b3a"></div>
1052
- <script type="text/javascript">
1053
- var VEGA_DEBUG = (typeof VEGA_DEBUG == "undefined") ? {} : VEGA_DEBUG;
1054
- (function(spec, embedOpt){
1055
- let outputDiv = document.currentScript.previousElementSibling;
1056
- if (outputDiv.id !== "altair-viz-c837e04012af483083665ab312401b3a") {
1057
- outputDiv = document.getElementById("altair-viz-c837e04012af483083665ab312401b3a");
1058
- }
1059
- const paths = {
1060
- "vega": "https://cdn.jsdelivr.net/npm//vega@5?noext",
1061
- "vega-lib": "https://cdn.jsdelivr.net/npm//vega-lib?noext",
1062
- "vega-lite": "https://cdn.jsdelivr.net/npm//vega-lite@4.17.0?noext",
1063
- "vega-embed": "https://cdn.jsdelivr.net/npm//vega-embed@6?noext",
1064
- };
1065
-
1066
- function maybeLoadScript(lib, version) {
1067
- var key = `${lib.replace("-", "")}_version`;
1068
- return (VEGA_DEBUG[key] == version) ?
1069
- Promise.resolve(paths[lib]) :
1070
- new Promise(function(resolve, reject) {
1071
- var s = document.createElement('script');
1072
- document.getElementsByTagName("head")[0].appendChild(s);
1073
- s.async = true;
1074
- s.onload = () => {
1075
- VEGA_DEBUG[key] = version;
1076
- return resolve(paths[lib]);
1077
- };
1078
- s.onerror = () => reject(`Error loading script: ${paths[lib]}`);
1079
- s.src = paths[lib];
1080
- });
1081
- }
1082
-
1083
- function showError(err) {
1084
- outputDiv.innerHTML = `<div class="error" style="color:red;">${err}</div>`;
1085
- throw err;
1086
- }
1087
-
1088
- function displayChart(vegaEmbed) {
1089
- vegaEmbed(outputDiv, spec, embedOpt)
1090
- .catch(err => showError(`Javascript Error: ${err.message}<br>This usually means there's a typo in your chart specification. See the javascript console for the full traceback.`));
1091
- }
1092
-
1093
- if(typeof define === "function" && define.amd) {
1094
- requirejs.config({paths});
1095
- require(["vega-embed"], displayChart, err => showError(`Error loading script: ${err.message}`));
1096
- } else {
1097
- maybeLoadScript("vega", "5")
1098
- .then(() => maybeLoadScript("vega-lite", "4.17.0"))
1099
- .then(() => maybeLoadScript("vega-embed", "6"))
1100
- .catch(showError)
1101
- .then(() => displayChart(vegaEmbed));
1102
- }
1103
- })({"config": {"view": {"continuousWidth": 400, "continuousHeight": 300}}, "data": {"url": "https://cdn.jsdelivr.net/npm/vega-datasets@v1.29.0/data/cars.json"}, "mark": "rect", "encoding": {"color": {"condition": {"aggregate": "count", "type": "quantitative", "selection": "selector007"}, "value": "lightgray"}, "x": {"field": "Cylinders", "type": "ordinal"}, "y": {"field": "Origin", "type": "nominal"}}, "height": 400, "selection": {"selector007": {"type": "single", "on": "mouseover", "nearest": true}}, "width": 800, "$schema": "https://vega.github.io/schema/vega-lite/v4.17.0.json"}, {"mode": "vega-lite"});
1104
- </script>
1105
- </div>
1106
-
1107
- </div>
1108
-
1109
- </div>
1110
- </div>
1111
-
1112
- </div>
1113
- <div class="cell border-box-sizing text_cell rendered"><div class="inner_cell">
1114
- <div class="text_cell_render border-box-sizing rendered_html">
1115
- <h4 id="Multiple-Selections">Multiple Selections<a class="anchor-link" href="#Multiple-Selections">&#182;</a></h4><p>A multi selection is similar to a single selection, but it allows for multiple chart objects to be selected at once. By default, chart elements can be added to and removed from the selection by clicking on them while holding the <strong>shift</strong> key:</p>
1116
-
1117
- </div>
1118
- </div>
1119
- </div>
1120
-
1121
-
1122
-
1123
- <div class="
1124
- cell border-box-sizing code_cell rendered">
1125
- <div class="input">
1126
-
1127
- <div class="inner_cell">
1128
- <div class="input_area">
1129
- <div class=" highlight hl-ipython3"><pre><span></span><span class="n">multi</span> <span class="o">=</span> <span class="n">alt</span><span class="o">.</span><span class="n">selection_multi</span><span class="p">()</span>
1130
- <span class="n">make_example</span><span class="p">(</span><span class="n">multi</span><span class="p">)</span>
1131
- </pre></div>
1132
-
1133
- </div>
1134
- </div>
1135
- </div>
1136
-
1137
- <div class="output_wrapper">
1138
- <div class="output">
1139
-
1140
-
1141
- <div class="output_area">
1142
-
1143
-
1144
-
1145
-
1146
- <div class="output_html rendered_html output_subarea output_execute_result">
1147
-
1148
- <div id="altair-viz-c75579a6dad74d098011429624c91bfa"></div>
1149
- <script type="text/javascript">
1150
- var VEGA_DEBUG = (typeof VEGA_DEBUG == "undefined") ? {} : VEGA_DEBUG;
1151
- (function(spec, embedOpt){
1152
- let outputDiv = document.currentScript.previousElementSibling;
1153
- if (outputDiv.id !== "altair-viz-c75579a6dad74d098011429624c91bfa") {
1154
- outputDiv = document.getElementById("altair-viz-c75579a6dad74d098011429624c91bfa");
1155
- }
1156
- const paths = {
1157
- "vega": "https://cdn.jsdelivr.net/npm//vega@5?noext",
1158
- "vega-lib": "https://cdn.jsdelivr.net/npm//vega-lib?noext",
1159
- "vega-lite": "https://cdn.jsdelivr.net/npm//vega-lite@4.17.0?noext",
1160
- "vega-embed": "https://cdn.jsdelivr.net/npm//vega-embed@6?noext",
1161
- };
1162
-
1163
- function maybeLoadScript(lib, version) {
1164
- var key = `${lib.replace("-", "")}_version`;
1165
- return (VEGA_DEBUG[key] == version) ?
1166
- Promise.resolve(paths[lib]) :
1167
- new Promise(function(resolve, reject) {
1168
- var s = document.createElement('script');
1169
- document.getElementsByTagName("head")[0].appendChild(s);
1170
- s.async = true;
1171
- s.onload = () => {
1172
- VEGA_DEBUG[key] = version;
1173
- return resolve(paths[lib]);
1174
- };
1175
- s.onerror = () => reject(`Error loading script: ${paths[lib]}`);
1176
- s.src = paths[lib];
1177
- });
1178
- }
1179
-
1180
- function showError(err) {
1181
- outputDiv.innerHTML = `<div class="error" style="color:red;">${err}</div>`;
1182
- throw err;
1183
- }
1184
-
1185
- function displayChart(vegaEmbed) {
1186
- vegaEmbed(outputDiv, spec, embedOpt)
1187
- .catch(err => showError(`Javascript Error: ${err.message}<br>This usually means there's a typo in your chart specification. See the javascript console for the full traceback.`));
1188
- }
1189
-
1190
- if(typeof define === "function" && define.amd) {
1191
- requirejs.config({paths});
1192
- require(["vega-embed"], displayChart, err => showError(`Error loading script: ${err.message}`));
1193
- } else {
1194
- maybeLoadScript("vega", "5")
1195
- .then(() => maybeLoadScript("vega-lite", "4.17.0"))
1196
- .then(() => maybeLoadScript("vega-embed", "6"))
1197
- .catch(showError)
1198
- .then(() => displayChart(vegaEmbed));
1199
- }
1200
- })({"config": {"view": {"continuousWidth": 400, "continuousHeight": 300}}, "data": {"url": "https://cdn.jsdelivr.net/npm/vega-datasets@v1.29.0/data/cars.json"}, "mark": "rect", "encoding": {"color": {"condition": {"aggregate": "count", "type": "quantitative", "selection": "selector008"}, "value": "lightgray"}, "x": {"field": "Cylinders", "type": "ordinal"}, "y": {"field": "Origin", "type": "nominal"}}, "height": 400, "selection": {"selector008": {"type": "multi"}}, "width": 800, "$schema": "https://vega.github.io/schema/vega-lite/v4.17.0.json"}, {"mode": "vega-lite"});
1201
- </script>
1202
- </div>
1203
-
1204
- </div>
1205
-
1206
- </div>
1207
- </div>
1208
-
1209
- </div>
1210
- <div class="cell border-box-sizing text_cell rendered"><div class="inner_cell">
1211
- <div class="text_cell_render border-box-sizing rendered_html">
1212
- <p>In addition to the options seen in selection_single(), the multi selection accepts the <strong>toggle</strong> parameter, which controls whether points can be removed from the selection once they are added.</p>
1213
- <p>For example, here is a plot where you can “paint” the chart objects by hovering over them with your mouse:</p>
1214
-
1215
- </div>
1216
- </div>
1217
- </div>
1218
-
1219
-
1220
-
1221
- <div class="
1222
- cell border-box-sizing code_cell rendered">
1223
- <div class="input">
1224
-
1225
- <div class="inner_cell">
1226
- <div class="input_area">
1227
- <div class=" highlight hl-ipython3"><pre><span></span><span class="n">multi_mouseover</span> <span class="o">=</span> <span class="n">alt</span><span class="o">.</span><span class="n">selection_multi</span><span class="p">(</span><span class="n">on</span><span class="o">=</span><span class="s1">&#39;mouseover&#39;</span><span class="p">,</span> <span class="n">toggle</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">empty</span><span class="o">=</span><span class="s1">&#39;none&#39;</span><span class="p">)</span>
1228
- <span class="n">make_example</span><span class="p">(</span><span class="n">multi_mouseover</span><span class="p">)</span>
1229
- </pre></div>
1230
-
1231
- </div>
1232
- </div>
1233
- </div>
1234
-
1235
- <div class="output_wrapper">
1236
- <div class="output">
1237
-
1238
-
1239
- <div class="output_area">
1240
-
1241
-
1242
-
1243
-
1244
- <div class="output_html rendered_html output_subarea output_execute_result">
1245
-
1246
- <div id="altair-viz-08f0ce09bf0149338cc8baab1a2e80e3"></div>
1247
- <script type="text/javascript">
1248
- var VEGA_DEBUG = (typeof VEGA_DEBUG == "undefined") ? {} : VEGA_DEBUG;
1249
- (function(spec, embedOpt){
1250
- let outputDiv = document.currentScript.previousElementSibling;
1251
- if (outputDiv.id !== "altair-viz-08f0ce09bf0149338cc8baab1a2e80e3") {
1252
- outputDiv = document.getElementById("altair-viz-08f0ce09bf0149338cc8baab1a2e80e3");
1253
- }
1254
- const paths = {
1255
- "vega": "https://cdn.jsdelivr.net/npm//vega@5?noext",
1256
- "vega-lib": "https://cdn.jsdelivr.net/npm//vega-lib?noext",
1257
- "vega-lite": "https://cdn.jsdelivr.net/npm//vega-lite@4.17.0?noext",
1258
- "vega-embed": "https://cdn.jsdelivr.net/npm//vega-embed@6?noext",
1259
- };
1260
-
1261
- function maybeLoadScript(lib, version) {
1262
- var key = `${lib.replace("-", "")}_version`;
1263
- return (VEGA_DEBUG[key] == version) ?
1264
- Promise.resolve(paths[lib]) :
1265
- new Promise(function(resolve, reject) {
1266
- var s = document.createElement('script');
1267
- document.getElementsByTagName("head")[0].appendChild(s);
1268
- s.async = true;
1269
- s.onload = () => {
1270
- VEGA_DEBUG[key] = version;
1271
- return resolve(paths[lib]);
1272
- };
1273
- s.onerror = () => reject(`Error loading script: ${paths[lib]}`);
1274
- s.src = paths[lib];
1275
- });
1276
- }
1277
-
1278
- function showError(err) {
1279
- outputDiv.innerHTML = `<div class="error" style="color:red;">${err}</div>`;
1280
- throw err;
1281
- }
1282
-
1283
- function displayChart(vegaEmbed) {
1284
- vegaEmbed(outputDiv, spec, embedOpt)
1285
- .catch(err => showError(`Javascript Error: ${err.message}<br>This usually means there's a typo in your chart specification. See the javascript console for the full traceback.`));
1286
- }
1287
-
1288
- if(typeof define === "function" && define.amd) {
1289
- requirejs.config({paths});
1290
- require(["vega-embed"], displayChart, err => showError(`Error loading script: ${err.message}`));
1291
- } else {
1292
- maybeLoadScript("vega", "5")
1293
- .then(() => maybeLoadScript("vega-lite", "4.17.0"))
1294
- .then(() => maybeLoadScript("vega-embed", "6"))
1295
- .catch(showError)
1296
- .then(() => displayChart(vegaEmbed));
1297
- }
1298
- })({"config": {"view": {"continuousWidth": 400, "continuousHeight": 300}}, "data": {"url": "https://cdn.jsdelivr.net/npm/vega-datasets@v1.29.0/data/cars.json"}, "mark": "rect", "encoding": {"color": {"condition": {"aggregate": "count", "type": "quantitative", "selection": "selector009"}, "value": "lightgray"}, "x": {"field": "Cylinders", "type": "ordinal"}, "y": {"field": "Origin", "type": "nominal"}}, "height": 400, "selection": {"selector009": {"type": "multi", "on": "mouseover", "toggle": false, "empty": "none"}}, "width": 800, "$schema": "https://vega.github.io/schema/vega-lite/v4.17.0.json"}, {"mode": "vega-lite"});
1299
- </script>
1300
- </div>
1301
-
1302
- </div>
1303
-
1304
- </div>
1305
- </div>
1306
-
1307
- </div>
1308
- <div class="cell border-box-sizing text_cell rendered"><div class="inner_cell">
1309
- <div class="text_cell_render border-box-sizing rendered_html">
1310
- <h4 id="Composing-Multiple-Selections">Composing Multiple Selections<a class="anchor-link" href="#Composing-Multiple-Selections">&#182;</a></h4><p>Altair also supports combining multiple selections using the &amp;, | and ~ for respectively AND, OR and NOT logical composition operands.</p>
1311
- <p>In the following example there are two people who can make an interval selection in the chart. The person Alex makes a selection box when the alt-key (macOS: option-key) is selected and Morgan can make a selection box when the shift-key is selected. We use the alt.Brushconfig() to give the selection box of Morgan a different style. Now, we color the rectangles when they fall within Alex’s or Morgan’s selection.</p>
1312
-
1313
- </div>
1314
- </div>
1315
- </div>
1316
-
1317
-
1318
-
1319
- <div class="
1320
- cell border-box-sizing code_cell rendered">
1321
- <div class="input">
1322
-
1323
- <div class="inner_cell">
1324
- <div class="input_area">
1325
- <div class=" highlight hl-ipython3"><pre><span></span><span class="n">alex</span> <span class="o">=</span> <span class="n">alt</span><span class="o">.</span><span class="n">selection_interval</span><span class="p">(</span>
1326
- <span class="n">on</span><span class="o">=</span><span class="s2">&quot;[mousedown[event.altKey], mouseup] &gt; mousemove&quot;</span><span class="p">,</span>
1327
- <span class="n">name</span><span class="o">=</span><span class="s1">&#39;alex&#39;</span>
1328
- <span class="p">)</span>
1329
-
1330
- <span class="n">morgan</span> <span class="o">=</span> <span class="n">alt</span><span class="o">.</span><span class="n">selection_interval</span><span class="p">(</span>
1331
- <span class="n">on</span><span class="o">=</span><span class="s2">&quot;[mousedown[event.shiftKey], mouseup] &gt; mousemove&quot;</span><span class="p">,</span>
1332
- <span class="n">mark</span><span class="o">=</span><span class="n">alt</span><span class="o">.</span><span class="n">BrushConfig</span><span class="p">(</span><span class="n">fill</span><span class="o">=</span><span class="s2">&quot;#fdbb84&quot;</span><span class="p">,</span> <span class="n">fillOpacity</span><span class="o">=</span><span class="mf">0.5</span><span class="p">,</span> <span class="n">stroke</span><span class="o">=</span><span class="s2">&quot;#e34a33&quot;</span><span class="p">),</span>
1333
- <span class="n">name</span><span class="o">=</span><span class="s1">&#39;morgan&#39;</span>
1334
- <span class="p">)</span>
1335
-
1336
- <span class="n">alt</span><span class="o">.</span><span class="n">Chart</span><span class="p">(</span><span class="n">cars</span><span class="p">)</span><span class="o">.</span><span class="n">mark_rect</span><span class="p">()</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span>
1337
- <span class="n">x</span><span class="o">=</span><span class="s1">&#39;Cylinders:O&#39;</span><span class="p">,</span>
1338
- <span class="n">y</span><span class="o">=</span><span class="s1">&#39;Origin:O&#39;</span><span class="p">,</span>
1339
- <span class="n">color</span><span class="o">=</span><span class="n">alt</span><span class="o">.</span><span class="n">condition</span><span class="p">(</span><span class="n">alex</span> <span class="o">|</span> <span class="n">morgan</span><span class="p">,</span> <span class="s1">&#39;count()&#39;</span><span class="p">,</span> <span class="n">alt</span><span class="o">.</span><span class="n">ColorValue</span><span class="p">(</span><span class="s2">&quot;grey&quot;</span><span class="p">))</span>
1340
- <span class="p">)</span><span class="o">.</span><span class="n">add_selection</span><span class="p">(</span>
1341
- <span class="n">alex</span><span class="p">,</span> <span class="n">morgan</span>
1342
- <span class="p">)</span><span class="o">.</span><span class="n">properties</span><span class="p">(</span>
1343
- <span class="n">width</span><span class="o">=</span><span class="mi">800</span><span class="p">,</span>
1344
- <span class="n">height</span><span class="o">=</span><span class="mi">400</span>
1345
- <span class="p">)</span>
1346
- </pre></div>
1347
-
1348
- </div>
1349
- </div>
1350
- </div>
1351
-
1352
- <div class="output_wrapper">
1353
- <div class="output">
1354
-
1355
-
1356
- <div class="output_area">
1357
-
1358
-
1359
-
1360
-
1361
- <div class="output_html rendered_html output_subarea output_execute_result">
1362
-
1363
- <div id="altair-viz-3ad8ba24e5c847c89a2d0bf1fccca0d7"></div>
1364
- <script type="text/javascript">
1365
- var VEGA_DEBUG = (typeof VEGA_DEBUG == "undefined") ? {} : VEGA_DEBUG;
1366
- (function(spec, embedOpt){
1367
- let outputDiv = document.currentScript.previousElementSibling;
1368
- if (outputDiv.id !== "altair-viz-3ad8ba24e5c847c89a2d0bf1fccca0d7") {
1369
- outputDiv = document.getElementById("altair-viz-3ad8ba24e5c847c89a2d0bf1fccca0d7");
1370
- }
1371
- const paths = {
1372
- "vega": "https://cdn.jsdelivr.net/npm//vega@5?noext",
1373
- "vega-lib": "https://cdn.jsdelivr.net/npm//vega-lib?noext",
1374
- "vega-lite": "https://cdn.jsdelivr.net/npm//vega-lite@4.17.0?noext",
1375
- "vega-embed": "https://cdn.jsdelivr.net/npm//vega-embed@6?noext",
1376
- };
1377
-
1378
- function maybeLoadScript(lib, version) {
1379
- var key = `${lib.replace("-", "")}_version`;
1380
- return (VEGA_DEBUG[key] == version) ?
1381
- Promise.resolve(paths[lib]) :
1382
- new Promise(function(resolve, reject) {
1383
- var s = document.createElement('script');
1384
- document.getElementsByTagName("head")[0].appendChild(s);
1385
- s.async = true;
1386
- s.onload = () => {
1387
- VEGA_DEBUG[key] = version;
1388
- return resolve(paths[lib]);
1389
- };
1390
- s.onerror = () => reject(`Error loading script: ${paths[lib]}`);
1391
- s.src = paths[lib];
1392
- });
1393
- }
1394
-
1395
- function showError(err) {
1396
- outputDiv.innerHTML = `<div class="error" style="color:red;">${err}</div>`;
1397
- throw err;
1398
- }
1399
-
1400
- function displayChart(vegaEmbed) {
1401
- vegaEmbed(outputDiv, spec, embedOpt)
1402
- .catch(err => showError(`Javascript Error: ${err.message}<br>This usually means there's a typo in your chart specification. See the javascript console for the full traceback.`));
1403
- }
1404
-
1405
- if(typeof define === "function" && define.amd) {
1406
- requirejs.config({paths});
1407
- require(["vega-embed"], displayChart, err => showError(`Error loading script: ${err.message}`));
1408
- } else {
1409
- maybeLoadScript("vega", "5")
1410
- .then(() => maybeLoadScript("vega-lite", "4.17.0"))
1411
- .then(() => maybeLoadScript("vega-embed", "6"))
1412
- .catch(showError)
1413
- .then(() => displayChart(vegaEmbed));
1414
- }
1415
- })({"config": {"view": {"continuousWidth": 400, "continuousHeight": 300}}, "data": {"url": "https://cdn.jsdelivr.net/npm/vega-datasets@v1.29.0/data/cars.json"}, "mark": "rect", "encoding": {"color": {"condition": {"aggregate": "count", "type": "quantitative", "selection": {"or": ["alex", "morgan"]}}, "value": "grey"}, "x": {"field": "Cylinders", "type": "ordinal"}, "y": {"field": "Origin", "type": "ordinal"}}, "height": 400, "selection": {"alex": {"type": "interval", "on": "[mousedown[event.altKey], mouseup] > mousemove"}, "morgan": {"type": "interval", "on": "[mousedown[event.shiftKey], mouseup] > mousemove", "mark": {"fill": "#fdbb84", "fillOpacity": 0.5, "stroke": "#e34a33"}}}, "width": 800, "$schema": "https://vega.github.io/schema/vega-lite/v4.17.0.json"}, {"mode": "vega-lite"});
1416
- </script>
1417
- </div>
1418
-
1419
- </div>
1420
-
1421
- </div>
1422
- </div>
1423
-
1424
- </div>
1425
- <div class="cell border-box-sizing text_cell rendered"><div class="inner_cell">
1426
- <div class="text_cell_render border-box-sizing rendered_html">
1427
- <p>With these operators, selections can be combined in arbitrary ways:</p>
1428
- <ul>
1429
- <li><p>~(alex &amp; morgan): to select the rectangles that fall outside Alex’s and Morgan’s selections.</p>
1430
- </li>
1431
- <li><p>alex | ~morgan: to select the rectangles that fall within Alex’s selection or outside the selection of Morgan</p>
1432
- </li>
1433
- </ul>
1434
-
1435
- </div>
1436
- </div>
1437
- </div>
1438
- <div class="cell border-box-sizing text_cell rendered"><div class="inner_cell">
1439
- <div class="text_cell_render border-box-sizing rendered_html">
1440
- <h4 id="Selection-Targets:-Fields-and-Encodings">Selection Targets: Fields and Encodings<a class="anchor-link" href="#Selection-Targets:-Fields-and-Encodings">&#182;</a></h4><p>For any but the simplest selections, the user needs to think about exactly what is targeted by the selection, and this can be controlled with either the fields or encodings arguments. These control what data properties are used to determine which points are part of the selection.</p>
1441
- <p>For example, here we create a small chart that acts as an interactive legend, by targeting the Origin field using fields=['Origin']. Clicking on points in the upper-right plot (the legend) will propagate a selection for all points with a matching Origin.</p>
1442
-
1443
- </div>
1444
- </div>
1445
- </div>
1446
-
1447
-
1448
-
1449
- <div class="
1450
- cell border-box-sizing code_cell rendered">
1451
- <div class="input">
1452
-
1453
- <div class="inner_cell">
1454
- <div class="input_area">
1455
- <div class=" highlight hl-ipython3"><pre><span></span><span class="n">selection</span> <span class="o">=</span> <span class="n">alt</span><span class="o">.</span><span class="n">selection_multi</span><span class="p">(</span><span class="n">fields</span><span class="o">=</span><span class="p">[</span><span class="s1">&#39;Origin&#39;</span><span class="p">])</span>
1456
-
1457
- <span class="n">color</span> <span class="o">=</span> <span class="n">alt</span><span class="o">.</span><span class="n">condition</span><span class="p">(</span>
1458
- <span class="n">selection</span><span class="p">,</span>
1459
- <span class="n">alt</span><span class="o">.</span><span class="n">Color</span><span class="p">(</span><span class="s1">&#39;Origin:N&#39;</span><span class="p">,</span> <span class="n">legend</span><span class="o">=</span><span class="kc">None</span><span class="p">),</span>
1460
- <span class="n">alt</span><span class="o">.</span><span class="n">value</span><span class="p">(</span><span class="s1">&#39;lightgray&#39;</span><span class="p">)</span>
1461
- <span class="p">)</span>
1462
-
1463
- <span class="n">scatter</span> <span class="o">=</span> <span class="n">alt</span><span class="o">.</span><span class="n">Chart</span><span class="p">(</span><span class="n">cars</span><span class="p">)</span><span class="o">.</span><span class="n">mark_point</span><span class="p">()</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span>
1464
- <span class="n">x</span><span class="o">=</span><span class="s1">&#39;Horsepower:Q&#39;</span><span class="p">,</span>
1465
- <span class="n">y</span><span class="o">=</span><span class="s1">&#39;Miles_per_Gallon:Q&#39;</span><span class="p">,</span>
1466
- <span class="n">color</span><span class="o">=</span><span class="n">color</span><span class="p">,</span>
1467
- <span class="n">tooltip</span><span class="o">=</span><span class="s1">&#39;Name:N&#39;</span>
1468
- <span class="p">)</span><span class="o">.</span><span class="n">properties</span><span class="p">(</span>
1469
- <span class="n">width</span><span class="o">=</span><span class="mi">800</span><span class="p">,</span>
1470
- <span class="n">height</span><span class="o">=</span><span class="mi">400</span>
1471
- <span class="p">)</span>
1472
-
1473
- <span class="n">legend</span> <span class="o">=</span> <span class="n">alt</span><span class="o">.</span><span class="n">Chart</span><span class="p">(</span><span class="n">cars</span><span class="p">)</span><span class="o">.</span><span class="n">mark_point</span><span class="p">()</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span>
1474
- <span class="n">y</span><span class="o">=</span><span class="n">alt</span><span class="o">.</span><span class="n">Y</span><span class="p">(</span><span class="s1">&#39;Origin:N&#39;</span><span class="p">,</span> <span class="n">axis</span><span class="o">=</span><span class="n">alt</span><span class="o">.</span><span class="n">Axis</span><span class="p">(</span><span class="n">orient</span><span class="o">=</span><span class="s1">&#39;right&#39;</span><span class="p">)),</span>
1475
- <span class="n">color</span><span class="o">=</span><span class="n">color</span>
1476
- <span class="p">)</span><span class="o">.</span><span class="n">add_selection</span><span class="p">(</span>
1477
- <span class="n">selection</span>
1478
- <span class="p">)</span>
1479
-
1480
- <span class="n">scatter</span> <span class="o">|</span> <span class="n">legend</span>
1481
- </pre></div>
1482
-
1483
- </div>
1484
- </div>
1485
- </div>
1486
-
1487
- <div class="output_wrapper">
1488
- <div class="output">
1489
-
1490
-
1491
- <div class="output_area">
1492
-
1493
-
1494
-
1495
-
1496
- <div class="output_html rendered_html output_subarea output_execute_result">
1497
-
1498
- <div id="altair-viz-a5af03e3f1414ce2af09e65aa4b017b6"></div>
1499
- <script type="text/javascript">
1500
- var VEGA_DEBUG = (typeof VEGA_DEBUG == "undefined") ? {} : VEGA_DEBUG;
1501
- (function(spec, embedOpt){
1502
- let outputDiv = document.currentScript.previousElementSibling;
1503
- if (outputDiv.id !== "altair-viz-a5af03e3f1414ce2af09e65aa4b017b6") {
1504
- outputDiv = document.getElementById("altair-viz-a5af03e3f1414ce2af09e65aa4b017b6");
1505
- }
1506
- const paths = {
1507
- "vega": "https://cdn.jsdelivr.net/npm//vega@5?noext",
1508
- "vega-lib": "https://cdn.jsdelivr.net/npm//vega-lib?noext",
1509
- "vega-lite": "https://cdn.jsdelivr.net/npm//vega-lite@4.17.0?noext",
1510
- "vega-embed": "https://cdn.jsdelivr.net/npm//vega-embed@6?noext",
1511
- };
1512
-
1513
- function maybeLoadScript(lib, version) {
1514
- var key = `${lib.replace("-", "")}_version`;
1515
- return (VEGA_DEBUG[key] == version) ?
1516
- Promise.resolve(paths[lib]) :
1517
- new Promise(function(resolve, reject) {
1518
- var s = document.createElement('script');
1519
- document.getElementsByTagName("head")[0].appendChild(s);
1520
- s.async = true;
1521
- s.onload = () => {
1522
- VEGA_DEBUG[key] = version;
1523
- return resolve(paths[lib]);
1524
- };
1525
- s.onerror = () => reject(`Error loading script: ${paths[lib]}`);
1526
- s.src = paths[lib];
1527
- });
1528
- }
1529
-
1530
- function showError(err) {
1531
- outputDiv.innerHTML = `<div class="error" style="color:red;">${err}</div>`;
1532
- throw err;
1533
- }
1534
-
1535
- function displayChart(vegaEmbed) {
1536
- vegaEmbed(outputDiv, spec, embedOpt)
1537
- .catch(err => showError(`Javascript Error: ${err.message}<br>This usually means there's a typo in your chart specification. See the javascript console for the full traceback.`));
1538
- }
1539
-
1540
- if(typeof define === "function" && define.amd) {
1541
- requirejs.config({paths});
1542
- require(["vega-embed"], displayChart, err => showError(`Error loading script: ${err.message}`));
1543
- } else {
1544
- maybeLoadScript("vega", "5")
1545
- .then(() => maybeLoadScript("vega-lite", "4.17.0"))
1546
- .then(() => maybeLoadScript("vega-embed", "6"))
1547
- .catch(showError)
1548
- .then(() => displayChart(vegaEmbed));
1549
- }
1550
- })({"config": {"view": {"continuousWidth": 400, "continuousHeight": 300}}, "hconcat": [{"mark": "point", "encoding": {"color": {"condition": {"field": "Origin", "legend": null, "type": "nominal", "selection": "selector016"}, "value": "lightgray"}, "tooltip": {"field": "Name", "type": "nominal"}, "x": {"field": "Horsepower", "type": "quantitative"}, "y": {"field": "Miles_per_Gallon", "type": "quantitative"}}, "height": 400, "width": 800}, {"mark": "point", "encoding": {"color": {"condition": {"field": "Origin", "legend": null, "type": "nominal", "selection": "selector016"}, "value": "lightgray"}, "y": {"axis": {"orient": "right"}, "field": "Origin", "type": "nominal"}}, "selection": {"selector016": {"type": "multi", "fields": ["Origin"]}}}], "data": {"url": "https://cdn.jsdelivr.net/npm/vega-datasets@v1.29.0/data/cars.json"}, "$schema": "https://vega.github.io/schema/vega-lite/v4.17.0.json"}, {"mode": "vega-lite"});
1551
- </script>
1552
- </div>
1553
-
1554
- </div>
1555
-
1556
- </div>
1557
- </div>
1558
-
1559
- </div>
1560
- <div class="cell border-box-sizing text_cell rendered"><div class="inner_cell">
1561
- <div class="text_cell_render border-box-sizing rendered_html">
1562
- <p>The above could be equivalently replace fields=['Origin'] with encodings=['color'], because in this case the chart maps color to 'Origin'.</p>
1563
- <p>Similarly, we can specify multiple fields and/or encodings that must be matched in order for a datum to be included in a selection. For example, we could modify the above chart to create a two-dimensional clickable legend that will select points by both Origin and number of cylinders:</p>
1564
-
1565
- </div>
1566
- </div>
1567
- </div>
1568
-
1569
-
1570
-
1571
- <div class="
1572
- cell border-box-sizing code_cell rendered">
1573
- <div class="input">
1574
-
1575
- <div class="inner_cell">
1576
- <div class="input_area">
1577
- <div class=" highlight hl-ipython3"><pre><span></span><span class="n">selection</span> <span class="o">=</span> <span class="n">alt</span><span class="o">.</span><span class="n">selection_multi</span><span class="p">(</span><span class="n">fields</span><span class="o">=</span><span class="p">[</span><span class="s1">&#39;Origin&#39;</span><span class="p">,</span> <span class="s1">&#39;Cylinders&#39;</span><span class="p">])</span>
1578
-
1579
- <span class="n">color</span> <span class="o">=</span> <span class="n">alt</span><span class="o">.</span><span class="n">condition</span><span class="p">(</span>
1580
- <span class="n">selection</span><span class="p">,</span>
1581
- <span class="n">alt</span><span class="o">.</span><span class="n">Color</span><span class="p">(</span><span class="s1">&#39;Origin:N&#39;</span><span class="p">,</span> <span class="n">legend</span><span class="o">=</span><span class="kc">None</span><span class="p">),</span>
1582
- <span class="n">alt</span><span class="o">.</span><span class="n">value</span><span class="p">(</span><span class="s1">&#39;lightgray&#39;</span><span class="p">)</span>
1583
- <span class="p">)</span>
1584
-
1585
- <span class="n">scatter</span> <span class="o">=</span> <span class="n">alt</span><span class="o">.</span><span class="n">Chart</span><span class="p">(</span><span class="n">cars</span><span class="p">)</span><span class="o">.</span><span class="n">mark_point</span><span class="p">()</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span>
1586
- <span class="n">x</span><span class="o">=</span><span class="s1">&#39;Horsepower:Q&#39;</span><span class="p">,</span>
1587
- <span class="n">y</span><span class="o">=</span><span class="s1">&#39;Miles_per_Gallon:Q&#39;</span><span class="p">,</span>
1588
- <span class="n">color</span><span class="o">=</span><span class="n">color</span><span class="p">,</span>
1589
- <span class="n">tooltip</span><span class="o">=</span><span class="s1">&#39;Name:N&#39;</span>
1590
- <span class="p">)</span><span class="o">.</span><span class="n">properties</span><span class="p">(</span>
1591
- <span class="n">width</span><span class="o">=</span><span class="mi">400</span><span class="p">,</span>
1592
- <span class="n">height</span><span class="o">=</span><span class="mi">400</span>
1593
- <span class="p">)</span>
1594
-
1595
- <span class="n">legend</span> <span class="o">=</span> <span class="n">alt</span><span class="o">.</span><span class="n">Chart</span><span class="p">(</span><span class="n">cars</span><span class="p">)</span><span class="o">.</span><span class="n">mark_rect</span><span class="p">()</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span>
1596
- <span class="n">y</span><span class="o">=</span><span class="n">alt</span><span class="o">.</span><span class="n">Y</span><span class="p">(</span><span class="s1">&#39;Origin:N&#39;</span><span class="p">,</span> <span class="n">axis</span><span class="o">=</span><span class="n">alt</span><span class="o">.</span><span class="n">Axis</span><span class="p">(</span><span class="n">orient</span><span class="o">=</span><span class="s1">&#39;right&#39;</span><span class="p">)),</span>
1597
- <span class="n">x</span><span class="o">=</span><span class="s1">&#39;Cylinders:O&#39;</span><span class="p">,</span>
1598
- <span class="n">color</span><span class="o">=</span><span class="n">color</span>
1599
- <span class="p">)</span><span class="o">.</span><span class="n">add_selection</span><span class="p">(</span>
1600
- <span class="n">selection</span>
1601
- <span class="p">)</span><span class="o">.</span><span class="n">properties</span><span class="p">(</span>
1602
- <span class="n">width</span><span class="o">=</span><span class="mi">400</span><span class="p">,</span>
1603
- <span class="n">height</span><span class="o">=</span><span class="mi">400</span>
1604
- <span class="p">)</span>
1605
-
1606
- <span class="n">scatter</span> <span class="o">|</span> <span class="n">legend</span>
1607
- </pre></div>
1608
-
1609
- </div>
1610
- </div>
1611
- </div>
1612
-
1613
- <div class="output_wrapper">
1614
- <div class="output">
1615
-
1616
-
1617
- <div class="output_area">
1618
-
1619
-
1620
-
1621
-
1622
- <div class="output_html rendered_html output_subarea output_execute_result">
1623
-
1624
- <div id="altair-viz-6650b1f76d184dbeb03618d8f956655d"></div>
1625
- <script type="text/javascript">
1626
- var VEGA_DEBUG = (typeof VEGA_DEBUG == "undefined") ? {} : VEGA_DEBUG;
1627
- (function(spec, embedOpt){
1628
- let outputDiv = document.currentScript.previousElementSibling;
1629
- if (outputDiv.id !== "altair-viz-6650b1f76d184dbeb03618d8f956655d") {
1630
- outputDiv = document.getElementById("altair-viz-6650b1f76d184dbeb03618d8f956655d");
1631
- }
1632
- const paths = {
1633
- "vega": "https://cdn.jsdelivr.net/npm//vega@5?noext",
1634
- "vega-lib": "https://cdn.jsdelivr.net/npm//vega-lib?noext",
1635
- "vega-lite": "https://cdn.jsdelivr.net/npm//vega-lite@4.17.0?noext",
1636
- "vega-embed": "https://cdn.jsdelivr.net/npm//vega-embed@6?noext",
1637
- };
1638
-
1639
- function maybeLoadScript(lib, version) {
1640
- var key = `${lib.replace("-", "")}_version`;
1641
- return (VEGA_DEBUG[key] == version) ?
1642
- Promise.resolve(paths[lib]) :
1643
- new Promise(function(resolve, reject) {
1644
- var s = document.createElement('script');
1645
- document.getElementsByTagName("head")[0].appendChild(s);
1646
- s.async = true;
1647
- s.onload = () => {
1648
- VEGA_DEBUG[key] = version;
1649
- return resolve(paths[lib]);
1650
- };
1651
- s.onerror = () => reject(`Error loading script: ${paths[lib]}`);
1652
- s.src = paths[lib];
1653
- });
1654
- }
1655
-
1656
- function showError(err) {
1657
- outputDiv.innerHTML = `<div class="error" style="color:red;">${err}</div>`;
1658
- throw err;
1659
- }
1660
-
1661
- function displayChart(vegaEmbed) {
1662
- vegaEmbed(outputDiv, spec, embedOpt)
1663
- .catch(err => showError(`Javascript Error: ${err.message}<br>This usually means there's a typo in your chart specification. See the javascript console for the full traceback.`));
1664
- }
1665
-
1666
- if(typeof define === "function" && define.amd) {
1667
- requirejs.config({paths});
1668
- require(["vega-embed"], displayChart, err => showError(`Error loading script: ${err.message}`));
1669
- } else {
1670
- maybeLoadScript("vega", "5")
1671
- .then(() => maybeLoadScript("vega-lite", "4.17.0"))
1672
- .then(() => maybeLoadScript("vega-embed", "6"))
1673
- .catch(showError)
1674
- .then(() => displayChart(vegaEmbed));
1675
- }
1676
- })({"config": {"view": {"continuousWidth": 400, "continuousHeight": 300}}, "hconcat": [{"mark": "point", "encoding": {"color": {"condition": {"field": "Origin", "legend": null, "type": "nominal", "selection": "selector017"}, "value": "lightgray"}, "tooltip": {"field": "Name", "type": "nominal"}, "x": {"field": "Horsepower", "type": "quantitative"}, "y": {"field": "Miles_per_Gallon", "type": "quantitative"}}, "height": 400, "width": 400}, {"mark": "rect", "encoding": {"color": {"condition": {"field": "Origin", "legend": null, "type": "nominal", "selection": "selector017"}, "value": "lightgray"}, "x": {"field": "Cylinders", "type": "ordinal"}, "y": {"axis": {"orient": "right"}, "field": "Origin", "type": "nominal"}}, "height": 400, "selection": {"selector017": {"type": "multi", "fields": ["Origin", "Cylinders"]}}, "width": 400}], "data": {"url": "https://cdn.jsdelivr.net/npm/vega-datasets@v1.29.0/data/cars.json"}, "$schema": "https://vega.github.io/schema/vega-lite/v4.17.0.json"}, {"mode": "vega-lite"});
1677
- </script>
1678
- </div>
1679
-
1680
- </div>
1681
-
1682
- </div>
1683
- </div>
1684
-
1685
- </div>
1686
- <div class="cell border-box-sizing text_cell rendered"><div class="inner_cell">
1687
- <div class="text_cell_render border-box-sizing rendered_html">
1688
- <p>By fine-tuning the behavior of selections in this way, they can be used to create a wide variety of linked interactive chart types.</p>
1689
-
1690
- </div>
1691
- </div>
1692
- </div>
1693
- <div class="cell border-box-sizing text_cell rendered"><div class="inner_cell">
1694
- <div class="text_cell_render border-box-sizing rendered_html">
1695
- <h3 id="Binding:-Adding-Data-Driven-Inputs">Binding: Adding Data Driven Inputs<a class="anchor-link" href="#Binding:-Adding-Data-Driven-Inputs">&#182;</a></h3><p>With an understanding of the selection types and conditions, you can now add data-driven input elements to the charts using the bind option. As specified by Vega-lite binding, selections can be bound two-ways:</p>
1696
- <ol>
1697
- <li><p>Single selections can be bound directly to an input element, for example, a radio button.</p>
1698
- </li>
1699
- <li><p>Interval selections which can be bound to scale, for example, zooming in on a map.</p>
1700
- </li>
1701
- </ol>
1702
-
1703
- </div>
1704
- </div>
1705
- </div>
1706
- <div class="cell border-box-sizing text_cell rendered"><div class="inner_cell">
1707
- <div class="text_cell_render border-box-sizing rendered_html">
1708
- <h4 id="Input-Element-Binding">Input Element Binding<a class="anchor-link" href="#Input-Element-Binding">&#182;</a></h4><p>With single selections, an input element can be added to the chart to establish a binding between the input and the selection.</p>
1709
- <p>For instance, using our example from above a dropdown can be used to highlight cars from a specific origin :</p>
1710
-
1711
- </div>
1712
- </div>
1713
- </div>
1714
-
1715
-
1716
-
1717
- <div class="
1718
- cell border-box-sizing code_cell rendered">
1719
- <div class="input">
1720
-
1721
- <div class="inner_cell">
1722
- <div class="input_area">
1723
- <div class=" highlight hl-ipython3"><pre><span></span><span class="n">input_dropdown</span> <span class="o">=</span> <span class="n">alt</span><span class="o">.</span><span class="n">binding_select</span><span class="p">(</span><span class="n">options</span><span class="o">=</span><span class="p">[</span><span class="s1">&#39;Europe&#39;</span><span class="p">,</span><span class="s1">&#39;Japan&#39;</span><span class="p">,</span><span class="s1">&#39;USA&#39;</span><span class="p">],</span> <span class="n">name</span><span class="o">=</span><span class="s1">&#39;Country&#39;</span><span class="p">)</span>
1724
-
1725
- <span class="n">selection</span> <span class="o">=</span> <span class="n">alt</span><span class="o">.</span><span class="n">selection_single</span><span class="p">(</span>
1726
- <span class="n">fields</span><span class="o">=</span><span class="p">[</span><span class="s1">&#39;Origin&#39;</span><span class="p">],</span>
1727
- <span class="n">bind</span><span class="o">=</span><span class="n">input_dropdown</span>
1728
- <span class="p">)</span>
1729
-
1730
- <span class="n">color</span> <span class="o">=</span> <span class="n">alt</span><span class="o">.</span><span class="n">condition</span><span class="p">(</span>
1731
- <span class="n">selection</span><span class="p">,</span>
1732
- <span class="n">alt</span><span class="o">.</span><span class="n">Color</span><span class="p">(</span><span class="s1">&#39;Origin:N&#39;</span><span class="p">,</span> <span class="n">legend</span><span class="o">=</span><span class="kc">None</span><span class="p">),</span>
1733
- <span class="n">alt</span><span class="o">.</span><span class="n">value</span><span class="p">(</span><span class="s1">&#39;lightgray&#39;</span><span class="p">)</span>
1734
- <span class="p">)</span>
1735
-
1736
- <span class="n">alt</span><span class="o">.</span><span class="n">Chart</span><span class="p">(</span><span class="n">cars</span><span class="p">)</span><span class="o">.</span><span class="n">mark_point</span><span class="p">()</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span>
1737
- <span class="n">x</span><span class="o">=</span><span class="s1">&#39;Horsepower:Q&#39;</span><span class="p">,</span>
1738
- <span class="n">y</span><span class="o">=</span><span class="s1">&#39;Miles_per_Gallon:Q&#39;</span><span class="p">,</span>
1739
- <span class="n">color</span><span class="o">=</span><span class="n">color</span><span class="p">,</span>
1740
- <span class="n">tooltip</span><span class="o">=</span><span class="s1">&#39;Name:N&#39;</span>
1741
- <span class="p">)</span><span class="o">.</span><span class="n">add_selection</span><span class="p">(</span>
1742
- <span class="n">selection</span>
1743
- <span class="p">)</span><span class="o">.</span><span class="n">properties</span><span class="p">(</span>
1744
- <span class="n">width</span><span class="o">=</span><span class="mi">800</span><span class="p">,</span>
1745
- <span class="n">height</span><span class="o">=</span><span class="mi">400</span>
1746
- <span class="p">)</span>
1747
- </pre></div>
1748
-
1749
- </div>
1750
- </div>
1751
- </div>
1752
-
1753
- <div class="output_wrapper">
1754
- <div class="output">
1755
-
1756
-
1757
- <div class="output_area">
1758
-
1759
-
1760
-
1761
-
1762
- <div class="output_html rendered_html output_subarea output_execute_result">
1763
-
1764
- <div id="altair-viz-bd49ae238c684a78841b72b6e3f12e42"></div>
1765
- <script type="text/javascript">
1766
- var VEGA_DEBUG = (typeof VEGA_DEBUG == "undefined") ? {} : VEGA_DEBUG;
1767
- (function(spec, embedOpt){
1768
- let outputDiv = document.currentScript.previousElementSibling;
1769
- if (outputDiv.id !== "altair-viz-bd49ae238c684a78841b72b6e3f12e42") {
1770
- outputDiv = document.getElementById("altair-viz-bd49ae238c684a78841b72b6e3f12e42");
1771
- }
1772
- const paths = {
1773
- "vega": "https://cdn.jsdelivr.net/npm//vega@5?noext",
1774
- "vega-lib": "https://cdn.jsdelivr.net/npm//vega-lib?noext",
1775
- "vega-lite": "https://cdn.jsdelivr.net/npm//vega-lite@4.17.0?noext",
1776
- "vega-embed": "https://cdn.jsdelivr.net/npm//vega-embed@6?noext",
1777
- };
1778
-
1779
- function maybeLoadScript(lib, version) {
1780
- var key = `${lib.replace("-", "")}_version`;
1781
- return (VEGA_DEBUG[key] == version) ?
1782
- Promise.resolve(paths[lib]) :
1783
- new Promise(function(resolve, reject) {
1784
- var s = document.createElement('script');
1785
- document.getElementsByTagName("head")[0].appendChild(s);
1786
- s.async = true;
1787
- s.onload = () => {
1788
- VEGA_DEBUG[key] = version;
1789
- return resolve(paths[lib]);
1790
- };
1791
- s.onerror = () => reject(`Error loading script: ${paths[lib]}`);
1792
- s.src = paths[lib];
1793
- });
1794
- }
1795
-
1796
- function showError(err) {
1797
- outputDiv.innerHTML = `<div class="error" style="color:red;">${err}</div>`;
1798
- throw err;
1799
- }
1800
-
1801
- function displayChart(vegaEmbed) {
1802
- vegaEmbed(outputDiv, spec, embedOpt)
1803
- .catch(err => showError(`Javascript Error: ${err.message}<br>This usually means there's a typo in your chart specification. See the javascript console for the full traceback.`));
1804
- }
1805
-
1806
- if(typeof define === "function" && define.amd) {
1807
- requirejs.config({paths});
1808
- require(["vega-embed"], displayChart, err => showError(`Error loading script: ${err.message}`));
1809
- } else {
1810
- maybeLoadScript("vega", "5")
1811
- .then(() => maybeLoadScript("vega-lite", "4.17.0"))
1812
- .then(() => maybeLoadScript("vega-embed", "6"))
1813
- .catch(showError)
1814
- .then(() => displayChart(vegaEmbed));
1815
- }
1816
- })({"config": {"view": {"continuousWidth": 400, "continuousHeight": 300}}, "data": {"url": "https://cdn.jsdelivr.net/npm/vega-datasets@v1.29.0/data/cars.json"}, "mark": "point", "encoding": {"color": {"condition": {"field": "Origin", "legend": null, "type": "nominal", "selection": "selector012"}, "value": "lightgray"}, "tooltip": {"field": "Name", "type": "nominal"}, "x": {"field": "Horsepower", "type": "quantitative"}, "y": {"field": "Miles_per_Gallon", "type": "quantitative"}}, "height": 400, "selection": {"selector012": {"type": "single", "fields": ["Origin"], "bind": {"input": "select", "options": ["Europe", "Japan", "USA"], "name": "Country"}}}, "width": 800, "$schema": "https://vega.github.io/schema/vega-lite/v4.17.0.json"}, {"mode": "vega-lite"});
1817
- </script>
1818
- </div>
1819
-
1820
- </div>
1821
-
1822
- </div>
1823
- </div>
1824
-
1825
- </div>
1826
- <div class="cell border-box-sizing text_cell rendered"><div class="inner_cell">
1827
- <div class="text_cell_render border-box-sizing rendered_html">
1828
- <p>The above example shows all three elements at work. The :input_dropdown: is :bind: to the :selection: which is called from the :condition: encoded through the data.</p>
1829
- <p>The following are the input elements supported in vega-lite:</p>
1830
- <table>
1831
- <thead><tr>
1832
- <th style="text-align:left">Input Element</th>
1833
- <th style="text-align:left">Description</th>
1834
- <th style="text-align:left">Example</th>
1835
- </tr>
1836
- </thead>
1837
- <tbody>
1838
- <tr>
1839
- <td style="text-align:left">binding_checkbox</td>
1840
- <td style="text-align:left">Renders as checkboxes allowing for multiple selections of items.</td>
1841
- <td style="text-align:left">Multiple Interactions</td>
1842
- </tr>
1843
- <tr>
1844
- <td style="text-align:left">binding_radio</td>
1845
- <td style="text-align:left">Radio buttons that force only a single selection</td>
1846
- <td style="text-align:left">Multiple Interactions</td>
1847
- </tr>
1848
- <tr>
1849
- <td style="text-align:left">binding_select</td>
1850
- <td style="text-align:left">Drop down box for selecting a single item from a list</td>
1851
- <td style="text-align:left">Multiple Interactions</td>
1852
- </tr>
1853
- <tr>
1854
- <td style="text-align:left">binding_range</td>
1855
- <td style="text-align:left">Shown as a slider to allow for selection along a scale.</td>
1856
- <td style="text-align:left">US Population Over Time</td>
1857
- </tr>
1858
- </tbody>
1859
- </table>
1860
- <p>Bindings and input elements can also be used to filter data on the client side. Reducing noise in the chart and allowing the user to see just certain selected elements:</p>
1861
-
1862
- </div>
1863
- </div>
1864
- </div>
1865
-
1866
-
1867
-
1868
- <div class="
1869
- cell border-box-sizing code_cell rendered">
1870
- <div class="input">
1871
-
1872
- <div class="inner_cell">
1873
- <div class="input_area">
1874
- <div class=" highlight hl-ipython3"><pre><span></span><span class="n">input_dropdown</span> <span class="o">=</span> <span class="n">alt</span><span class="o">.</span><span class="n">binding_select</span><span class="p">(</span>
1875
- <span class="n">options</span><span class="o">=</span><span class="p">[</span><span class="s1">&#39;Europe&#39;</span><span class="p">,</span><span class="s1">&#39;Japan&#39;</span><span class="p">,</span><span class="s1">&#39;USA&#39;</span><span class="p">],</span>
1876
- <span class="n">name</span><span class="o">=</span><span class="s1">&#39;Country&#39;</span>
1877
- <span class="p">)</span>
1878
-
1879
- <span class="n">selection</span> <span class="o">=</span> <span class="n">alt</span><span class="o">.</span><span class="n">selection_single</span><span class="p">(</span>
1880
- <span class="n">fields</span><span class="o">=</span><span class="p">[</span><span class="s1">&#39;Origin&#39;</span><span class="p">],</span>
1881
- <span class="n">bind</span><span class="o">=</span><span class="n">input_dropdown</span>
1882
- <span class="p">)</span>
1883
-
1884
- <span class="n">alt</span><span class="o">.</span><span class="n">Chart</span><span class="p">(</span><span class="n">cars</span><span class="p">)</span><span class="o">.</span><span class="n">mark_point</span><span class="p">()</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span>
1885
- <span class="n">x</span><span class="o">=</span><span class="s1">&#39;Horsepower:Q&#39;</span><span class="p">,</span>
1886
- <span class="n">y</span><span class="o">=</span><span class="s1">&#39;Miles_per_Gallon:Q&#39;</span><span class="p">,</span>
1887
- <span class="n">color</span><span class="o">=</span><span class="s1">&#39;Origin:N&#39;</span><span class="p">,</span>
1888
- <span class="n">tooltip</span><span class="o">=</span><span class="s1">&#39;Name:N&#39;</span>
1889
- <span class="p">)</span><span class="o">.</span><span class="n">add_selection</span><span class="p">(</span>
1890
- <span class="n">selection</span>
1891
- <span class="p">)</span><span class="o">.</span><span class="n">transform_filter</span><span class="p">(</span>
1892
- <span class="n">selection</span>
1893
- <span class="p">)</span><span class="o">.</span><span class="n">properties</span><span class="p">(</span>
1894
- <span class="n">width</span><span class="o">=</span><span class="mi">800</span><span class="p">,</span>
1895
- <span class="n">height</span><span class="o">=</span><span class="mi">400</span>
1896
- <span class="p">)</span>
1897
- </pre></div>
1898
-
1899
- </div>
1900
- </div>
1901
- </div>
1902
-
1903
- <div class="output_wrapper">
1904
- <div class="output">
1905
-
1906
-
1907
- <div class="output_area">
1908
-
1909
-
1910
-
1911
-
1912
- <div class="output_html rendered_html output_subarea output_execute_result">
1913
-
1914
- <div id="altair-viz-82cfae8715fe45a1a5f0db027dbd882b"></div>
1915
- <script type="text/javascript">
1916
- var VEGA_DEBUG = (typeof VEGA_DEBUG == "undefined") ? {} : VEGA_DEBUG;
1917
- (function(spec, embedOpt){
1918
- let outputDiv = document.currentScript.previousElementSibling;
1919
- if (outputDiv.id !== "altair-viz-82cfae8715fe45a1a5f0db027dbd882b") {
1920
- outputDiv = document.getElementById("altair-viz-82cfae8715fe45a1a5f0db027dbd882b");
1921
- }
1922
- const paths = {
1923
- "vega": "https://cdn.jsdelivr.net/npm//vega@5?noext",
1924
- "vega-lib": "https://cdn.jsdelivr.net/npm//vega-lib?noext",
1925
- "vega-lite": "https://cdn.jsdelivr.net/npm//vega-lite@4.17.0?noext",
1926
- "vega-embed": "https://cdn.jsdelivr.net/npm//vega-embed@6?noext",
1927
- };
1928
-
1929
- function maybeLoadScript(lib, version) {
1930
- var key = `${lib.replace("-", "")}_version`;
1931
- return (VEGA_DEBUG[key] == version) ?
1932
- Promise.resolve(paths[lib]) :
1933
- new Promise(function(resolve, reject) {
1934
- var s = document.createElement('script');
1935
- document.getElementsByTagName("head")[0].appendChild(s);
1936
- s.async = true;
1937
- s.onload = () => {
1938
- VEGA_DEBUG[key] = version;
1939
- return resolve(paths[lib]);
1940
- };
1941
- s.onerror = () => reject(`Error loading script: ${paths[lib]}`);
1942
- s.src = paths[lib];
1943
- });
1944
- }
1945
-
1946
- function showError(err) {
1947
- outputDiv.innerHTML = `<div class="error" style="color:red;">${err}</div>`;
1948
- throw err;
1949
- }
1950
-
1951
- function displayChart(vegaEmbed) {
1952
- vegaEmbed(outputDiv, spec, embedOpt)
1953
- .catch(err => showError(`Javascript Error: ${err.message}<br>This usually means there's a typo in your chart specification. See the javascript console for the full traceback.`));
1954
- }
1955
-
1956
- if(typeof define === "function" && define.amd) {
1957
- requirejs.config({paths});
1958
- require(["vega-embed"], displayChart, err => showError(`Error loading script: ${err.message}`));
1959
- } else {
1960
- maybeLoadScript("vega", "5")
1961
- .then(() => maybeLoadScript("vega-lite", "4.17.0"))
1962
- .then(() => maybeLoadScript("vega-embed", "6"))
1963
- .catch(showError)
1964
- .then(() => displayChart(vegaEmbed));
1965
- }
1966
- })({"config": {"view": {"continuousWidth": 400, "continuousHeight": 300}}, "data": {"url": "https://cdn.jsdelivr.net/npm/vega-datasets@v1.29.0/data/cars.json"}, "mark": "point", "encoding": {"color": {"field": "Origin", "type": "nominal"}, "tooltip": {"field": "Name", "type": "nominal"}, "x": {"field": "Horsepower", "type": "quantitative"}, "y": {"field": "Miles_per_Gallon", "type": "quantitative"}}, "height": 400, "selection": {"selector013": {"type": "single", "fields": ["Origin"], "bind": {"input": "select", "options": ["Europe", "Japan", "USA"], "name": "Country"}}}, "transform": [{"filter": {"selection": "selector013"}}], "width": 800, "$schema": "https://vega.github.io/schema/vega-lite/v4.17.0.json"}, {"mode": "vega-lite"});
1967
- </script>
1968
- </div>
1969
-
1970
- </div>
1971
-
1972
- </div>
1973
- </div>
1974
-
1975
- </div>
1976
- <div class="cell border-box-sizing text_cell rendered"><div class="inner_cell">
1977
- <div class="text_cell_render border-box-sizing rendered_html">
1978
- <h4 id="Scale-Binding">Scale Binding<a class="anchor-link" href="#Scale-Binding">&#182;</a></h4><p>With interval selections, the bind property can be set to the value of "scales". In these cases, the binding will automatically respond to the panning and zooming along the chart:</p>
1979
-
1980
- </div>
1981
- </div>
1982
- </div>
1983
-
1984
-
1985
-
1986
- <div class="
1987
- cell border-box-sizing code_cell rendered">
1988
- <div class="input">
1989
-
1990
- <div class="inner_cell">
1991
- <div class="input_area">
1992
- <div class=" highlight hl-ipython3"><pre><span></span><span class="n">selection</span> <span class="o">=</span> <span class="n">alt</span><span class="o">.</span><span class="n">selection_interval</span><span class="p">(</span>
1993
- <span class="n">bind</span><span class="o">=</span><span class="s1">&#39;scales&#39;</span>
1994
- <span class="p">)</span>
1995
-
1996
- <span class="n">alt</span><span class="o">.</span><span class="n">Chart</span><span class="p">(</span><span class="n">cars</span><span class="p">)</span><span class="o">.</span><span class="n">mark_point</span><span class="p">()</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span>
1997
- <span class="n">x</span><span class="o">=</span><span class="s1">&#39;Horsepower:Q&#39;</span><span class="p">,</span>
1998
- <span class="n">y</span><span class="o">=</span><span class="s1">&#39;Miles_per_Gallon:Q&#39;</span><span class="p">,</span>
1999
- <span class="n">color</span><span class="o">=</span><span class="s1">&#39;Origin:N&#39;</span><span class="p">,</span>
2000
- <span class="n">tooltip</span><span class="o">=</span><span class="s1">&#39;Name:N&#39;</span>
2001
- <span class="p">)</span><span class="o">.</span><span class="n">add_selection</span><span class="p">(</span>
2002
- <span class="n">selection</span>
2003
- <span class="p">)</span><span class="o">.</span><span class="n">properties</span><span class="p">(</span>
2004
- <span class="n">width</span><span class="o">=</span><span class="mi">800</span><span class="p">,</span>
2005
- <span class="n">height</span><span class="o">=</span><span class="mi">400</span>
2006
- <span class="p">)</span>
2007
- </pre></div>
2008
-
2009
- </div>
2010
- </div>
2011
- </div>
2012
-
2013
- <div class="output_wrapper">
2014
- <div class="output">
2015
-
2016
-
2017
- <div class="output_area">
2018
-
2019
-
2020
-
2021
-
2022
- <div class="output_html rendered_html output_subarea output_execute_result">
2023
-
2024
- <div id="altair-viz-985bb547a8b6437eabeccca99ad749bb"></div>
2025
- <script type="text/javascript">
2026
- var VEGA_DEBUG = (typeof VEGA_DEBUG == "undefined") ? {} : VEGA_DEBUG;
2027
- (function(spec, embedOpt){
2028
- let outputDiv = document.currentScript.previousElementSibling;
2029
- if (outputDiv.id !== "altair-viz-985bb547a8b6437eabeccca99ad749bb") {
2030
- outputDiv = document.getElementById("altair-viz-985bb547a8b6437eabeccca99ad749bb");
2031
- }
2032
- const paths = {
2033
- "vega": "https://cdn.jsdelivr.net/npm//vega@5?noext",
2034
- "vega-lib": "https://cdn.jsdelivr.net/npm//vega-lib?noext",
2035
- "vega-lite": "https://cdn.jsdelivr.net/npm//vega-lite@4.17.0?noext",
2036
- "vega-embed": "https://cdn.jsdelivr.net/npm//vega-embed@6?noext",
2037
- };
2038
-
2039
- function maybeLoadScript(lib, version) {
2040
- var key = `${lib.replace("-", "")}_version`;
2041
- return (VEGA_DEBUG[key] == version) ?
2042
- Promise.resolve(paths[lib]) :
2043
- new Promise(function(resolve, reject) {
2044
- var s = document.createElement('script');
2045
- document.getElementsByTagName("head")[0].appendChild(s);
2046
- s.async = true;
2047
- s.onload = () => {
2048
- VEGA_DEBUG[key] = version;
2049
- return resolve(paths[lib]);
2050
- };
2051
- s.onerror = () => reject(`Error loading script: ${paths[lib]}`);
2052
- s.src = paths[lib];
2053
- });
2054
- }
2055
-
2056
- function showError(err) {
2057
- outputDiv.innerHTML = `<div class="error" style="color:red;">${err}</div>`;
2058
- throw err;
2059
- }
2060
-
2061
- function displayChart(vegaEmbed) {
2062
- vegaEmbed(outputDiv, spec, embedOpt)
2063
- .catch(err => showError(`Javascript Error: ${err.message}<br>This usually means there's a typo in your chart specification. See the javascript console for the full traceback.`));
2064
- }
2065
-
2066
- if(typeof define === "function" && define.amd) {
2067
- requirejs.config({paths});
2068
- require(["vega-embed"], displayChart, err => showError(`Error loading script: ${err.message}`));
2069
- } else {
2070
- maybeLoadScript("vega", "5")
2071
- .then(() => maybeLoadScript("vega-lite", "4.17.0"))
2072
- .then(() => maybeLoadScript("vega-embed", "6"))
2073
- .catch(showError)
2074
- .then(() => displayChart(vegaEmbed));
2075
- }
2076
- })({"config": {"view": {"continuousWidth": 400, "continuousHeight": 300}}, "data": {"url": "https://cdn.jsdelivr.net/npm/vega-datasets@v1.29.0/data/cars.json"}, "mark": "point", "encoding": {"color": {"field": "Origin", "type": "nominal"}, "tooltip": {"field": "Name", "type": "nominal"}, "x": {"field": "Horsepower", "type": "quantitative"}, "y": {"field": "Miles_per_Gallon", "type": "quantitative"}}, "height": 400, "selection": {"selector014": {"type": "interval", "bind": "scales"}}, "width": 800, "$schema": "https://vega.github.io/schema/vega-lite/v4.17.0.json"}, {"mode": "vega-lite"});
2077
- </script>
2078
- </div>
2079
-
2080
- </div>
2081
-
2082
- </div>
2083
- </div>
2084
-
2085
- </div>
2086
- <div class="cell border-box-sizing text_cell rendered"><div class="inner_cell">
2087
- <div class="text_cell_render border-box-sizing rendered_html">
2088
- <h3 id="Selection-Values-in-Expressions">Selection Values in Expressions<a class="anchor-link" href="#Selection-Values-in-Expressions">&#182;</a></h3><p>Selection values can be accessed directly and used in expressions that affect the chart. For example, here we create a slider to choose a cutoff value, and color points based on whether they are smaller or larger than the value:</p>
2089
-
2090
- </div>
2091
- </div>
2092
- </div>
2093
-
2094
-
2095
-
2096
- <div class="
2097
- cell border-box-sizing code_cell rendered">
2098
- <div class="input">
2099
-
2100
- <div class="inner_cell">
2101
- <div class="input_area">
2102
- <div class=" highlight hl-ipython3"><pre><span></span><span class="kn">import</span> <span class="nn">pandas</span> <span class="k">as</span> <span class="nn">pd</span>
2103
- <span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
2104
-
2105
- <span class="n">rand</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">RandomState</span><span class="p">(</span><span class="mi">42</span><span class="p">)</span>
2106
-
2107
- <span class="n">df</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">({</span>
2108
- <span class="s1">&#39;xval&#39;</span><span class="p">:</span> <span class="nb">range</span><span class="p">(</span><span class="mi">100</span><span class="p">),</span>
2109
- <span class="s1">&#39;yval&#39;</span><span class="p">:</span> <span class="n">rand</span><span class="o">.</span><span class="n">randn</span><span class="p">(</span><span class="mi">100</span><span class="p">)</span><span class="o">.</span><span class="n">cumsum</span><span class="p">()</span>
2110
- <span class="p">})</span>
2111
-
2112
- <span class="n">slider</span> <span class="o">=</span> <span class="n">alt</span><span class="o">.</span><span class="n">binding_range</span><span class="p">(</span>
2113
- <span class="nb">min</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span>
2114
- <span class="nb">max</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span>
2115
- <span class="n">step</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span>
2116
- <span class="n">name</span><span class="o">=</span><span class="s1">&#39;cutoff:&#39;</span>
2117
- <span class="p">)</span>
2118
-
2119
- <span class="n">selector</span> <span class="o">=</span> <span class="n">alt</span><span class="o">.</span><span class="n">selection_single</span><span class="p">(</span>
2120
- <span class="n">name</span><span class="o">=</span><span class="s2">&quot;SelectorName&quot;</span><span class="p">,</span> <span class="n">fields</span><span class="o">=</span><span class="p">[</span><span class="s1">&#39;cutoff&#39;</span><span class="p">],</span>
2121
- <span class="n">bind</span><span class="o">=</span><span class="n">slider</span><span class="p">,</span> <span class="n">init</span><span class="o">=</span><span class="p">{</span><span class="s1">&#39;cutoff&#39;</span><span class="p">:</span> <span class="mi">50</span><span class="p">}</span>
2122
- <span class="p">)</span>
2123
-
2124
- <span class="n">alt</span><span class="o">.</span><span class="n">Chart</span><span class="p">(</span><span class="n">df</span><span class="p">)</span><span class="o">.</span><span class="n">mark_point</span><span class="p">()</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span>
2125
- <span class="n">x</span><span class="o">=</span><span class="s1">&#39;xval&#39;</span><span class="p">,</span>
2126
- <span class="n">y</span><span class="o">=</span><span class="s1">&#39;yval&#39;</span><span class="p">,</span>
2127
- <span class="n">color</span><span class="o">=</span><span class="n">alt</span><span class="o">.</span><span class="n">condition</span><span class="p">(</span>
2128
- <span class="n">alt</span><span class="o">.</span><span class="n">datum</span><span class="o">.</span><span class="n">xval</span> <span class="o">&lt;</span> <span class="n">selector</span><span class="o">.</span><span class="n">cutoff</span><span class="p">,</span>
2129
- <span class="n">alt</span><span class="o">.</span><span class="n">value</span><span class="p">(</span><span class="s1">&#39;red&#39;</span><span class="p">),</span> <span class="n">alt</span><span class="o">.</span><span class="n">value</span><span class="p">(</span><span class="s1">&#39;blue&#39;</span><span class="p">)</span>
2130
- <span class="p">)</span>
2131
- <span class="p">)</span><span class="o">.</span><span class="n">add_selection</span><span class="p">(</span>
2132
- <span class="n">selector</span>
2133
- <span class="p">)</span><span class="o">.</span><span class="n">properties</span><span class="p">(</span>
2134
- <span class="n">width</span><span class="o">=</span><span class="mi">800</span><span class="p">,</span>
2135
- <span class="n">height</span><span class="o">=</span><span class="mi">400</span>
2136
- <span class="p">)</span>
2137
- </pre></div>
2138
-
2139
- </div>
2140
- </div>
2141
- </div>
2142
-
2143
- <div class="output_wrapper">
2144
- <div class="output">
2145
-
2146
-
2147
- <div class="output_area">
2148
-
2149
-
2150
-
2151
-
2152
- <div class="output_html rendered_html output_subarea output_execute_result">
2153
-
2154
- <div id="altair-viz-aff84924219d47ef975850b04367c733"></div>
2155
- <script type="text/javascript">
2156
- var VEGA_DEBUG = (typeof VEGA_DEBUG == "undefined") ? {} : VEGA_DEBUG;
2157
- (function(spec, embedOpt){
2158
- let outputDiv = document.currentScript.previousElementSibling;
2159
- if (outputDiv.id !== "altair-viz-aff84924219d47ef975850b04367c733") {
2160
- outputDiv = document.getElementById("altair-viz-aff84924219d47ef975850b04367c733");
2161
- }
2162
- const paths = {
2163
- "vega": "https://cdn.jsdelivr.net/npm//vega@5?noext",
2164
- "vega-lib": "https://cdn.jsdelivr.net/npm//vega-lib?noext",
2165
- "vega-lite": "https://cdn.jsdelivr.net/npm//vega-lite@4.17.0?noext",
2166
- "vega-embed": "https://cdn.jsdelivr.net/npm//vega-embed@6?noext",
2167
- };
2168
-
2169
- function maybeLoadScript(lib, version) {
2170
- var key = `${lib.replace("-", "")}_version`;
2171
- return (VEGA_DEBUG[key] == version) ?
2172
- Promise.resolve(paths[lib]) :
2173
- new Promise(function(resolve, reject) {
2174
- var s = document.createElement('script');
2175
- document.getElementsByTagName("head")[0].appendChild(s);
2176
- s.async = true;
2177
- s.onload = () => {
2178
- VEGA_DEBUG[key] = version;
2179
- return resolve(paths[lib]);
2180
- };
2181
- s.onerror = () => reject(`Error loading script: ${paths[lib]}`);
2182
- s.src = paths[lib];
2183
- });
2184
- }
2185
-
2186
- function showError(err) {
2187
- outputDiv.innerHTML = `<div class="error" style="color:red;">${err}</div>`;
2188
- throw err;
2189
- }
2190
-
2191
- function displayChart(vegaEmbed) {
2192
- vegaEmbed(outputDiv, spec, embedOpt)
2193
- .catch(err => showError(`Javascript Error: ${err.message}<br>This usually means there's a typo in your chart specification. See the javascript console for the full traceback.`));
2194
- }
2195
-
2196
- if(typeof define === "function" && define.amd) {
2197
- requirejs.config({paths});
2198
- require(["vega-embed"], displayChart, err => showError(`Error loading script: ${err.message}`));
2199
- } else {
2200
- maybeLoadScript("vega", "5")
2201
- .then(() => maybeLoadScript("vega-lite", "4.17.0"))
2202
- .then(() => maybeLoadScript("vega-embed", "6"))
2203
- .catch(showError)
2204
- .then(() => displayChart(vegaEmbed));
2205
- }
2206
- })({"config": {"view": {"continuousWidth": 400, "continuousHeight": 300}}, "data": {"name": "data-a99664901d810a6b330d8e4930eed708"}, "mark": "point", "encoding": {"color": {"condition": {"value": "red", "test": "(datum.xval < SelectorName.cutoff)"}, "value": "blue"}, "x": {"field": "xval", "type": "quantitative"}, "y": {"field": "yval", "type": "quantitative"}}, "height": 400, "selection": {"SelectorName": {"type": "single", "fields": ["cutoff"], "bind": {"input": "range", "max": 100, "min": 0, "name": "cutoff:", "step": 1}, "init": {"cutoff": 50}}}, "width": 800, "$schema": "https://vega.github.io/schema/vega-lite/v4.17.0.json", "datasets": {"data-a99664901d810a6b330d8e4930eed708": [{"xval": 0, "yval": 0.4967141530112327}, {"xval": 1, "yval": 0.358449851840048}, {"xval": 2, "yval": 1.0061383899407406}, {"xval": 3, "yval": 2.5291682463487657}, {"xval": 4, "yval": 2.2950148716254297}, {"xval": 5, "yval": 2.060877914676249}, {"xval": 6, "yval": 3.6400907301836405}, {"xval": 7, "yval": 4.407525459336549}, {"xval": 8, "yval": 3.938051073401597}, {"xval": 9, "yval": 4.4806111169875615}, {"xval": 10, "yval": 4.017193424175099}, {"xval": 11, "yval": 3.5514636706048424}, {"xval": 12, "yval": 3.7934259421708765}, {"xval": 13, "yval": 1.8801456975130786}, {"xval": 14, "yval": 0.15522786500004582}, {"xval": 15, "yval": -0.4070596642409269}, {"xval": 16, "yval": -1.4198907845753506}, {"xval": 17, "yval": -1.1056434519800766}, {"xval": 18, "yval": -2.0136675275012874}, {"xval": 19, "yval": -3.4259712288365787}, {"xval": 20, "yval": -1.9603224599150246}, {"xval": 21, "yval": -2.1860987604015603}, {"xval": 22, "yval": -2.1185705557136365}, {"xval": 23, "yval": -3.5433187419270933}, {"xval": 24, "yval": -4.087701466452276}, {"xval": 25, "yval": -3.9767788767424097}, {"xval": 26, "yval": -5.127772454164712}, {"xval": 27, "yval": -4.75207443581904}, {"xval": 28, "yval": -5.352713125737845}, {"xval": 29, "yval": -5.644406875531121}, {"xval": 30, "yval": -6.2461134877605184}, {"xval": 31, "yval": -4.3938353032515804}, {"xval": 32, "yval": -4.407332527989515}, {"xval": 33, "yval": -5.4650434569454145}, {"xval": 34, "yval": -4.642498544842225}, {"xval": 35, "yval": -5.863342194813248}, {"xval": 36, "yval": -5.654478599808492}, {"xval": 37, "yval": -7.614148723688268}, {"xval": 38, "yval": -8.942334772586698}, {"xval": 39, "yval": -8.745473536717574}, {"xval": 40, "yval": -8.007006956722163}, {"xval": 41, "yval": -7.835638675532193}, {"xval": 42, "yval": -7.951286957920433}, {"xval": 43, "yval": -8.252390653509723}, {"xval": 44, "yval": -9.73091264387715}, {"xval": 45, "yval": -10.450756852271859}, {"xval": 46, "yval": -10.911395623231646}, {"xval": 47, "yval": -9.854273397012731}, {"xval": 48, "yval": -9.51065510744427}, {"xval": 49, "yval": -11.273695262807005}, {"xval": 50, "yval": -10.94961129341221}, {"xval": 51, "yval": -11.334693573828526}, {"xval": 52, "yval": -12.011615574134485}, {"xval": 53, "yval": -11.399939285293616}, {"xval": 54, "yval": -10.368939762797666}, {"xval": 55, "yval": -9.437659643681467}, {"xval": 56, "yval": -10.276877166904105}, {"xval": 57, "yval": -10.58608954275532}, {"xval": 58, "yval": -10.254826111351756}, {"xval": 59, "yval": -9.279280984229397}, {"xval": 60, "yval": -9.758455222074687}, {"xval": 61, "yval": -9.944114198738504}, {"xval": 62, "yval": -11.050449172744532}, {"xval": 63, "yval": -12.246655796825202}, {"xval": 64, "yval": -11.434129974431004}, {"xval": 65, "yval": -10.07788994586018}, {"xval": 66, "yval": -10.149900067440514}, {"xval": 67, "yval": -9.14636716954849}, {"xval": 68, "yval": -8.784731144500856}, {"xval": 69, "yval": -9.42985089910598}, {"xval": 70, "yval": -9.068455293597568}, {"xval": 71, "yval": -7.5304187271315985}, {"xval": 72, "yval": -7.56624476624155}, {"xval": 73, "yval": -6.001601110427544}, {"xval": 74, "yval": -8.621346214517288}, {"xval": 75, "yval": -7.799443710142064}, {"xval": 76, "yval": -7.712396641903893}, {"xval": 77, "yval": -8.011403992369761}, {"xval": 78, "yval": -7.919643215834259}, {"xval": 79, "yval": -9.907212130435152}, {"xval": 80, "yval": -10.126884018272664}, {"xval": 81, "yval": -9.769771446760917}, {"xval": 82, "yval": -8.2918774020194}, {"xval": 83, "yval": -8.810147620293048}, {"xval": 84, "yval": -9.618641223186236}, {"xval": 85, "yval": -10.120398266770772}, {"xval": 86, "yval": -9.204996149068698}, {"xval": 87, "yval": -8.876245039409014}, {"xval": 88, "yval": -9.406005243176052}, {"xval": 89, "yval": -8.892737810062696}, {"xval": 90, "yval": -8.795660260714657}, {"xval": 91, "yval": -7.827015270181768}, {"xval": 92, "yval": -8.529068364059121}, {"xval": 93, "yval": -8.85673051065689}, {"xval": 94, "yval": -9.248838663789048}, {"xval": 95, "yval": -10.712353611921166}, {"xval": 96, "yval": -10.41623333485659}, {"xval": 97, "yval": -10.1551780626767}, {"xval": 98, "yval": -10.15006460603424}, {"xval": 99, "yval": -10.384651739409387}]}}, {"mode": "vega-lite"});
2207
- </script>
2208
- </div>
2209
-
2210
- </div>
2211
-
2212
- </div>
2213
- </div>
2214
-
2215
- </div>
2216
-