diff --git a/gapminders/anaconda-project-lock.yml b/gapminders/anaconda-project-lock.yml
index 83d81f50f..239b5b773 100644
--- a/gapminders/anaconda-project-lock.yml
+++ b/gapminders/anaconda-project-lock.yml
@@ -17,434 +17,512 @@ locking_enabled: true
env_specs:
test:
locked: true
- env_spec_hash: 9a065b527dbe7c38038e299b04ca7f0c71af4d9d
+ env_spec_hash: bac7b8b8dfbc6beffb84b235c2415c3e6a15deac
platforms:
- linux-64
- osx-64
- win-64
packages:
all:
- - altair=3.3.0=py36_0
+ - altair=3.3.0=py37_0
+ - async_generator=1.10=py_0
- atomicwrites=1.4.0=pyh9f0ad1d_0
- - attrs=19.3.0=py_0
- - backcall=0.1.0=py_0
- - beautifulsoup4=4.9.1=py36h9f0ad1d_0
- - bleach=3.1.5=pyh9f0ad1d_0
- - bokeh=1.3.0=py36_0
- - ca-certificates=2020.4.5.1=hecc5488_0
- - certifi=2020.4.5.1=py36h9f0ad1d_0
- - chardet=3.0.4=py36h9f0ad1d_1006
+ - attrs=20.3.0=pyhd3deb0d_0
+ - backcall=0.2.0=pyh9f0ad1d_0
+ - backports.functools_lru_cache=1.6.1=py_0
+ - backports=1.0=py_2
+ - beautifulsoup4=4.9.3=pyhb0f4dca_0
+ - bleach=3.2.1=pyh9f0ad1d_0
+ - bokeh=2.2.1=py37hc8dfbb8_1
+ - colorcet=2.0.1=py_0
- cycler=0.10.0=py_2
- decorator=4.4.2=py_0
- defusedxml=0.6.0=py_0
- - entrypoints=0.3=py36h9f0ad1d_1001
- - holoviews=1.12.3=py_2
- - hvplot=0.4.0=py_1
- - idna=2.9=py_1
- - importlib-metadata=1.6.0=py36h9f0ad1d_0
- - importlib_metadata=1.6.0=0
- - ipython=7.14.0=py36h9f0ad1d_0
+ - entrypoints=0.3=pyhd8ed1ab_1003
+ - holoviews=1.14.1=pyhd3deb0d_0
+ - hvplot=0.7.0=pyhd3deb0d_0
+ - idna=2.10=pyh9f0ad1d_0
+ - importlib_metadata=3.4.0=hd8ed1ab_0
- ipython_genutils=0.2.0=py_1
- - jedi=0.17.0=py36h9f0ad1d_0
- jinja2=2.11.2=pyh9f0ad1d_0
- - jsonschema=3.2.0=py36h9f0ad1d_1
- - jupyter_client=6.1.3=py_0
- - jupyter_core=4.6.3=py36h9f0ad1d_1
- - markdown=3.2.2=py_0
- - more-itertools=8.3.0=py_0
- - nbconvert=5.6.1=py36h9f0ad1d_1
- - nbformat=5.0.6=py_0
+ - jsonschema=3.2.0=py_2
+ - jupyter_client=6.1.11=pyhd8ed1ab_1
+ - jupyterlab_pygments=0.1.2=pyh9f0ad1d_0
+ - markdown=3.3.3=pyh9f0ad1d_0
+ - more-itertools=8.6.0=pyhd8ed1ab_0
+ - nbclient=0.5.1=py_0
+ - nbformat=5.0.8=py_0
- nbsmoke=0.2.8=py_0
- - notebook=5.7.8=py36_1
- - olefile=0.46=py_0
- - packaging=20.4=pyh9f0ad1d_0
- - pandoc=2.9.2.1=0
+ - nest-asyncio=1.4.3=pyhd8ed1ab_0
+ - notebook=5.7.8=py37_1
+ - olefile=0.46=pyh9f0ad1d_1
+ - packaging=20.8=pyhd3deb0d_0
- pandocfilters=1.4.2=py_1
- - panel=0.6.2=0
- - param=1.9.1=py_0
- - parso=0.7.0=pyh9f0ad1d_0
- - pickleshare=0.7.5=py36h9f0ad1d_1001
- - pip=20.1.1=py_1
- - plotly=4.8.1=pyh9f0ad1d_0
- - pluggy=0.13.1=py36h9f0ad1d_1
- - prometheus_client=0.8.0=pyh9f0ad1d_0
- - prompt-toolkit=3.0.5=py_0
- - py=1.8.1=py_0
- - pycparser=2.20=py_0
+ - panel=0.10.2=pyhd8ed1ab_0
+ - param=1.10.0=py_0
+ - parso=0.8.1=pyhd8ed1ab_0
+ - pickleshare=0.7.5=py_1003
+ - pip=20.3.3=pyhd8ed1ab_0
+ - plotly=4.14.3=pyh44b312d_0
+ - prometheus_client=0.9.0=pyhd3deb0d_0
+ - prompt-toolkit=3.0.10=pyha770c72_0
+ - py=1.10.0=pyhd3deb0d_0
+ - pycparser=2.20=pyh9f0ad1d_2
- pyct-core=0.4.6=py_0
- pyct=0.4.6=py_0
- pyflakes=2.2.0=pyh9f0ad1d_0
- - pygments=2.6.1=py_0
- - pyopenssl=19.1.0=py_1
+ - pygments=2.7.3=pyhd8ed1ab_0
+ - pyopenssl=20.0.1=pyhd8ed1ab_0
- pyparsing=2.4.7=pyh9f0ad1d_0
- - pysocks=1.7.1=py36h9f0ad1d_1
- - pytest=4.4.1=py36_0
+ - pytest=4.4.1=py37_0
- python-dateutil=2.8.1=py_0
- - python_abi=3.6=1_cp36m
- - pytz=2020.1=pyh9f0ad1d_0
- - pyviz_comms=0.7.2=py_0
- - requests=2.23.0=pyh8c360ce_2
+ - python_abi=3.7=1_cp37m
+ - pytz=2020.5=pyhd8ed1ab_0
+ - pyviz_comms=2.0.1=pyhd3deb0d_0
+ - requests=2.25.1=pyhd3deb0d_0
- retrying=1.3.3=py_2
- send2trash=1.5.0=py_0
- - setuptools=47.1.0=py36h9f0ad1d_0
- six=1.15.0=pyh9f0ad1d_0
- - soupsieve=2.0.1=py36h9f0ad1d_0
- - terminado=0.8.3=py36h9f0ad1d_1
+ - soupsieve=2.0.1=py_1
- testpath=0.4.4=py_0
- - toolz=0.10.0=py_0
- - traitlets=4.3.3=py36h9f0ad1d_1
- - urllib3=1.25.9=py_0
- - wcwidth=0.1.9=pyh9f0ad1d_0
+ - toolz=0.11.1=py_0
+ - tqdm=4.56.0=pyhd8ed1ab_0
+ - traitlets=5.0.5=py_0
+ - typing_extensions=3.7.4.3=py_0
+ - urllib3=1.26.2=pyhd8ed1ab_0
+ - wcwidth=0.2.5=pyh9f0ad1d_2
- webencodings=0.5.1=py_1
- - wheel=0.34.2=py_1
- - zipp=3.1.0=py_0
+ - wheel=0.36.2=pyhd3deb0d_0
+ - zipp=3.4.0=py_0
unix:
- - ipykernel=5.1.0=py36h24bf2e0_1002
- - libblas=3.8.0=16_openblas
- - libcblas=3.8.0=16_openblas
- - liblapack=3.8.0=16_openblas
- - pexpect=4.8.0=py36h9f0ad1d_1
- - ptyprocess=0.6.0=py_1001
+ - libblas=3.9.0=7_openblas
+ - libcblas=3.9.0=7_openblas
+ - liblapack=3.9.0=7_openblas
+ - pexpect=4.8.0=pyh9f0ad1d_2
+ - ptyprocess=0.7.0=pyhd3deb0d_0
linux-64:
- _libgcc_mutex=0.1=conda_forge
- - _openmp_mutex=4.5=1_llvm
- - brotlipy=0.7.0=py36h8c4c3a4_1000
- - cffi=1.14.0=py36hd463f26_0
- - cryptography=2.9.2=py36h45558ae_0
- - freetype=2.10.2=he06d7ca_0
- - icu=64.2=he1b5a44_1
- - jpeg=9c=h14c3975_1001
- - kiwisolver=1.2.0=py36hdb11119_0
- - ld_impl_linux-64=2.34=h53a641e_4
- - libffi=3.2.1=he1b5a44_1007
- - libgcc-ng=9.2.0=h24d8f2e_2
- - libgfortran-ng=7.5.0=hdf63c60_6
- - libopenblas=0.3.9=h5ec1e0e_0
- - libpng=1.6.37=hed695b0_1
- - libsodium=1.0.17=h516909a_0
- - libstdcxx-ng=9.2.0=hdf63c60_2
- - libtiff=4.1.0=hc7e4089_6
- - libwebp-base=1.1.0=h516909a_3
- - llvm-openmp=10.0.0=hc9558a2_0
- - lz4-c=1.9.2=he1b5a44_1
- - markupsafe=1.1.1=py36h8c4c3a4_1
- - matplotlib-base=3.2.1=py36hb8e4980_0
- - mistune=0.8.4=py36h8c4c3a4_1001
- - ncurses=6.1=hf484d3e_1002
- - numpy=1.18.4=py36h7314795_0
- - openssl=1.1.1g=h516909a_0
- - pandas=1.0.4=py36h830a2c2_0
- - pillow=7.1.2=py36h8328e55_0
- - pyrsistent=0.16.0=py36h8c4c3a4_0
- - python=3.6.10=h8356626_1011_cpython
- - pyyaml=5.3.1=py36h8c4c3a4_0
- - pyzmq=19.0.1=py36h9947dbf_0
- - readline=8.0=hf8c457e_0
- - sqlite=3.30.1=hcee41ef_0
- - tk=8.6.10=hed695b0_0
- - tornado=5.1.1=py36h14c3975_1000
- - xz=5.2.5=h516909a_0
- - yaml=0.2.4=h516909a_0
- - zeromq=4.3.2=he1b5a44_2
- - zlib=1.2.11=h516909a_1006
- - zstd=1.4.4=h6597ccf_3
+ - _openmp_mutex=4.5=1_gnu
+ - brotlipy=0.7.0=py37h5e8e339_1001
+ - ca-certificates=2020.12.5=ha878542_0
+ - certifi=2020.12.5=py37h89c1867_1
+ - cffi=1.14.4=py37hc58025e_1
+ - chardet=4.0.0=py37h89c1867_1
+ - cryptography=3.3.1=py37h7f0c10b_1
+ - freetype=2.10.4=h7ca028e_0
+ - importlib-metadata=3.4.0=py37h89c1867_0
+ - ipykernel=5.4.2=py37h888b3d9_0
+ - ipython=7.19.0=py37h888b3d9_0
+ - jedi=0.18.0=py37h89c1867_2
+ - jpeg=9d=h36c2ea0_0
+ - jupyter_core=4.7.0=py37h89c1867_0
+ - kiwisolver=1.3.1=py37h2527ec5_1
+ - lcms2=2.11=hcbb858e_1
+ - ld_impl_linux-64=2.35.1=hea4e1c9_1
+ - libffi=3.3=h58526e2_2
+ - libgcc-ng=9.3.0=h5dbcf3e_17
+ - libgfortran-ng=9.3.0=he4bcb1c_17
+ - libgfortran5=9.3.0=he4bcb1c_17
+ - libgomp=9.3.0=h5dbcf3e_17
+ - libopenblas=0.3.12=pthreads_h4812303_1
+ - libpng=1.6.37=h21135ba_2
+ - libsodium=1.0.18=h36c2ea0_1
+ - libstdcxx-ng=9.3.0=h2ae2ef3_17
+ - libtiff=4.2.0=hdc55705_0
+ - libwebp-base=1.1.0=h36c2ea0_3
+ - lz4-c=1.9.3=h9c3ff4c_0
+ - markupsafe=1.1.1=py37h5e8e339_3
+ - matplotlib-base=3.3.3=py37h0c9df89_0
+ - mistune=0.8.4=py37h5e8e339_1003
+ - nbconvert=6.0.7=py37h89c1867_3
+ - ncurses=6.2=h58526e2_4
+ - numpy=1.19.5=py37haa41c4c_1
+ - openssl=1.1.1i=h7f98852_0
+ - pandas=1.2.0=py37hdc94413_1
+ - pandoc=2.11.3.2=h7f98852_0
+ - pillow=8.1.0=py37he6b4880_1
+ - pluggy=0.13.1=py37h89c1867_4
+ - pyrsistent=0.17.3=py37h5e8e339_2
+ - pysocks=1.7.1=py37h89c1867_3
+ - python=3.7.9=hffdb5ce_0_cpython
+ - pyyaml=5.3.1=py37h5e8e339_2
+ - pyzmq=21.0.0=py37h499b945_0
+ - readline=8.0=he28a2e2_2
+ - setuptools=49.6.0=py37h89c1867_3
+ - sqlite=3.34.0=h74cdb3f_0
+ - terminado=0.9.2=py37h89c1867_0
+ - tk=8.6.10=h21135ba_1
+ - tornado=6.1=py37h5e8e339_1
+ - xz=5.2.5=h516909a_1
+ - yaml=0.2.5=h516909a_0
+ - zeromq=4.3.3=h58526e2_3
+ - zlib=1.2.11=h516909a_1010
+ - zstd=1.4.8=ha95c52a_1
osx-64:
- - appnope=0.1.0=py36h9f0ad1d_1001
- - brotlipy=0.7.0=py36h37b9a7d_1000
- - cffi=1.14.0=py36h356ff06_0
- - cryptography=2.9.2=py36hc9d8292_0
- - freetype=2.10.2=h8da9a1a_0
- - jpeg=9c=h1de35cc_1001
- - kiwisolver=1.2.0=py36h863e41a_0
- - libcxx=10.0.0=h1af66ff_2
- - libffi=3.2.1=h4a8c4bd_1007
- - libgfortran=4.0.0=2
- - libopenblas=0.3.9=h3d69b6c_0
- - libpng=1.6.37=hbbe82c9_1
- - libsodium=1.0.17=h01d97ff_0
- - libtiff=4.1.0=h2ae36a8_6
- - libwebp-base=1.1.0=h0b31af3_3
- - llvm-openmp=10.0.0=h28b9765_0
- - lz4-c=1.9.2=h4a8c4bd_1
- - markupsafe=1.1.1=py36h37b9a7d_1
- - matplotlib-base=3.2.1=py36h83d3ec1_0
- - mistune=0.8.4=py36h37b9a7d_1001
- - ncurses=6.1=h0a44026_1002
- - numpy=1.18.4=py36hdc5ca10_0
- - openssl=1.1.1g=h0b31af3_0
- - pandas=1.0.4=py36hcc1bba6_0
- - pillow=7.1.2=py36h2ae5dfa_0
- - pyrsistent=0.16.0=py36h37b9a7d_0
- - python=3.6.10=h4334963_1011_cpython
- - pyyaml=5.3.1=py36h37b9a7d_0
- - pyzmq=19.0.1=py36h820b253_0
- - readline=8.0=hcfe32e1_0
- - sqlite=3.30.1=h93121df_0
- - tk=8.6.10=hbbe82c9_0
- - tornado=5.1.1=py36h1de35cc_1000
- - xz=5.2.5=h0b31af3_0
- - yaml=0.2.4=h0b31af3_0
- - zeromq=4.3.2=h6de7cb9_2
- - zlib=1.2.11=h0b31af3_1006
- - zstd=1.4.4=h4b3e974_3
+ - appnope=0.1.2=py37hf985489_1
+ - brotlipy=0.7.0=py37hf967b71_1001
+ - ca-certificates=2020.12.5=h033912b_0
+ - certifi=2020.12.5=py37hf985489_1
+ - cffi=1.14.4=py37hc5b2277_1
+ - chardet=4.0.0=py37hf985489_1
+ - cryptography=3.3.1=py37haf76d9e_1
+ - freetype=2.10.4=h3f75d11_0
+ - importlib-metadata=3.4.0=py37hf985489_0
+ - ipykernel=5.4.2=py37he01cfaa_0
+ - ipython=7.19.0=py37he01cfaa_0
+ - jedi=0.18.0=py37hf985489_2
+ - jpeg=9d=hbcb3906_0
+ - jupyter_core=4.7.0=py37hf985489_0
+ - kiwisolver=1.3.1=py37h70f7d40_1
+ - lcms2=2.11=h11f7e16_1
+ - libcxx=11.0.0=h4c3b8ed_1
+ - libffi=3.3=h046ec9c_2
+ - libgfortran5=9.3.0=h6c81a4c_16
+ - libgfortran=5.0.0=9_3_0_h6c81a4c_16
+ - libopenblas=0.3.12=openmp_h54245bb_1
+ - libpng=1.6.37=h7cec526_2
+ - libsodium=1.0.18=hbcb3906_1
+ - libtiff=4.2.0=h355d032_0
+ - libwebp-base=1.1.0=hbcb3906_3
+ - llvm-openmp=11.0.0=h73239a0_1
+ - lz4-c=1.9.3=h046ec9c_0
+ - markupsafe=1.1.1=py37hf967b71_3
+ - matplotlib-base=3.3.3=py37hef07623_0
+ - mistune=0.8.4=py37hf967b71_1003
+ - nbconvert=6.0.7=py37hf985489_3
+ - ncurses=6.2=h2e338ed_4
+ - numpy=1.19.5=py37hec87de9_1
+ - openssl=1.1.1i=h35c211d_0
+ - pandas=1.2.0=py37h010c265_1
+ - pandoc=2.11.3.2=h35c211d_0
+ - pillow=8.1.0=py37h40a97b9_1
+ - pluggy=0.13.1=py37hf985489_4
+ - pyrsistent=0.17.3=py37hf967b71_2
+ - pysocks=1.7.1=py37hf985489_3
+ - python=3.7.9=h6c3b2c9_0_cpython
+ - pyyaml=5.3.1=py37hf967b71_2
+ - pyzmq=21.0.0=py37h4c5583b_0
+ - readline=8.0=h0678c8f_2
+ - setuptools=49.6.0=py37hf985489_3
+ - sqlite=3.34.0=h17101e1_0
+ - terminado=0.9.2=py37hf985489_0
+ - tk=8.6.10=h0419947_1
+ - tornado=6.1=py37hf967b71_1
+ - xz=5.2.5=haf1e3a3_1
+ - yaml=0.2.5=haf1e3a3_0
+ - zeromq=4.3.3=h74dc148_3
+ - zlib=1.2.11=h7795811_1010
+ - zstd=1.4.8=hf387650_1
win-64:
- - brotlipy=0.7.0=py36h779f372_1000
- - cffi=1.14.0=py36ha419a9e_0
- - colorama=0.4.3=py_0
- - cryptography=2.9.2=py36hef61171_0
- - freetype=2.10.2=hd328e21_0
- - intel-openmp=2020.0=166
- - ipykernel=5.1.0=py36h39e3cac_1002
- - jpeg=9c=hfa6e2cd_1001
- - kiwisolver=1.2.0=py36h246c5b5_0
- - libblas=3.8.0=15_mkl
- - libcblas=3.8.0=15_mkl
- - liblapack=3.8.0=15_mkl
- - libpng=1.6.37=hfe6a214_1
- - libsodium=1.0.17=h2fa13f4_0
- - libtiff=4.1.0=h885aae3_6
- - lz4-c=1.9.2=h62dcd97_1
+ - brotlipy=0.7.0=py37hcc03f2d_1001
+ - ca-certificates=2020.12.5=h5b45459_0
+ - certifi=2020.12.5=py37h03978a9_1
+ - cffi=1.14.4=py37hd8e9650_1
+ - chardet=4.0.0=py37h03978a9_1
+ - colorama=0.4.4=pyh9f0ad1d_0
+ - cryptography=3.3.1=py37hd8e9650_1
+ - freetype=2.10.4=h546665d_0
+ - importlib-metadata=3.4.0=py37h03978a9_0
+ - intel-openmp=2020.3=h57928b3_311
+ - ipykernel=5.4.2=py37h7b7c402_0
+ - ipython=7.19.0=py37heaed05f_0
+ - jedi=0.18.0=py37h03978a9_2
+ - jpeg=9d=h8ffe710_0
+ - jupyter_core=4.7.0=py37h03978a9_0
+ - kiwisolver=1.3.1=py37h8c56517_1
+ - libblas=3.9.0=7_mkl
+ - libcblas=3.9.0=7_mkl
+ - liblapack=3.9.0=7_mkl
+ - libpng=1.6.37=h1d00b33_2
+ - libsodium=1.0.18=h8d14728_1
+ - libtiff=4.2.0=hc10be44_0
+ - lz4-c=1.9.3=h8ffe710_0
- m2w64-gcc-libgfortran=5.3.0=6
- m2w64-gcc-libs-core=5.3.0=7
- m2w64-gcc-libs=5.3.0=7
- m2w64-gmp=6.1.0=2
- m2w64-libwinpthread-git=5.0.0.4634.697f757=2
- - markupsafe=1.1.1=py36h68a101e_1
- - matplotlib-base=3.2.1=py36hf0cddfc_0
- - mistune=0.8.4=py36h68a101e_1001
- - mkl=2020.0=166
+ - markupsafe=1.1.1=py37hcc03f2d_3
+ - matplotlib-base=3.3.3=py37h3379fd5_0
+ - mistune=0.8.4=py37hcc03f2d_1003
+ - mkl=2020.4=hb70f87d_311
- msys2-conda-epoch=20160418=1
- - numpy=1.18.4=py36h4d86e3b_0
- - openssl=1.1.1g=he774522_0
- - pandas=1.0.4=py36hcc50265_0
- - pillow=7.1.2=py36he4e95fe_0
- - pyrsistent=0.16.0=py36h68a101e_0
- - python=3.6.10=he025d50_1009_cpython
- - pywin32=227=py36hfa6e2cd_0
- - pywinpty=0.5.7=py36_0
- - pyyaml=5.3.1=py36h68a101e_0
- - pyzmq=19.0.1=py36h274d426_0
- - tk=8.6.10=hfa6e2cd_0
- - tornado=5.1.1=py36hfa6e2cd_1000
- - vc=14.1=h869be7e_1
- - vs2015_runtime=14.16.27012=h30e32a0_2
- - win_inet_pton=1.1.0=py36_0
- - wincertstore=0.2=py36_1003
+ - nbconvert=6.0.7=py37h03978a9_3
+ - numpy=1.19.5=py37hd20adf4_1
+ - openssl=1.1.1i=h8ffe710_0
+ - pandas=1.2.0=py37h08fd248_1
+ - pandoc=2.11.3.2=h8ffe710_0
+ - pillow=8.1.0=py37hdec93a9_1
+ - pluggy=0.13.1=py37h03978a9_4
+ - pyrsistent=0.17.3=py37hcc03f2d_2
+ - pysocks=1.7.1=py37h03978a9_3
+ - python=3.7.9=h7840368_0_cpython
+ - pywin32=228=py37hcc03f2d_1
+ - pywinpty=0.5.7=py37hc8dfbb8_1
+ - pyyaml=5.3.1=py37hcc03f2d_2
+ - pyzmq=21.0.0=py37h0d95fc2_0
+ - setuptools=49.6.0=py37h03978a9_3
+ - sqlite=3.34.0=h8ffe710_0
+ - terminado=0.9.2=py37h03978a9_0
+ - tk=8.6.10=h8ffe710_1
+ - tornado=6.1=py37hcc03f2d_1
+ - vc=14.2=hb210afc_2
+ - vs2015_runtime=14.28.29325=h5e1d092_0
+ - win_inet_pton=1.1.0=py37h03978a9_2
+ - wincertstore=0.2=py37h03978a9_1006
- winpty=0.4.3=4
- - xz=5.2.5=h2fa13f4_0
- - yaml=0.2.4=he774522_0
- - zeromq=4.3.2=h6538335_2
- - zlib=1.2.11=h2fa13f4_1006
- - zstd=1.4.4=h9f78265_3
+ - xz=5.2.5=h62dcd97_1
+ - yaml=0.2.5=he774522_0
+ - zeromq=4.3.3=h0e60522_3
+ - zlib=1.2.11=h62dcd97_1010
+ - zstd=1.4.8=h4e2f164_1
default:
locked: true
- env_spec_hash: e6f1c68b2c105869188673b3494caebb4534dc96
+ env_spec_hash: 04f8cb9d203abf9a56d237ad761a5ab66b9c06f3
platforms:
- linux-64
- osx-64
- win-64
packages:
all:
- - altair=3.3.0=py36_0
- - attrs=19.3.0=py_0
- - backcall=0.1.0=py_0
- - bleach=3.1.5=pyh9f0ad1d_0
- - bokeh=1.3.0=py36_0
- - ca-certificates=2020.4.5.1=hecc5488_0
- - certifi=2020.4.5.1=py36h9f0ad1d_0
- - chardet=3.0.4=py36h9f0ad1d_1006
+ - altair=3.3.0=py37_0
+ - async_generator=1.10=py_0
+ - attrs=20.3.0=pyhd3deb0d_0
+ - backcall=0.2.0=pyh9f0ad1d_0
+ - backports.functools_lru_cache=1.6.1=py_0
+ - backports=1.0=py_2
+ - bleach=3.2.1=pyh9f0ad1d_0
+ - bokeh=2.2.1=py37hc8dfbb8_1
+ - colorcet=2.0.1=py_0
- cycler=0.10.0=py_2
- decorator=4.4.2=py_0
- defusedxml=0.6.0=py_0
- - entrypoints=0.3=py36h9f0ad1d_1001
- - holoviews=1.12.3=py_2
- - hvplot=0.4.0=py_1
- - idna=2.9=py_1
- - importlib-metadata=1.6.0=py36h9f0ad1d_0
- - importlib_metadata=1.6.0=0
- - ipython=7.14.0=py36h9f0ad1d_0
+ - entrypoints=0.3=pyhd8ed1ab_1003
+ - holoviews=1.14.1=pyhd3deb0d_0
+ - hvplot=0.7.0=pyhd3deb0d_0
+ - idna=2.10=pyh9f0ad1d_0
+ - importlib_metadata=3.4.0=hd8ed1ab_0
- ipython_genutils=0.2.0=py_1
- - jedi=0.17.0=py36h9f0ad1d_0
- jinja2=2.11.2=pyh9f0ad1d_0
- - jsonschema=3.2.0=py36h9f0ad1d_1
- - jupyter_client=6.1.3=py_0
- - jupyter_core=4.6.3=py36h9f0ad1d_1
- - markdown=3.2.2=py_0
- - nbconvert=5.6.1=py36h9f0ad1d_1
- - nbformat=5.0.6=py_0
- - notebook=5.7.8=py36_1
- - olefile=0.46=py_0
- - packaging=20.4=pyh9f0ad1d_0
- - pandoc=2.9.2.1=0
+ - jsonschema=3.2.0=py_2
+ - jupyter_client=6.1.11=pyhd8ed1ab_1
+ - jupyterlab_pygments=0.1.2=pyh9f0ad1d_0
+ - markdown=3.3.3=pyh9f0ad1d_0
+ - nbclient=0.5.1=py_0
+ - nbformat=5.0.8=py_0
+ - nest-asyncio=1.4.3=pyhd8ed1ab_0
+ - notebook=5.7.8=py37_1
+ - olefile=0.46=pyh9f0ad1d_1
+ - packaging=20.8=pyhd3deb0d_0
- pandocfilters=1.4.2=py_1
- - panel=0.6.2=0
- - param=1.9.1=py_0
- - parso=0.7.0=pyh9f0ad1d_0
- - pickleshare=0.7.5=py36h9f0ad1d_1001
- - pip=20.1.1=py_1
- - plotly=4.8.1=pyh9f0ad1d_0
- - prometheus_client=0.8.0=pyh9f0ad1d_0
- - prompt-toolkit=3.0.5=py_0
- - pycparser=2.20=py_0
+ - panel=0.10.2=pyhd8ed1ab_0
+ - param=1.10.0=py_0
+ - parso=0.8.1=pyhd8ed1ab_0
+ - pickleshare=0.7.5=py_1003
+ - pip=20.3.3=pyhd8ed1ab_0
+ - plotly=4.14.3=pyh44b312d_0
+ - prometheus_client=0.9.0=pyhd3deb0d_0
+ - prompt-toolkit=3.0.10=pyha770c72_0
+ - pycparser=2.20=pyh9f0ad1d_2
- pyct-core=0.4.6=py_0
- pyct=0.4.6=py_0
- - pygments=2.6.1=py_0
- - pyopenssl=19.1.0=py_1
+ - pygments=2.7.3=pyhd8ed1ab_0
+ - pyopenssl=20.0.1=pyhd8ed1ab_0
- pyparsing=2.4.7=pyh9f0ad1d_0
- - pysocks=1.7.1=py36h9f0ad1d_1
- python-dateutil=2.8.1=py_0
- - python_abi=3.6=1_cp36m
- - pytz=2020.1=pyh9f0ad1d_0
- - pyviz_comms=0.7.2=py_0
- - requests=2.23.0=pyh8c360ce_2
+ - python_abi=3.7=1_cp37m
+ - pytz=2020.5=pyhd8ed1ab_0
+ - pyviz_comms=2.0.1=pyhd3deb0d_0
+ - requests=2.25.1=pyhd3deb0d_0
- retrying=1.3.3=py_2
- send2trash=1.5.0=py_0
- - setuptools=47.1.0=py36h9f0ad1d_0
- six=1.15.0=pyh9f0ad1d_0
- - terminado=0.8.3=py36h9f0ad1d_1
- testpath=0.4.4=py_0
- - toolz=0.10.0=py_0
- - traitlets=4.3.3=py36h9f0ad1d_1
- - urllib3=1.25.9=py_0
- - wcwidth=0.1.9=pyh9f0ad1d_0
+ - toolz=0.11.1=py_0
+ - tqdm=4.56.0=pyhd8ed1ab_0
+ - traitlets=5.0.5=py_0
+ - typing_extensions=3.7.4.3=py_0
+ - urllib3=1.26.2=pyhd8ed1ab_0
+ - wcwidth=0.2.5=pyh9f0ad1d_2
- webencodings=0.5.1=py_1
- - wheel=0.34.2=py_1
- - zipp=3.1.0=py_0
+ - wheel=0.36.2=pyhd3deb0d_0
+ - zipp=3.4.0=py_0
unix:
- - ipykernel=5.1.0=py36h24bf2e0_1002
- - libblas=3.8.0=16_openblas
- - libcblas=3.8.0=16_openblas
- - liblapack=3.8.0=16_openblas
- - pexpect=4.8.0=py36h9f0ad1d_1
- - ptyprocess=0.6.0=py_1001
+ - libblas=3.9.0=7_openblas
+ - libcblas=3.9.0=7_openblas
+ - liblapack=3.9.0=7_openblas
+ - pexpect=4.8.0=pyh9f0ad1d_2
+ - ptyprocess=0.7.0=pyhd3deb0d_0
linux-64:
- _libgcc_mutex=0.1=conda_forge
- - _openmp_mutex=4.5=1_llvm
- - brotlipy=0.7.0=py36h8c4c3a4_1000
- - cffi=1.14.0=py36hd463f26_0
- - cryptography=2.9.2=py36h45558ae_0
- - freetype=2.10.2=he06d7ca_0
- - icu=64.2=he1b5a44_1
- - jpeg=9c=h14c3975_1001
- - kiwisolver=1.2.0=py36hdb11119_0
- - ld_impl_linux-64=2.34=h53a641e_4
- - libffi=3.2.1=he1b5a44_1007
- - libgcc-ng=9.2.0=h24d8f2e_2
- - libgfortran-ng=7.5.0=hdf63c60_6
- - libopenblas=0.3.9=h5ec1e0e_0
- - libpng=1.6.37=hed695b0_1
- - libsodium=1.0.17=h516909a_0
- - libstdcxx-ng=9.2.0=hdf63c60_2
- - libtiff=4.1.0=hc7e4089_6
- - libwebp-base=1.1.0=h516909a_3
- - llvm-openmp=10.0.0=hc9558a2_0
- - lz4-c=1.9.2=he1b5a44_1
- - markupsafe=1.1.1=py36h8c4c3a4_1
- - matplotlib-base=3.2.1=py36hb8e4980_0
- - mistune=0.8.4=py36h8c4c3a4_1001
- - ncurses=6.1=hf484d3e_1002
- - numpy=1.18.4=py36h7314795_0
- - openssl=1.1.1g=h516909a_0
- - pandas=1.0.4=py36h830a2c2_0
- - pillow=7.1.2=py36h8328e55_0
- - pyrsistent=0.16.0=py36h8c4c3a4_0
- - python=3.6.10=h8356626_1011_cpython
- - pyyaml=5.3.1=py36h8c4c3a4_0
- - pyzmq=19.0.1=py36h9947dbf_0
- - readline=8.0=hf8c457e_0
- - sqlite=3.30.1=hcee41ef_0
- - tk=8.6.10=hed695b0_0
- - tornado=5.1.1=py36h14c3975_1000
- - xz=5.2.5=h516909a_0
- - yaml=0.2.4=h516909a_0
- - zeromq=4.3.2=he1b5a44_2
- - zlib=1.2.11=h516909a_1006
- - zstd=1.4.4=h6597ccf_3
+ - _openmp_mutex=4.5=1_gnu
+ - brotlipy=0.7.0=py37h5e8e339_1001
+ - ca-certificates=2020.12.5=ha878542_0
+ - certifi=2020.12.5=py37h89c1867_1
+ - cffi=1.14.4=py37hc58025e_1
+ - chardet=4.0.0=py37h89c1867_1
+ - cryptography=3.3.1=py37h7f0c10b_1
+ - freetype=2.10.4=h7ca028e_0
+ - importlib-metadata=3.4.0=py37h89c1867_0
+ - ipykernel=5.4.2=py37h888b3d9_0
+ - ipython=7.19.0=py37h888b3d9_0
+ - jedi=0.18.0=py37h89c1867_2
+ - jpeg=9d=h36c2ea0_0
+ - jupyter_core=4.7.0=py37h89c1867_0
+ - kiwisolver=1.3.1=py37h2527ec5_1
+ - lcms2=2.11=hcbb858e_1
+ - ld_impl_linux-64=2.35.1=hea4e1c9_1
+ - libffi=3.3=h58526e2_2
+ - libgcc-ng=9.3.0=h5dbcf3e_17
+ - libgfortran-ng=9.3.0=he4bcb1c_17
+ - libgfortran5=9.3.0=he4bcb1c_17
+ - libgomp=9.3.0=h5dbcf3e_17
+ - libopenblas=0.3.12=pthreads_h4812303_1
+ - libpng=1.6.37=h21135ba_2
+ - libsodium=1.0.18=h36c2ea0_1
+ - libstdcxx-ng=9.3.0=h2ae2ef3_17
+ - libtiff=4.2.0=hdc55705_0
+ - libwebp-base=1.1.0=h36c2ea0_3
+ - lz4-c=1.9.3=h9c3ff4c_0
+ - markupsafe=1.1.1=py37h5e8e339_3
+ - matplotlib-base=3.3.3=py37h0c9df89_0
+ - mistune=0.8.4=py37h5e8e339_1003
+ - nbconvert=6.0.7=py37h89c1867_3
+ - ncurses=6.2=h58526e2_4
+ - numpy=1.19.5=py37haa41c4c_1
+ - openssl=1.1.1i=h7f98852_0
+ - pandas=1.2.0=py37hdc94413_1
+ - pandoc=2.11.3.2=h7f98852_0
+ - pillow=8.1.0=py37he6b4880_1
+ - pyrsistent=0.17.3=py37h5e8e339_2
+ - pysocks=1.7.1=py37h89c1867_3
+ - python=3.7.9=hffdb5ce_0_cpython
+ - pyyaml=5.3.1=py37h5e8e339_2
+ - pyzmq=21.0.0=py37h499b945_0
+ - readline=8.0=he28a2e2_2
+ - setuptools=49.6.0=py37h89c1867_3
+ - sqlite=3.34.0=h74cdb3f_0
+ - terminado=0.9.2=py37h89c1867_0
+ - tk=8.6.10=h21135ba_1
+ - tornado=6.1=py37h5e8e339_1
+ - xz=5.2.5=h516909a_1
+ - yaml=0.2.5=h516909a_0
+ - zeromq=4.3.3=h58526e2_3
+ - zlib=1.2.11=h516909a_1010
+ - zstd=1.4.8=ha95c52a_1
osx-64:
- - appnope=0.1.0=py36h9f0ad1d_1001
- - brotlipy=0.7.0=py36h37b9a7d_1000
- - cffi=1.14.0=py36h356ff06_0
- - cryptography=2.9.2=py36hc9d8292_0
- - freetype=2.10.2=h8da9a1a_0
- - jpeg=9c=h1de35cc_1001
- - kiwisolver=1.2.0=py36h863e41a_0
- - libcxx=10.0.0=h1af66ff_2
- - libffi=3.2.1=h4a8c4bd_1007
- - libgfortran=4.0.0=2
- - libopenblas=0.3.9=h3d69b6c_0
- - libpng=1.6.37=hbbe82c9_1
- - libsodium=1.0.17=h01d97ff_0
- - libtiff=4.1.0=h2ae36a8_6
- - libwebp-base=1.1.0=h0b31af3_3
- - llvm-openmp=10.0.0=h28b9765_0
- - lz4-c=1.9.2=h4a8c4bd_1
- - markupsafe=1.1.1=py36h37b9a7d_1
- - matplotlib-base=3.2.1=py36h83d3ec1_0
- - mistune=0.8.4=py36h37b9a7d_1001
- - ncurses=6.1=h0a44026_1002
- - numpy=1.18.4=py36hdc5ca10_0
- - openssl=1.1.1g=h0b31af3_0
- - pandas=1.0.4=py36hcc1bba6_0
- - pillow=7.1.2=py36h2ae5dfa_0
- - pyrsistent=0.16.0=py36h37b9a7d_0
- - python=3.6.10=h4334963_1011_cpython
- - pyyaml=5.3.1=py36h37b9a7d_0
- - pyzmq=19.0.1=py36h820b253_0
- - readline=8.0=hcfe32e1_0
- - sqlite=3.30.1=h93121df_0
- - tk=8.6.10=hbbe82c9_0
- - tornado=5.1.1=py36h1de35cc_1000
- - xz=5.2.5=h0b31af3_0
- - yaml=0.2.4=h0b31af3_0
- - zeromq=4.3.2=h6de7cb9_2
- - zlib=1.2.11=h0b31af3_1006
- - zstd=1.4.4=h4b3e974_3
+ - appnope=0.1.2=py37hf985489_1
+ - brotlipy=0.7.0=py37hf967b71_1001
+ - ca-certificates=2020.12.5=h033912b_0
+ - certifi=2020.12.5=py37hf985489_1
+ - cffi=1.14.4=py37hc5b2277_1
+ - chardet=4.0.0=py37hf985489_1
+ - cryptography=3.3.1=py37haf76d9e_1
+ - freetype=2.10.4=h3f75d11_0
+ - importlib-metadata=3.4.0=py37hf985489_0
+ - ipykernel=5.4.2=py37he01cfaa_0
+ - ipython=7.19.0=py37he01cfaa_0
+ - jedi=0.18.0=py37hf985489_2
+ - jpeg=9d=hbcb3906_0
+ - jupyter_core=4.7.0=py37hf985489_0
+ - kiwisolver=1.3.1=py37h70f7d40_1
+ - lcms2=2.11=h11f7e16_1
+ - libcxx=11.0.0=h4c3b8ed_1
+ - libffi=3.3=h046ec9c_2
+ - libgfortran5=9.3.0=h6c81a4c_16
+ - libgfortran=5.0.0=9_3_0_h6c81a4c_16
+ - libopenblas=0.3.12=openmp_h54245bb_1
+ - libpng=1.6.37=h7cec526_2
+ - libsodium=1.0.18=hbcb3906_1
+ - libtiff=4.2.0=h355d032_0
+ - libwebp-base=1.1.0=hbcb3906_3
+ - llvm-openmp=11.0.0=h73239a0_1
+ - lz4-c=1.9.3=h046ec9c_0
+ - markupsafe=1.1.1=py37hf967b71_3
+ - matplotlib-base=3.3.3=py37hef07623_0
+ - mistune=0.8.4=py37hf967b71_1003
+ - nbconvert=6.0.7=py37hf985489_3
+ - ncurses=6.2=h2e338ed_4
+ - numpy=1.19.5=py37hec87de9_1
+ - openssl=1.1.1i=h35c211d_0
+ - pandas=1.2.0=py37h010c265_1
+ - pandoc=2.11.3.2=h35c211d_0
+ - pillow=8.1.0=py37h40a97b9_1
+ - pyrsistent=0.17.3=py37hf967b71_2
+ - pysocks=1.7.1=py37hf985489_3
+ - python=3.7.9=h6c3b2c9_0_cpython
+ - pyyaml=5.3.1=py37hf967b71_2
+ - pyzmq=21.0.0=py37h4c5583b_0
+ - readline=8.0=h0678c8f_2
+ - setuptools=49.6.0=py37hf985489_3
+ - sqlite=3.34.0=h17101e1_0
+ - terminado=0.9.2=py37hf985489_0
+ - tk=8.6.10=h0419947_1
+ - tornado=6.1=py37hf967b71_1
+ - xz=5.2.5=haf1e3a3_1
+ - yaml=0.2.5=haf1e3a3_0
+ - zeromq=4.3.3=h74dc148_3
+ - zlib=1.2.11=h7795811_1010
+ - zstd=1.4.8=hf387650_1
win-64:
- - brotlipy=0.7.0=py36h779f372_1000
- - cffi=1.14.0=py36ha419a9e_0
- - colorama=0.4.3=py_0
- - cryptography=2.9.2=py36hef61171_0
- - freetype=2.10.2=hd328e21_0
- - intel-openmp=2020.0=166
- - ipykernel=5.1.0=py36h39e3cac_1002
- - jpeg=9c=hfa6e2cd_1001
- - kiwisolver=1.2.0=py36h246c5b5_0
- - libblas=3.8.0=15_mkl
- - libcblas=3.8.0=15_mkl
- - liblapack=3.8.0=15_mkl
- - libpng=1.6.37=hfe6a214_1
- - libsodium=1.0.17=h2fa13f4_0
- - libtiff=4.1.0=h885aae3_6
- - lz4-c=1.9.2=h62dcd97_1
+ - brotlipy=0.7.0=py37hcc03f2d_1001
+ - ca-certificates=2020.12.5=h5b45459_0
+ - certifi=2020.12.5=py37h03978a9_1
+ - cffi=1.14.4=py37hd8e9650_1
+ - chardet=4.0.0=py37h03978a9_1
+ - colorama=0.4.4=pyh9f0ad1d_0
+ - cryptography=3.3.1=py37hd8e9650_1
+ - freetype=2.10.4=h546665d_0
+ - importlib-metadata=3.4.0=py37h03978a9_0
+ - intel-openmp=2020.3=h57928b3_311
+ - ipykernel=5.4.2=py37h7b7c402_0
+ - ipython=7.19.0=py37heaed05f_0
+ - jedi=0.18.0=py37h03978a9_2
+ - jpeg=9d=h8ffe710_0
+ - jupyter_core=4.7.0=py37h03978a9_0
+ - kiwisolver=1.3.1=py37h8c56517_1
+ - libblas=3.9.0=7_mkl
+ - libcblas=3.9.0=7_mkl
+ - liblapack=3.9.0=7_mkl
+ - libpng=1.6.37=h1d00b33_2
+ - libsodium=1.0.18=h8d14728_1
+ - libtiff=4.2.0=hc10be44_0
+ - lz4-c=1.9.3=h8ffe710_0
- m2w64-gcc-libgfortran=5.3.0=6
- m2w64-gcc-libs-core=5.3.0=7
- m2w64-gcc-libs=5.3.0=7
- m2w64-gmp=6.1.0=2
- m2w64-libwinpthread-git=5.0.0.4634.697f757=2
- - markupsafe=1.1.1=py36h68a101e_1
- - matplotlib-base=3.2.1=py36hf0cddfc_0
- - mistune=0.8.4=py36h68a101e_1001
- - mkl=2020.0=166
+ - markupsafe=1.1.1=py37hcc03f2d_3
+ - matplotlib-base=3.3.3=py37h3379fd5_0
+ - mistune=0.8.4=py37hcc03f2d_1003
+ - mkl=2020.4=hb70f87d_311
- msys2-conda-epoch=20160418=1
- - numpy=1.18.4=py36h4d86e3b_0
- - openssl=1.1.1g=he774522_0
- - pandas=1.0.4=py36hcc50265_0
- - pillow=7.1.2=py36he4e95fe_0
- - pyrsistent=0.16.0=py36h68a101e_0
- - python=3.6.10=he025d50_1009_cpython
- - pywin32=227=py36hfa6e2cd_0
- - pywinpty=0.5.7=py36_0
- - pyyaml=5.3.1=py36h68a101e_0
- - pyzmq=19.0.1=py36h274d426_0
- - tk=8.6.10=hfa6e2cd_0
- - tornado=5.1.1=py36hfa6e2cd_1000
- - vc=14.1=h869be7e_1
- - vs2015_runtime=14.16.27012=h30e32a0_2
- - win_inet_pton=1.1.0=py36_0
- - wincertstore=0.2=py36_1003
+ - nbconvert=6.0.7=py37h03978a9_3
+ - numpy=1.19.5=py37hd20adf4_1
+ - openssl=1.1.1i=h8ffe710_0
+ - pandas=1.2.0=py37h08fd248_1
+ - pandoc=2.11.3.2=h8ffe710_0
+ - pillow=8.1.0=py37hdec93a9_1
+ - pyrsistent=0.17.3=py37hcc03f2d_2
+ - pysocks=1.7.1=py37h03978a9_3
+ - python=3.7.9=h7840368_0_cpython
+ - pywin32=228=py37hcc03f2d_1
+ - pywinpty=0.5.7=py37hc8dfbb8_1
+ - pyyaml=5.3.1=py37hcc03f2d_2
+ - pyzmq=21.0.0=py37h0d95fc2_0
+ - setuptools=49.6.0=py37h03978a9_3
+ - sqlite=3.34.0=h8ffe710_0
+ - terminado=0.9.2=py37h03978a9_0
+ - tk=8.6.10=h8ffe710_1
+ - tornado=6.1=py37hcc03f2d_1
+ - vc=14.2=hb210afc_2
+ - vs2015_runtime=14.28.29325=h5e1d092_0
+ - win_inet_pton=1.1.0=py37h03978a9_2
+ - wincertstore=0.2=py37h03978a9_1006
- winpty=0.4.3=4
- - xz=5.2.5=h2fa13f4_0
- - yaml=0.2.4=he774522_0
- - zeromq=4.3.2=h6538335_2
- - zlib=1.2.11=h2fa13f4_1006
- - zstd=1.4.4=h9f78265_3
+ - xz=5.2.5=h62dcd97_1
+ - yaml=0.2.5=he774522_0
+ - zeromq=4.3.3=h0e60522_3
+ - zlib=1.2.11=h62dcd97_1010
+ - zstd=1.4.8=h4e2f164_1
diff --git a/gapminders/anaconda-project.yml b/gapminders/anaconda-project.yml
index bd3ec6ccc..04d41b460 100644
--- a/gapminders/anaconda-project.yml
+++ b/gapminders/anaconda-project.yml
@@ -8,25 +8,22 @@ labels:
- panel
- channel_conda-forge
-user_fields: [labels, skip, maintainers]
+user_fields: [labels, skip, maintainers, user_fields, user_fields, user_fields, user_fields,
+ user_fields]
channels:
- conda-forge
- nodefaults
packages: &pkgs
-- python=3.6
+- python=3.7
- notebook=5.7.8
-- ipykernel=5.1.0
- plotly
-- holoviews=1.12.3
-- hvplot=0.4.0
-- panel=0.6.2
-- param=1.9.1
-- pyviz_comms=0.7.2
-- bokeh=1.3.0
-- toolz=0.10.0
-- tornado<6
+- holoviews=1.14.1
+- hvplot=0.7.0
+- panel=0.10.2
+- param=1.10.0
+- bokeh=2.2.1
- altair=3
dependencies: *pkgs
diff --git a/gapminders/gapminders.ipynb b/gapminders/gapminders.ipynb
index d68b12e12..be4114f7b 100644
--- a/gapminders/gapminders.ipynb
+++ b/gapminders/gapminders.ipynb
@@ -24,14 +24,16 @@
"import numpy as np \n",
"import pandas as pd\n",
"import panel as pn\n",
+ "import holoviews as hv\n",
"\n",
"import altair as alt\n",
"import plotly.graph_objs as go\n",
"import matplotlib.pyplot as plt\n",
- "import hvplot.pandas # noqa: adds hvplot to pandas objects as a side effect\n",
"\n",
"pn.extension('vega', 'plotly')\n",
"\n",
+ "import hvplot.pandas # noqa: adds hvplot to pandas objects as a side effect\n",
+ "\n",
"# Disable default plotly theme\n",
"import plotly.io as pio\n",
"pio.templates.default = None"
@@ -88,7 +90,7 @@
" \n",
" plot = plt.figure(figsize=(7, 6))\n",
" ax = plot.add_subplot(111)\n",
- " ax.set_xscale(\"log\", nonposx='clip')\n",
+ " ax.set_xscale(\"log\", nonpositive='clip')\n",
" ax.set_title(title)\n",
" ax.set_xlabel(self.xlabel)\n",
" ax.set_ylabel(self.ylabel)\n",
@@ -138,12 +140,13 @@
" data = self.get_data()\n",
" title = \"hvPlot/Bokeh: \" + (self.title % self.year)\n",
" \n",
- " plot = data.hvplot.scatter('gdpPercap', 'lifeExp', by='continent', s='size',\n",
- " logx=True, title=title, width=500, height=400, legend=self.show_legend)\n",
- " plot = plot.options(legend_position='bottom_right', xticks=[500, 1000, 2000, 5000, 10000])\n",
- " plot = plot.redim.label(gdpPercap=self.xlabel, lifeExp=self.ylabel)\n",
- " plot = plot.redim.range(lifeExp=self.ylim, gdpPercap=(200, 12000))\n",
- " return plot\n",
+ " legend = 'bottom_right' if self.show_legend else None\n",
+ " return data.hvplot.scatter(\n",
+ " 'gdpPercap', 'lifeExp', by='continent', size=np.sqrt(hv.dim('size'))*3, line_color='black',\n",
+ " logx=True, title=title, width=500, height=400, legend=legend,\n",
+ " xlabel=self.xlabel, ylabel=self.ylabel, xticks=[500, 1000, 2000, 5000, 10000],\n",
+ " ylim=self.ylim, xlim=(200, 12000)\n",
+ " )\n",
"\n",
"gm = Gapminder(name='')"
]
@@ -161,9 +164,11 @@
"metadata": {},
"outputs": [],
"source": [
- "pn.Column(gm.param,\n",
- " pn.Row(gm.hvplot_view, gm.altair_view),\n",
- " pn.Row(gm.mpl_view, gm.plotly_view))"
+ "pn.Column(\n",
+ " gm.param,\n",
+ " pn.Row(gm.hvplot_view, gm.altair_view),\n",
+ " pn.Row(gm.mpl_view, gm.plotly_view)\n",
+ ")"
]
},
{
@@ -184,6 +189,7 @@
"logo = \"\"\"\n",
" \"\"\"\n",
+ "\n",
"title = 'Plotting library comparison
'\n",
"\n",
"desc = pn.pane.HTML(\"\"\"\n",
@@ -191,25 +197,65 @@
" lets you make widget-controlled apps and dashboards from a wide variety of \n",
" plotting libraries and data types. Here you can try out five different plotting libraries\n",
" controlled by a couple of widgets, for Hans Rosling's \n",
- " gapminder example.\"\"\", width=450)\n",
+ " gapminder example.\"\"\", width=250)\n",
+ "\n",
+ "widgets = pn.Param(gm.param, widgets={'year': {'type': pn.widgets.DiscreteSlider, 'width': 250}}, margin=0)\n",
+ "\n",
+ "pn.Row(\n",
+ " pn.Column(logo, title, desc, widgets),\n",
+ " pn.Column(\n",
+ " pn.Row(gm.hvplot_view, gm.altair_view),\n",
+ " pn.Row(gm.mpl_view, gm.plotly_view)\n",
+ " )\n",
+ ")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Template\n",
+ "\n",
+ "To make the application look more polished we can put our components into a template:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "template = pn.template.MaterialTemplate(\n",
+ " title='Gapminder - Plotting library comparison',\n",
+ ")\n",
+ "\n",
+ "template.sidebar.append(logo)\n",
+ "template.sidebar.append(desc.clone(width=250, margin=(20, 5)))\n",
+ "\n",
+ "template.sidebar.append(widgets)\n",
+ "\n",
+ "template.main.append(\n",
+ " pn.Column(\n",
+ " pn.Row(gm.hvplot_view, gm.altair_view),\n",
+ " pn.Row(gm.mpl_view, gm.plotly_view)\n",
+ " )\n",
+ ")\n",
"\n",
- "pn.Row(pn.Column(logo, title, desc, pn.panel(gm.param, widgets={'year': pn.widgets.DiscreteSlider})),\n",
- " pn.Column(pn.Row(gm.hvplot_view, gm.altair_view),\n",
- " pn.Row(gm.mpl_view, gm.plotly_view))).servable()"
+ "template.servable();"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "Once you run Bokeh Server on this notebook, you should get a panel like the following in your web browser that you can explore or share with other users of your machine:"
+ "Once you run `panel serve` on this notebook , you should get a panel like the following in your web browser that you can explore or share with other users of your machine:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- ""
+ ""
]
}
],
@@ -220,5 +266,5 @@
}
},
"nbformat": 4,
- "nbformat_minor": 2
+ "nbformat_minor": 4
}