j1-template 2022.5.0 → 2022.5.1.rc0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (386) hide show
  1. checksums.yaml +4 -4
  2. data/_includes/themes/j1/modules/attics/generator.html +5 -13
  3. data/assets/data/banner.html +2 -2
  4. data/assets/themes/j1/adapter/js/attic.js +106 -62
  5. data/assets/themes/j1/core/css/themes/unolight/bootstrap.css +26 -1
  6. data/assets/themes/j1/core/css/themes/unolight/bootstrap.min.css +1 -1
  7. data/assets/themes/j1/modules/backstretch/js/backstretch.js +1 -1
  8. data/assets/themes/j1/modules/backstretch/js/v2.1.16/backstretch.js +1696 -0
  9. data/assets/themes/j1/modules/backstretch/js/v2.1.16/backstretch.min.js +20 -0
  10. data/assets/themes/j1/modules/backstretch/js/v2.1.18/backstretch.js +1627 -0
  11. data/assets/themes/j1/modules/backstretch/js/v2.1.18/backstretch.min.js +20 -0
  12. data/lib/j1/version.rb +1 -1
  13. data/lib/starter_web/Gemfile +1 -1
  14. data/lib/starter_web/README.md +440 -175
  15. data/lib/starter_web/_config.yml +1 -1
  16. data/lib/starter_web/_data/blocks/banner.yml +1 -1
  17. data/lib/starter_web/_data/modules/attics.yml +12 -0
  18. data/lib/starter_web/_data/modules/defaults/attics.yml +16 -1
  19. data/lib/starter_web/_data/modules/navigator_menu.yml +28 -25
  20. data/lib/starter_web/_plugins/lunr_index.rb +1 -1
  21. data/lib/starter_web/assets/images/modules/attics/1920x1280/ben-kolde.jpg +0 -0
  22. data/lib/starter_web/assets/images/modules/attics/1920x1280/braden-collum.jpg +0 -0
  23. data/lib/starter_web/assets/images/modules/attics/1920x1280/ev.jpg +0 -0
  24. data/lib/starter_web/assets/images/modules/attics/1920x1280/firmbee-com.jpg +0 -0
  25. data/lib/starter_web/assets/images/modules/attics/1920x1280/max-harlynking.jpg +0 -0
  26. data/lib/starter_web/assets/images/modules/attics/guillaume-bolduc-1920x1280.jpg +0 -0
  27. data/lib/starter_web/assets/images/modules/attics/spacex-1920x1280.jpg +0 -0
  28. data/lib/starter_web/assets/videos/headers/{still → present_videos/still}/underground-broadway.jpg +0 -0
  29. data/lib/starter_web/assets/videos/headers/present_videos/underground-broadway.mp4 +0 -0
  30. data/lib/starter_web/collections/asciidoc_skeletons/simple-post/_posts/yyyy-mm-dd-your-post-name.asciidoc +3 -1
  31. data/lib/starter_web/collections/posts/public/featured/_posts/2021-01-01-about-cookies.adoc +3 -0
  32. data/lib/starter_web/collections/posts/public/featured/_posts/2021-02-01-site-generators.adoc +2 -3
  33. data/lib/starter_web/collections/posts/public/featured/_posts/2022-02-01-about-j1.adoc +3 -0
  34. data/lib/starter_web/collections/posts/public/series/_posts/2020-01-01-post-wiki-series.adoc +3 -0
  35. data/lib/starter_web/collections/posts/public/series/_posts/2020-01-02-post-wiki-series.adoc +3 -0
  36. data/lib/starter_web/collections/posts/public/series/_posts/2020-01-03-post-wiki-series.adoc +3 -0
  37. data/lib/starter_web/index.html +41 -7
  38. data/lib/starter_web/package.json +1 -1
  39. data/lib/starter_web/pages/public/about/features.adoc +119 -0
  40. data/lib/starter_web/pages/public/about/reporting_issues.adoc +5 -1
  41. data/lib/starter_web/pages/public/about/{about_site.adoc → site.adoc} +20 -15
  42. data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/documentation.adoc +3 -0
  43. data/lib/starter_web/pages/public/asciidoc_skeletons/multi-document/multi.adoc +3 -0
  44. data/lib/starter_web/pages/public/asciidoc_skeletons/simple-document/simple.adoc +3 -0
  45. data/lib/starter_web/pages/public/blog/navigator/archive/categoryview.html +3 -0
  46. data/lib/starter_web/pages/public/blog/navigator/archive/dateview.html +4 -1
  47. data/lib/starter_web/pages/public/blog/navigator/archive/tagview.html +4 -1
  48. data/lib/starter_web/pages/public/blog/navigator/archive.html +4 -1
  49. data/lib/starter_web/pages/public/blog/navigator/index.html +4 -1
  50. data/lib/starter_web/pages/public/features/general.adoc +5 -1
  51. data/lib/starter_web/pages/public/features/template.adoc +4 -0
  52. data/lib/starter_web/pages/public/jupyter/examples/distributed/j1-circular-times-table.adoc +3 -0
  53. data/lib/starter_web/pages/public/jupyter/examples/distributed/j1-common-used-widgets.adoc +3 -0
  54. data/lib/starter_web/pages/public/jupyter/examples/distributed/j1-odes-in-python.adoc +3 -0
  55. data/lib/starter_web/pages/public/jupyter/examples/localized/j1_climate-change-forecast.adoc +3 -0
  56. data/lib/starter_web/pages/public/learn/quickstart.adoc +4 -1
  57. data/lib/starter_web/pages/public/learn/roundtrip/100_present_images.adoc +4 -1
  58. data/lib/starter_web/pages/public/learn/roundtrip/100_present_videos.adoc +16 -5
  59. data/lib/starter_web/pages/public/learn/roundtrip/200_typography.adoc +3 -0
  60. data/lib/starter_web/pages/public/learn/roundtrip/300_icon_fonts.adoc +3 -0
  61. data/lib/starter_web/pages/public/learn/roundtrip/400_asciidoc_extensions.adoc +3 -0
  62. data/lib/starter_web/pages/public/learn/roundtrip/410_bs_modals_extentions.adoc +3 -0
  63. data/lib/starter_web/pages/public/learn/roundtrip/420_responsive_tables_extensions.adoc +3 -0
  64. data/lib/starter_web/pages/public/learn/roundtrip/500_themes.adoc +3 -0
  65. data/lib/starter_web/pages/public/learn/roundtrip/600_quicksearch.adoc +6 -2
  66. data/lib/starter_web/pages/public/learn/where_to_go.adoc +3 -0
  67. data/lib/starter_web/pages/public/legal/de/100_copyright.adoc +3 -0
  68. data/lib/starter_web/pages/public/legal/de/100_impress.adoc +3 -0
  69. data/lib/starter_web/pages/public/legal/de/300_privacy.adoc +3 -0
  70. data/lib/starter_web/pages/public/legal/de/400_comment_policy.adoc +3 -0
  71. data/lib/starter_web/pages/public/legal/en/100_copyright.adoc +9 -1
  72. data/lib/starter_web/pages/public/legal/en/200_impress.adoc +10 -2
  73. data/lib/starter_web/pages/public/legal/en/300_privacy.adoc +3 -0
  74. data/lib/starter_web/pages/public/legal/en/400_comment_policy.adoc +3 -0
  75. data/lib/starter_web/pages/public/panels/intro_panel/panel.adoc +3 -0
  76. data/lib/starter_web/pages/public/plans/plans.adoc +3 -0
  77. data/lib/starter_web/pages/public/previewer/preview_bootstrap_theme.adoc +4 -0
  78. data/lib/starter_web/pages/public/se/se-fake.adoc +4 -0
  79. data/lib/starter_web/utilsrv/_defaults/package.json +1 -1
  80. data/lib/starter_web/utilsrv/package.json +1 -1
  81. metadata +19 -367
  82. data/lib/starter_web/assets/videos/headers/still/victoria-oskolovich-on-vimeo.jpg +0 -0
  83. data/lib/starter_web/pages/public/_jupyter/docs/_includes/attributes.asciidoc +0 -67
  84. data/lib/starter_web/pages/public/_jupyter/docs/_includes/documents/j1_docs_example_static.asciidoc +0 -232
  85. data/lib/starter_web/pages/public/_jupyter/docs/binderhub.adoc +0 -631
  86. data/lib/starter_web/pages/public/_jupyter/docs/j1-nbinteract.adoc +0 -638
  87. data/lib/starter_web/pages/public/_jupyter/docs/jupyterhub.adoc +0 -248
  88. data/lib/starter_web/pages/public/_jupyter/docs/nbinteract-widget-manual.adoc +0 -928
  89. data/lib/starter_web/pages/public/_jupyter/examples/distributed/j1-circular-times-table.adoc +0 -139
  90. data/lib/starter_web/pages/public/_jupyter/examples/distributed/j1-common-used-widgets.adoc +0 -229
  91. data/lib/starter_web/pages/public/_jupyter/examples/distributed/j1-odes-in-python.adoc +0 -112
  92. data/lib/starter_web/pages/public/_jupyter/examples/localized/j1-altair/j1-altair-visualisations.adoc +0 -142
  93. data/lib/starter_web/pages/public/_jupyter/examples/localized/j1-bokeh/j1-bokeh-visualisations.adoc +0 -171
  94. data/lib/starter_web/pages/public/_jupyter/examples/localized/j1-bokeh/j1-bqplot-eamples.adoc +0 -111
  95. data/lib/starter_web/pages/public/_jupyter/examples/localized/j1-plotly/j1-plotly-visualisations.adoc +0 -94
  96. data/lib/starter_web/pages/public/_jupyter/examples/localized/j1_climate-change-forecast.adoc +0 -106
  97. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_altair_interactive-checkpoint.ipynb +0 -16260
  98. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_bgplot_line_plot-checkpoint.ipynb +0 -247
  99. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_circular_times_table-Copy1-checkpoint.ipynb +0 -12382
  100. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_circular_times_table-checkpoint.ipynb +0 -12387
  101. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_circular_times_table-short-checkpoint.ipynb +0 -12170
  102. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_climate_change_forecast-checkpoint.ipynb +0 -1058
  103. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_docs_example_dynamic-checkpoint.ipynb +0 -14478
  104. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_interactive_widgets-Copy1-checkpoint.ipynb +0 -379
  105. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_interactive_widgets-checkpoint.ipynb +0 -442
  106. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets-checkpoint.ipynb +0 -523
  107. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets.line_charts-checkpoint.ipynb +0 -84
  108. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets.questions-checkpoint.ipynb +0 -194
  109. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets_bar_chart-checkpoint.ipynb +0 -89
  110. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets_bar_charts-Copy1-checkpoint.ipynb +0 -164
  111. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets_bar_charts-checkpoint.ipynb +0 -173
  112. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets_bar_charts.1-checkpoint.ipynb +0 -256
  113. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets_barcharts-checkpoint.ipynb +0 -126
  114. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets_hist_chart-checkpoint.ipynb +0 -87
  115. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets_line_chart-checkpoint.ipynb +0 -90
  116. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets_line_charts-checkpoint.ipynb +0 -87
  117. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets_question_multiple_choice-checkpoint.ipynb +0 -64
  118. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets_question_short_answer-checkpoint.ipynb +0 -122
  119. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets_questions-checkpoint.ipynb +0 -181
  120. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets_scatter_chart-checkpoint.ipynb +0 -89
  121. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets_scatter_charts-checkpoint.ipynb +0 -175
  122. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets_scatter_drag_chart-checkpoint.ipynb +0 -87
  123. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_ode_selected-checkpoint.ipynb +0 -14478
  124. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_odes_in_python-checkpoint.ipynb +0 -15227
  125. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/factor_by_factor.mp4 +0 -0
  126. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/j1_circular_times_table.ipynb +0 -12382
  127. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/j1_climate_change_forecast.ipynb +0 -1058
  128. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/j1_docs_example_dynamic.ipynb +0 -14478
  129. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/j1_interactive_widgets.ipynb +0 -442
  130. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/j1_nbi_widgets.ipynb +0 -523
  131. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/j1_nbi_widgets_bar_chart.ipynb +0 -89
  132. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/j1_nbi_widgets_hist_chart.ipynb +0 -87
  133. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/j1_nbi_widgets_line_chart.ipynb +0 -90
  134. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/j1_nbi_widgets_question_multiple_choice.ipynb +0 -64
  135. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/j1_nbi_widgets_question_short_answer.ipynb +0 -122
  136. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/j1_nbi_widgets_scatter_chart.ipynb +0 -89
  137. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/j1_nbi_widgets_scatter_drag_chart.ipynb +0 -87
  138. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/j1_odes_in_python.ipynb +0 -15227
  139. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/line_by_line.mp4 +0 -0
  140. data/lib/starter_web/pages/public/_jupyter/notebooks/j1/point_by_point.mp4 +0 -0
  141. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-altair-tutorial/.ipynb_checkpoints/j1_altair_interactive-checkpoint.ipynb +0 -16296
  142. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-altair-tutorial/.ipynb_checkpoints/j1_altair_non_interactive-checkpoint.ipynb +0 -15385
  143. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-altair-tutorial/j1_altair_interactive.ipynb +0 -16296
  144. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-altair-tutorial/j1_altair_non_interactive.ipynb +0 -15385
  145. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/00 - Introduction and Setup-checkpoint.ipynb +0 -717
  146. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/01 - Basic Plotting-checkpoint.ipynb +0 -1381
  147. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/02 - Styling and Theming-checkpoint.ipynb +0 -1440
  148. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/03 - Data Sources and Transformations-checkpoint.ipynb +0 -927
  149. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/04 - Adding Annotations-checkpoint.ipynb +0 -1105
  150. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/05 - Presentation Layouts-checkpoint.ipynb +0 -578
  151. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/06 - Linking and Interactions-checkpoint.ipynb +0 -1196
  152. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/07 - Bar and Categorical Data Plots-checkpoint.ipynb +0 -1681
  153. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/08 - Graph and Network Plots-checkpoint.ipynb +0 -680
  154. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/09 - Geographic Plots-checkpoint.ipynb +0 -693
  155. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/10 - Exporting and Embedding-checkpoint.ipynb +0 -751
  156. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/11 - Running Bokeh Applications-checkpoint.ipynb +0 -770
  157. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/bokeh_tut_00_introduction_and_setup-checkpoint.ipynb +0 -666
  158. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/j1_bokeh_01_basic_plotting-checkpoint.ipynb +0 -1365
  159. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/j1_bokeh_02_styling_and_theming-checkpoint.ipynb +0 -1405
  160. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/j1_bokeh_03_data_sources_and_transformations-checkpoint.ipynb +0 -856
  161. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/j1_bokeh_04_adding_annotations-checkpoint.ipynb +0 -1167
  162. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/j1_bokeh_05_presentation_layouts-checkpoint.ipynb +0 -601
  163. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/j1_bokeh_06_linking_and_interactions-checkpoint.ipynb +0 -1356
  164. 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
  165. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/j1_bokeh_08_graph_and_network_plots-checkpoint.ipynb +0 -625
  166. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/j1_bokeh_09_geographic_plots-checkpoint.ipynb +0 -685
  167. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/j1_bokeh_10_exporting_and_embedding-checkpoint.ipynb +0 -726
  168. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/j1_bokeh_10_exporting_and_embedding-checkpoint.org +0 -726
  169. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/j1_bokeh_10_exporting_and_embedding.new-checkpoint.ipynb +0 -560
  170. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/j1_bokeh_11_running_bokeh_applications-checkpoint.ipynb +0 -716
  171. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/j1_bokeh_01_basic_plotting.ipynb +0 -1365
  172. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/j1_bokeh_02_styling_and_theming.ipynb +0 -1405
  173. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/j1_bokeh_03_data_sources_and_transformations.ipynb +0 -856
  174. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/j1_bokeh_04_adding_annotations.ipynb +0 -1167
  175. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/j1_bokeh_05_presentation_layouts.ipynb +0 -601
  176. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/j1_bokeh_06_linking_and_interactions.ipynb +0 -1356
  177. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/j1_bokeh_07_bar_and_categorical_data_plots.ipynb +0 -1742
  178. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/j1_bokeh_08_graph_and_network_plots.ipynb +0 -625
  179. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/j1_bokeh_09_geographic_plots.ipynb +0 -685
  180. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bqplot/.ipynb_checkpoints/j1_mathplot_vs_bqplot-checkpoint.ipynb +0 -336
  181. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bqplot/advanced/Feature_Vector_Distribution-Iris-Digits.ipynb +0 -433
  182. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bqplot/j1_bgplot_line_plot.ipynb +0 -244
  183. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bqplot/j1_circular_times_table-short.ipynb +0 -12170
  184. data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bqplot/j1_mathplot_vs_bqplot.ipynb +0 -336
  185. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/.ipynb_checkpoints/Index-checkpoint.ipynb +0 -163
  186. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/.ipynb_checkpoints/Tutorials-checkpoint.ipynb +0 -51
  187. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Advanced Plotting/Advanced Plotting.ipynb +0 -289
  188. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Advanced Plotting/Animations.ipynb +0 -266
  189. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Advanced Plotting/Axis Properties.ipynb +0 -396
  190. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Advanced Plotting/Plotting Dates.ipynb +0 -318
  191. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Applications/Equity Index Performance/Time Series.ipynb +0 -158
  192. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Applications/Equity Index Performance/spx_prices.csv +0 -6799
  193. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Applications/Feature_Vector_Distribution-Iris-Digits.ipynb +0 -470
  194. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Applications/Index.ipynb +0 -49
  195. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Applications/Logs Analytics/Logs Dashboard.ipynb +0 -378
  196. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Applications/Mobile Patent Suits.ipynb +0 -123
  197. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Applications/Neural Network.ipynb +0 -177
  198. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Applications/Outlier Detection.ipynb +0 -311
  199. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Applications/Wealth Of Nations/Bubble Chart.ipynb +0 -255
  200. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Applications/Wealth Of Nations/Choropleth.ipynb +0 -275
  201. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Applications/Wealth Of Nations/nations.json +0 -1
  202. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Applications/Wealth Of Nations/world_map_codes.csv +0 -234
  203. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Basic Plotting/.ipynb_checkpoints/Basic Plotting-checkpoint.ipynb +0 -186
  204. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Basic Plotting/.ipynb_checkpoints/Pyplot-checkpoint.ipynb +0 -794
  205. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Basic Plotting/.ipynb_checkpoints/Untitled-checkpoint.ipynb +0 -323
  206. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Basic Plotting/Basic Plotting.ipynb +0 -261
  207. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Basic Plotting/Pyplot.ipynb +0 -1489
  208. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Index.ipynb +0 -163
  209. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Interactions/Interaction Layer.ipynb +0 -966
  210. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Interactions/Mark Interactions.ipynb +0 -476
  211. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Interactions/Selectors.ipynb +0 -427
  212. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Introduction.ipynb +0 -528
  213. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/Bars.ipynb +0 -480
  214. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/Bins.ipynb +0 -217
  215. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/Boxplot.ipynb +0 -253
  216. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/Candles.ipynb +0 -225
  217. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/FlexLine.ipynb +0 -123
  218. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/Graph.ipynb +0 -357
  219. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/GridHeatMap.ipynb +0 -422
  220. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/HeatMap.ipynb +0 -157
  221. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/Hist.ipynb +0 -176
  222. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/Image.ipynb +0 -195
  223. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/Label.ipynb +0 -189
  224. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/Lines.ipynb +0 -565
  225. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/Map.ipynb +0 -182
  226. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/Market Map.ipynb +0 -315
  227. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/Pie.ipynb +0 -465
  228. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/Scatter.ipynb +0 -835
  229. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Pyplot/Bars.ipynb +0 -362
  230. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Pyplot/Bins.ipynb +0 -252
  231. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Pyplot/Boxplot.ipynb +0 -273
  232. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Pyplot/Candles.ipynb +0 -242
  233. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Pyplot/GridHeatMap.ipynb +0 -417
  234. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Pyplot/HeatMap.ipynb +0 -155
  235. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Pyplot/Hist.ipynb +0 -238
  236. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Pyplot/Image.ipynb +0 -152
  237. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Pyplot/Label.ipynb +0 -206
  238. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Pyplot/Lines.ipynb +0 -474
  239. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Pyplot/Map.ipynb +0 -181
  240. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Pyplot/Pie.ipynb +0 -310
  241. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Pyplot/Scatter.ipynb +0 -702
  242. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Scales/Color Scales.ipynb +0 -495
  243. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Tutorials/.ipynb_checkpoints/Feature_Vector_Distribution-Iris-Digits-checkpoint.ipynb +0 -433
  244. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Tutorials/.ipynb_checkpoints/Linking Plots With Widgets-checkpoint.ipynb +0 -326
  245. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Tutorials/.ipynb_checkpoints/Updating Plots-Copy1-checkpoint.ipynb +0 -177
  246. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Tutorials/.ipynb_checkpoints/Updating Plots-checkpoint.ipynb +0 -177
  247. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Tutorials/Brush Interval Selector.ipynb +0 -154
  248. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Tutorials/Fast Interval Selector.ipynb +0 -152
  249. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Tutorials/Gaussian Density Widget.ipynb +0 -128
  250. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Tutorials/Gaussian Density.ipynb +0 -113
  251. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Tutorials/Linking Plots With Widgets.ipynb +0 -326
  252. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Tutorials/Object Model.ipynb +0 -179
  253. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Tutorials/Pyplot.ipynb +0 -174
  254. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Tutorials/Updating Plots.ipynb +0 -177
  255. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Tutorials.ipynb +0 -51
  256. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/data_files/country_codes.csv +0 -213
  257. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/data_files/gdp_per_capita.csv +0 -56
  258. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/data_files/state_codes.csv +0 -52
  259. data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/data_files/trees.jpg +0 -0
  260. data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/.ipynb_checkpoints/nbi_docs_examples_central_limit_theorem-checkpoint.ipynb +0 -247
  261. data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/.ipynb_checkpoints/nbi_docs_examples_variability_of_the_sample_mean-checkpoint.ipynb +0 -323
  262. data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/.ipynb_checkpoints/nbi_docs_recipes_graphing-checkpoint.ipynb +0 -387
  263. data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/.ipynb_checkpoints/nbi_docs_recipes_interactive_questions-checkpoint.ipynb +0 -185
  264. data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/.ipynb_checkpoints/nbi_docs_recipes_layout-checkpoint.ipynb +0 -384
  265. data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/.ipynb_checkpoints/nbi_docs_tutorial_interact-checkpoint.ipynb +0 -254
  266. data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/.ipynb_checkpoints/nbi_docs_tutorial_monty_hall-checkpoint.ipynb +0 -732
  267. data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/nbi_docs_examples_central_limit_theorem.ipynb +0 -247
  268. data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/nbi_docs_examples_correlation.ipynb +0 -651
  269. data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/nbi_docs_examples_empirical_distributions.ipynb +0 -773
  270. data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/nbi_docs_examples_linear_regression.ipynb +0 -111
  271. data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/nbi_docs_examples_probability_distribution_plots.ipynb +0 -199
  272. data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/nbi_docs_examples_sampling_from_a_population.ipynb +0 -421
  273. data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/nbi_docs_examples_variability_of_the_sample_mean.ipynb +0 -323
  274. data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/nbi_docs_recipes_graphing.ipynb +0 -387
  275. data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/nbi_docs_recipes_interactive_questions.ipynb +0 -185
  276. data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/nbi_docs_recipes_layout.ipynb +0 -384
  277. data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/nbi_docs_tutorial_interact.ipynb +0 -254
  278. data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/nbi_docs_tutorial_monty_hall.ipynb +0 -732
  279. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Advanced Plotting.html +0 -373
  280. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Animations.html +0 -361
  281. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Axis Properties.html +0 -569
  282. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Bars.html +0 -487
  283. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Basic Plotting.html +0 -341
  284. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Bins.html +0 -259
  285. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Boxplot.html +0 -277
  286. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Brush Interval Selector.html +0 -182
  287. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Bubble Chart.html +0 -299
  288. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Candles.html +0 -252
  289. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Choropleth.html +0 -318
  290. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Color Scales.html +0 -514
  291. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Fast Interval Selector.html +0 -182
  292. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Feature_Vector_Distribution-Iris-Digits.html +0 -479
  293. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/FlexLine.html +0 -128
  294. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Gaussian Density Widget.html +0 -152
  295. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Gaussian Density.html +0 -137
  296. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Graph.html +0 -484
  297. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/GridHeatMap.html +0 -483
  298. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/HeatMap.html +0 -170
  299. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Hist.html +0 -349
  300. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Image.html +0 -177
  301. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Index.html +0 -29
  302. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Interaction Layer.html +0 -1372
  303. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Introduction.html +0 -749
  304. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Label.html +0 -268
  305. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Lines.html +0 -704
  306. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Linking Plots With Widgets.html +0 -389
  307. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Logs Dashboard.html +0 -455
  308. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Map.html +0 -229
  309. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Mark Interactions.html +0 -613
  310. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Market Map.html +0 -413
  311. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Mobile Patent Suits.html +0 -131
  312. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Neural Network.html +0 -190
  313. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Object Model.html +0 -193
  314. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Outlier Detection.html +0 -363
  315. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Pie.html +0 -367
  316. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Plotting Dates.html +0 -337
  317. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Pyplot.html +0 -196
  318. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Scatter.html +0 -948
  319. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Selectors.html +0 -489
  320. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Time Series.html +0 -173
  321. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Tutorials.html +0 -40
  322. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Updating Plots.html +0 -228
  323. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_altair_interactive.html +0 -2216
  324. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_altair_non_interactive.html +0 -1170
  325. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_bgplot_line_plot.html +0 -318
  326. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_bokeh_01_basic_plotting.html +0 -1479
  327. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_bokeh_02_styling_and_theming.html +0 -1524
  328. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_bokeh_03_data_sources_and_transformations.html +0 -983
  329. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_bokeh_04_adding_annotations.html +0 -1280
  330. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_bokeh_05_presentation_layouts.html +0 -660
  331. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_bokeh_06_linking_and_interactions.html +0 -1563
  332. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_bokeh_07_bar_and_categorical_data_plots.html +0 -1888
  333. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_bokeh_08_graph_and_network_plots.html +0 -689
  334. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_bokeh_09_geographic_plots.html +0 -767
  335. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_circular_times_table-short.html +0 -475
  336. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_circular_times_table.html +0 -747
  337. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_climate_change_forecast.html +0 -1250
  338. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_docs_example_dynamic.html +0 -186
  339. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_interactive_widgets.html +0 -512
  340. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_mathplot_vs_bqplot.html +0 -407
  341. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_nbi_widgets.html +0 -629
  342. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_nbi_widgets_bar_chart.html +0 -95
  343. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_nbi_widgets_hist_chart.html +0 -93
  344. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_nbi_widgets_line_chart.html +0 -96
  345. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_nbi_widgets_question_multiple_choice.html +0 -70
  346. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_nbi_widgets_question_short_answer.html +0 -156
  347. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_nbi_widgets_scatter_chart.html +0 -95
  348. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_nbi_widgets_scatter_drag_chart.html +0 -93
  349. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_odes_in_python.html +0 -955
  350. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/nbi_docs_examples_central_limit_theorem.html +0 -290
  351. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/nbi_docs_examples_correlation.html +0 -818
  352. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/nbi_docs_examples_empirical_distributions.html +0 -351
  353. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/nbi_docs_examples_linear_regression.html +0 -106
  354. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/nbi_docs_examples_probability_distribution_plots.html +0 -228
  355. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/nbi_docs_examples_sampling_from_a_population.html +0 -518
  356. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/nbi_docs_examples_variability_of_the_sample_mean.html +0 -372
  357. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/nbi_docs_recipes_graphing.html +0 -473
  358. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/nbi_docs_recipes_interactive_questions.html +0 -242
  359. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/nbi_docs_recipes_layout.html +0 -496
  360. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/nbi_docs_tutorial_interact.html +0 -329
  361. data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/nbi_docs_tutorial_monty_hall.html +0 -866
  362. data/lib/starter_web/pages/public/_jupyter/where_to_go.adoc +0 -270
  363. data/lib/starter_web/pages/public/learn/_roundtrip/100_present_images.adoc +0 -313
  364. data/lib/starter_web/pages/public/learn/_roundtrip/100_present_videos.adoc +0 -281
  365. data/lib/starter_web/pages/public/learn/_roundtrip/200_typography.adoc +0 -253
  366. data/lib/starter_web/pages/public/learn/_roundtrip/300_icon_fonts.adoc +0 -579
  367. data/lib/starter_web/pages/public/learn/_roundtrip/400_asciidoc_extensions.adoc +0 -718
  368. data/lib/starter_web/pages/public/learn/_roundtrip/410_bs_modals_extentions.adoc +0 -91
  369. data/lib/starter_web/pages/public/learn/_roundtrip/420_responsive_tables_extensions.adoc +0 -420
  370. data/lib/starter_web/pages/public/learn/_roundtrip/500_themes.adoc +0 -250
  371. data/lib/starter_web/pages/public/learn/_roundtrip/600_quicksearch.adoc +0 -425
  372. data/lib/starter_web/pages/public/learn/_roundtrip/_includes/attributes.asciidoc +0 -118
  373. data/lib/starter_web/pages/public/learn/_roundtrip/_includes/documents/100_gistblock.asciidoc +0 -28
  374. data/lib/starter_web/pages/public/learn/_roundtrip/_includes/documents/410_bottom_info.asciidoc +0 -14
  375. data/lib/starter_web/pages/public/learn/_roundtrip/_includes/documents/410_bottom_left_warning.asciidoc +0 -11
  376. data/lib/starter_web/pages/public/learn/_roundtrip/_includes/documents/410_bottom_right_danger.asciidoc +0 -11
  377. data/lib/starter_web/pages/public/learn/_roundtrip/_includes/documents/410_central_success.asciidoc +0 -11
  378. data/lib/starter_web/pages/public/learn/_roundtrip/_includes/documents/410_full_height_left_info.asciidoc +0 -11
  379. data/lib/starter_web/pages/public/learn/_roundtrip/_includes/documents/410_full_height_right_success.asciidoc +0 -11
  380. data/lib/starter_web/pages/public/learn/_roundtrip/_includes/documents/410_table_bs_modal_examples.asciidoc +0 -47
  381. data/lib/starter_web/pages/public/learn/_roundtrip/_includes/documents/410_top_info.asciidoc +0 -11
  382. data/lib/starter_web/pages/public/learn/_roundtrip/_includes/documents/410_top_left_info.asciidoc +0 -11
  383. data/lib/starter_web/pages/public/learn/_roundtrip/_includes/documents/410_top_right_success.asciidoc +0 -11
  384. data/lib/starter_web/pages/public/learn/_roundtrip/_includes/documents/419_advanced_modals_demo.asciidoc +0 -337
  385. data/lib/starter_web/pages/public/learn/_roundtrip/_includes/documents/tables/bs_modal_examples.asciidoc +0 -47
  386. 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
-