hvplot 0.9.0rc2__tar.gz → 0.9.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (201) hide show
  1. {hvplot-0.9.0rc2/hvplot.egg-info → hvplot-0.9.1}/PKG-INFO +195 -5
  2. hvplot-0.9.1/examples/conftest.py +1 -0
  3. {hvplot-0.9.0rc2 → hvplot-0.9.1}/examples/getting_started/explorer.ipynb +1 -1
  4. {hvplot-0.9.0rc2/hvplot → hvplot-0.9.1}/examples/user_guide/Explorer.ipynb +1 -1
  5. {hvplot-0.9.0rc2 → hvplot-0.9.1}/examples/user_guide/Geographic_Data.ipynb +2 -2
  6. {hvplot-0.9.0rc2/hvplot → hvplot-0.9.1}/examples/user_guide/Interactive.ipynb +1 -1
  7. {hvplot-0.9.0rc2 → hvplot-0.9.1}/examples/user_guide/Plotting.ipynb +2 -2
  8. {hvplot-0.9.0rc2/hvplot → hvplot-0.9.1}/examples/user_guide/Plotting_with_Matplotlib.ipynb +5 -5
  9. {hvplot-0.9.0rc2/hvplot → hvplot-0.9.1}/examples/user_guide/Plotting_with_Plotly.ipynb +2 -2
  10. hvplot-0.9.1/hvplot/.version +1 -0
  11. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/converter.py +9 -5
  12. hvplot-0.9.1/hvplot/examples/conftest.py +1 -0
  13. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/examples/getting_started/explorer.ipynb +1 -1
  14. {hvplot-0.9.0rc2 → hvplot-0.9.1/hvplot}/examples/user_guide/Explorer.ipynb +1 -1
  15. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/examples/user_guide/Geographic_Data.ipynb +2 -2
  16. {hvplot-0.9.0rc2 → hvplot-0.9.1/hvplot}/examples/user_guide/Interactive.ipynb +1 -1
  17. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/examples/user_guide/Plotting.ipynb +2 -2
  18. {hvplot-0.9.0rc2 → hvplot-0.9.1/hvplot}/examples/user_guide/Plotting_with_Matplotlib.ipynb +5 -5
  19. {hvplot-0.9.0rc2 → hvplot-0.9.1/hvplot}/examples/user_guide/Plotting_with_Plotly.ipynb +2 -2
  20. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/interactive.py +1 -1
  21. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/plotting/__init__.py +4 -1
  22. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/plotting/core.py +42 -0
  23. hvplot-0.9.1/hvplot/polars.py +20 -0
  24. hvplot-0.9.1/hvplot/tests/plotting/testohlc.py +31 -0
  25. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/tests/testoperations.py +10 -1
  26. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/tests/testplotting.py +13 -3
  27. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/tests/testui.py +31 -11
  28. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/ui.py +121 -53
  29. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/util.py +6 -0
  30. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/utilities.py +8 -5
  31. {hvplot-0.9.0rc2 → hvplot-0.9.1/hvplot.egg-info}/PKG-INFO +195 -5
  32. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot.egg-info/SOURCES.txt +1 -0
  33. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot.egg-info/requires.txt +3 -3
  34. {hvplot-0.9.0rc2 → hvplot-0.9.1}/setup.py +3 -2
  35. hvplot-0.9.0rc2/examples/conftest.py +0 -14
  36. hvplot-0.9.0rc2/hvplot/.version +0 -1
  37. hvplot-0.9.0rc2/hvplot/examples/conftest.py +0 -14
  38. hvplot-0.9.0rc2/hvplot/polars.py +0 -64
  39. {hvplot-0.9.0rc2 → hvplot-0.9.1}/LICENSE +0 -0
  40. {hvplot-0.9.0rc2 → hvplot-0.9.1}/MANIFEST.in +0 -0
  41. {hvplot-0.9.0rc2 → hvplot-0.9.1}/README.md +0 -0
  42. {hvplot-0.9.0rc2 → hvplot-0.9.1}/examples/assets/console.png +0 -0
  43. {hvplot-0.9.0rc2 → hvplot-0.9.1}/examples/assets/console_server.gif +0 -0
  44. {hvplot-0.9.0rc2 → hvplot-0.9.1}/examples/assets/diagram.png +0 -0
  45. {hvplot-0.9.0rc2 → hvplot-0.9.1}/examples/assets/diagram.svg +0 -0
  46. {hvplot-0.9.0rc2 → hvplot-0.9.1}/examples/assets/hvplot-wm.png +0 -0
  47. {hvplot-0.9.0rc2 → hvplot-0.9.1}/examples/assets/streamz_demo.gif +0 -0
  48. {hvplot-0.9.0rc2 → hvplot-0.9.1}/examples/data/crime.csv +0 -0
  49. {hvplot-0.9.0rc2 → hvplot-0.9.1}/examples/datasets.yaml +0 -0
  50. {hvplot-0.9.0rc2 → hvplot-0.9.1}/examples/getting_started/hvplot.ipynb +0 -0
  51. {hvplot-0.9.0rc2 → hvplot-0.9.1}/examples/getting_started/interactive.ipynb +0 -0
  52. {hvplot-0.9.0rc2 → hvplot-0.9.1}/examples/reference/geopandas/points.ipynb +0 -0
  53. {hvplot-0.9.0rc2 → hvplot-0.9.1}/examples/reference/geopandas/polygons.ipynb +0 -0
  54. {hvplot-0.9.0rc2 → hvplot-0.9.1}/examples/reference/pandas/andrewscurves.ipynb +0 -0
  55. {hvplot-0.9.0rc2 → hvplot-0.9.1}/examples/reference/pandas/area.ipynb +0 -0
  56. {hvplot-0.9.0rc2 → hvplot-0.9.1}/examples/reference/pandas/bar.ipynb +0 -0
  57. {hvplot-0.9.0rc2 → hvplot-0.9.1}/examples/reference/pandas/barh.ipynb +0 -0
  58. {hvplot-0.9.0rc2 → hvplot-0.9.1}/examples/reference/pandas/bivariate.ipynb +0 -0
  59. {hvplot-0.9.0rc2 → hvplot-0.9.1}/examples/reference/pandas/box.ipynb +0 -0
  60. {hvplot-0.9.0rc2 → hvplot-0.9.1}/examples/reference/pandas/errorbars.ipynb +0 -0
  61. {hvplot-0.9.0rc2 → hvplot-0.9.1}/examples/reference/pandas/heatmap.ipynb +0 -0
  62. {hvplot-0.9.0rc2 → hvplot-0.9.1}/examples/reference/pandas/hexbin.ipynb +0 -0
  63. {hvplot-0.9.0rc2 → hvplot-0.9.1}/examples/reference/pandas/hist.ipynb +0 -0
  64. {hvplot-0.9.0rc2 → hvplot-0.9.1}/examples/reference/pandas/kde.ipynb +0 -0
  65. {hvplot-0.9.0rc2 → hvplot-0.9.1}/examples/reference/pandas/labels.ipynb +0 -0
  66. {hvplot-0.9.0rc2 → hvplot-0.9.1}/examples/reference/pandas/lagplot.ipynb +0 -0
  67. {hvplot-0.9.0rc2 → hvplot-0.9.1}/examples/reference/pandas/line.ipynb +0 -0
  68. {hvplot-0.9.0rc2 → hvplot-0.9.1}/examples/reference/pandas/ohlc.ipynb +0 -0
  69. {hvplot-0.9.0rc2 → hvplot-0.9.1}/examples/reference/pandas/parallelcoordinates.ipynb +0 -0
  70. {hvplot-0.9.0rc2 → hvplot-0.9.1}/examples/reference/pandas/scatter.ipynb +0 -0
  71. {hvplot-0.9.0rc2 → hvplot-0.9.1}/examples/reference/pandas/scattermatrix.ipynb +0 -0
  72. {hvplot-0.9.0rc2 → hvplot-0.9.1}/examples/reference/pandas/step.ipynb +0 -0
  73. {hvplot-0.9.0rc2 → hvplot-0.9.1}/examples/reference/pandas/table.ipynb +0 -0
  74. {hvplot-0.9.0rc2 → hvplot-0.9.1}/examples/reference/pandas/violin.ipynb +0 -0
  75. {hvplot-0.9.0rc2 → hvplot-0.9.1}/examples/reference/xarray/bar.ipynb +0 -0
  76. {hvplot-0.9.0rc2 → hvplot-0.9.1}/examples/reference/xarray/contour.ipynb +0 -0
  77. {hvplot-0.9.0rc2 → hvplot-0.9.1}/examples/reference/xarray/contourf.ipynb +0 -0
  78. {hvplot-0.9.0rc2 → hvplot-0.9.1}/examples/reference/xarray/hist.ipynb +0 -0
  79. {hvplot-0.9.0rc2 → hvplot-0.9.1}/examples/reference/xarray/image.ipynb +0 -0
  80. {hvplot-0.9.0rc2 → hvplot-0.9.1}/examples/reference/xarray/kde.ipynb +0 -0
  81. {hvplot-0.9.0rc2 → hvplot-0.9.1}/examples/reference/xarray/line.ipynb +0 -0
  82. {hvplot-0.9.0rc2 → hvplot-0.9.1}/examples/reference/xarray/quadmesh.ipynb +0 -0
  83. {hvplot-0.9.0rc2 → hvplot-0.9.1}/examples/reference/xarray/rgb.ipynb +0 -0
  84. {hvplot-0.9.0rc2 → hvplot-0.9.1}/examples/reference/xarray/vectorfield.ipynb +0 -0
  85. {hvplot-0.9.0rc2 → hvplot-0.9.1}/examples/reference/xarray/violin.ipynb +0 -0
  86. {hvplot-0.9.0rc2 → hvplot-0.9.1}/examples/user_guide/Customization.ipynb +0 -0
  87. {hvplot-0.9.0rc2 → hvplot-0.9.1}/examples/user_guide/Gridded_Data.ipynb +0 -0
  88. {hvplot-0.9.0rc2 → hvplot-0.9.1}/examples/user_guide/Integrations.ipynb +0 -0
  89. {hvplot-0.9.0rc2 → hvplot-0.9.1}/examples/user_guide/Introduction.ipynb +0 -0
  90. {hvplot-0.9.0rc2 → hvplot-0.9.1}/examples/user_guide/NetworkX.ipynb +0 -0
  91. {hvplot-0.9.0rc2 → hvplot-0.9.1}/examples/user_guide/Pandas_API.ipynb +0 -0
  92. {hvplot-0.9.0rc2 → hvplot-0.9.1}/examples/user_guide/Plotting_Extensions.ipynb +0 -0
  93. {hvplot-0.9.0rc2 → hvplot-0.9.1}/examples/user_guide/Statistical_Plots.ipynb +0 -0
  94. {hvplot-0.9.0rc2 → hvplot-0.9.1}/examples/user_guide/Streaming.ipynb +0 -0
  95. {hvplot-0.9.0rc2 → hvplot-0.9.1}/examples/user_guide/Subplots.ipynb +0 -0
  96. {hvplot-0.9.0rc2 → hvplot-0.9.1}/examples/user_guide/Timeseries_Data.ipynb +0 -0
  97. {hvplot-0.9.0rc2 → hvplot-0.9.1}/examples/user_guide/Viewing.ipynb +0 -0
  98. {hvplot-0.9.0rc2 → hvplot-0.9.1}/examples/user_guide/Widgets.ipynb +0 -0
  99. {hvplot-0.9.0rc2 → hvplot-0.9.1}/examples/user_guide/images/simple.svg +0 -0
  100. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/__init__.py +0 -0
  101. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/backend_transforms.py +0 -0
  102. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/cudf.py +0 -0
  103. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/dask.py +0 -0
  104. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/examples/assets/console.png +0 -0
  105. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/examples/assets/console_server.gif +0 -0
  106. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/examples/assets/diagram.png +0 -0
  107. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/examples/assets/diagram.svg +0 -0
  108. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/examples/assets/hvplot-wm.png +0 -0
  109. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/examples/assets/streamz_demo.gif +0 -0
  110. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/examples/data/crime.csv +0 -0
  111. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/examples/datasets.yaml +0 -0
  112. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/examples/getting_started/hvplot.ipynb +0 -0
  113. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/examples/getting_started/interactive.ipynb +0 -0
  114. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/examples/reference/geopandas/points.ipynb +0 -0
  115. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/examples/reference/geopandas/polygons.ipynb +0 -0
  116. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/examples/reference/pandas/andrewscurves.ipynb +0 -0
  117. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/examples/reference/pandas/area.ipynb +0 -0
  118. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/examples/reference/pandas/bar.ipynb +0 -0
  119. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/examples/reference/pandas/barh.ipynb +0 -0
  120. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/examples/reference/pandas/bivariate.ipynb +0 -0
  121. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/examples/reference/pandas/box.ipynb +0 -0
  122. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/examples/reference/pandas/errorbars.ipynb +0 -0
  123. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/examples/reference/pandas/heatmap.ipynb +0 -0
  124. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/examples/reference/pandas/hexbin.ipynb +0 -0
  125. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/examples/reference/pandas/hist.ipynb +0 -0
  126. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/examples/reference/pandas/kde.ipynb +0 -0
  127. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/examples/reference/pandas/labels.ipynb +0 -0
  128. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/examples/reference/pandas/lagplot.ipynb +0 -0
  129. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/examples/reference/pandas/line.ipynb +0 -0
  130. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/examples/reference/pandas/ohlc.ipynb +0 -0
  131. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/examples/reference/pandas/parallelcoordinates.ipynb +0 -0
  132. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/examples/reference/pandas/scatter.ipynb +0 -0
  133. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/examples/reference/pandas/scattermatrix.ipynb +0 -0
  134. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/examples/reference/pandas/step.ipynb +0 -0
  135. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/examples/reference/pandas/table.ipynb +0 -0
  136. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/examples/reference/pandas/violin.ipynb +0 -0
  137. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/examples/reference/xarray/bar.ipynb +0 -0
  138. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/examples/reference/xarray/contour.ipynb +0 -0
  139. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/examples/reference/xarray/contourf.ipynb +0 -0
  140. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/examples/reference/xarray/hist.ipynb +0 -0
  141. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/examples/reference/xarray/image.ipynb +0 -0
  142. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/examples/reference/xarray/kde.ipynb +0 -0
  143. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/examples/reference/xarray/line.ipynb +0 -0
  144. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/examples/reference/xarray/quadmesh.ipynb +0 -0
  145. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/examples/reference/xarray/rgb.ipynb +0 -0
  146. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/examples/reference/xarray/vectorfield.ipynb +0 -0
  147. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/examples/reference/xarray/violin.ipynb +0 -0
  148. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/examples/user_guide/Customization.ipynb +0 -0
  149. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/examples/user_guide/Gridded_Data.ipynb +0 -0
  150. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/examples/user_guide/Integrations.ipynb +0 -0
  151. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/examples/user_guide/Introduction.ipynb +0 -0
  152. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/examples/user_guide/NetworkX.ipynb +0 -0
  153. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/examples/user_guide/Pandas_API.ipynb +0 -0
  154. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/examples/user_guide/Plotting_Extensions.ipynb +0 -0
  155. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/examples/user_guide/Statistical_Plots.ipynb +0 -0
  156. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/examples/user_guide/Streaming.ipynb +0 -0
  157. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/examples/user_guide/Subplots.ipynb +0 -0
  158. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/examples/user_guide/Timeseries_Data.ipynb +0 -0
  159. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/examples/user_guide/Viewing.ipynb +0 -0
  160. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/examples/user_guide/Widgets.ipynb +0 -0
  161. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/examples/user_guide/images/simple.svg +0 -0
  162. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/fugue.py +0 -0
  163. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/ibis.py +0 -0
  164. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/intake.py +0 -0
  165. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/networkx.py +0 -0
  166. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/pandas.py +0 -0
  167. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/plotting/andrews_curves.py +0 -0
  168. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/plotting/lag_plot.py +0 -0
  169. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/plotting/parallel_coordinates.py +0 -0
  170. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/plotting/scatter_matrix.py +0 -0
  171. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/sample_data.py +0 -0
  172. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/streamz.py +0 -0
  173. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/tests/__init__.py +0 -0
  174. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/tests/conftest.py +0 -0
  175. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/tests/plotting/__init__.py +0 -0
  176. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/tests/plotting/testcore.py +0 -0
  177. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/tests/plotting/testscattermatrix.py +0 -0
  178. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/tests/test_links.py +0 -0
  179. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/tests/testbackend_transforms.py +0 -0
  180. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/tests/testcharts.py +0 -0
  181. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/tests/testfugue.py +0 -0
  182. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/tests/testgeo.py +0 -0
  183. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/tests/testgeowithoutgv.py +0 -0
  184. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/tests/testgridplots.py +0 -0
  185. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/tests/testhelp.py +0 -0
  186. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/tests/testibis.py +0 -0
  187. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/tests/testinteractive.py +0 -0
  188. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/tests/testnetworkx.py +0 -0
  189. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/tests/testoptions.py +0 -0
  190. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/tests/testoverrides.py +0 -0
  191. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/tests/testpanel.py +0 -0
  192. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/tests/testpatch.py +0 -0
  193. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/tests/teststreaming.py +0 -0
  194. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/tests/testtransforms.py +0 -0
  195. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/tests/testutil.py +0 -0
  196. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot/xarray.py +0 -0
  197. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot.egg-info/dependency_links.txt +0 -0
  198. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot.egg-info/entry_points.txt +0 -0
  199. {hvplot-0.9.0rc2 → hvplot-0.9.1}/hvplot.egg-info/top_level.txt +0 -0
  200. {hvplot-0.9.0rc2 → hvplot-0.9.1}/pyproject.toml +0 -0
  201. {hvplot-0.9.0rc2 → hvplot-0.9.1}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: hvplot
3
- Version: 0.9.0rc2
3
+ Version: 0.9.1
4
4
  Summary: A high-level plotting API for the PyData ecosystem built on HoloViews.
5
5
  Home-page: https://hvplot.holoviz.org
6
6
  Author: Philipp Rudiger
@@ -17,6 +17,7 @@ Classifier: Programming Language :: Python :: 3.8
17
17
  Classifier: Programming Language :: Python :: 3.9
18
18
  Classifier: Programming Language :: Python :: 3.10
19
19
  Classifier: Programming Language :: Python :: 3.11
20
+ Classifier: Programming Language :: Python :: 3.12
20
21
  Classifier: Operating System :: OS Independent
21
22
  Classifier: Intended Audience :: Science/Research
22
23
  Classifier: Intended Audience :: Developers
@@ -25,15 +26,204 @@ Classifier: Topic :: Scientific/Engineering
25
26
  Classifier: Topic :: Software Development :: Libraries
26
27
  Requires-Python: >=3.8
27
28
  Description-Content-Type: text/markdown
28
- Provides-Extra: tests_nb
29
- Provides-Extra: tests_core
29
+ License-File: LICENSE
30
+ Requires-Dist: bokeh>=1.0.0
31
+ Requires-Dist: colorcet>=2
32
+ Requires-Dist: holoviews>=1.11.0
33
+ Requires-Dist: pandas
34
+ Requires-Dist: numpy>=1.15
35
+ Requires-Dist: packaging
36
+ Requires-Dist: panel>=0.11.0
37
+ Requires-Dist: param<3.0,>=1.12.0
38
+ Provides-Extra: tests-nb
39
+ Requires-Dist: pytest-xdist; extra == "tests-nb"
40
+ Requires-Dist: nbval; extra == "tests-nb"
41
+ Provides-Extra: tests-core
42
+ Requires-Dist: codecov; extra == "tests-core"
43
+ Requires-Dist: flake8; extra == "tests-core"
44
+ Requires-Dist: pre-commit; extra == "tests-core"
45
+ Requires-Dist: parameterized; extra == "tests-core"
46
+ Requires-Dist: pytest; extra == "tests-core"
47
+ Requires-Dist: pytest-cov; extra == "tests-core"
48
+ Requires-Dist: matplotlib; extra == "tests-core"
49
+ Requires-Dist: plotly; extra == "tests-core"
50
+ Requires-Dist: xarray; extra == "tests-core"
51
+ Requires-Dist: pooch; extra == "tests-core"
52
+ Requires-Dist: scipy; extra == "tests-core"
53
+ Requires-Dist: ipywidgets; extra == "tests-core"
54
+ Requires-Dist: dask; extra == "tests-core"
30
55
  Provides-Extra: tests
56
+ Requires-Dist: codecov; extra == "tests"
57
+ Requires-Dist: flake8; extra == "tests"
58
+ Requires-Dist: pre-commit; extra == "tests"
59
+ Requires-Dist: parameterized; extra == "tests"
60
+ Requires-Dist: pytest; extra == "tests"
61
+ Requires-Dist: pytest-cov; extra == "tests"
62
+ Requires-Dist: matplotlib; extra == "tests"
63
+ Requires-Dist: plotly; extra == "tests"
64
+ Requires-Dist: xarray; extra == "tests"
65
+ Requires-Dist: pooch; extra == "tests"
66
+ Requires-Dist: scipy; extra == "tests"
67
+ Requires-Dist: ipywidgets; extra == "tests"
68
+ Requires-Dist: dask; extra == "tests"
69
+ Requires-Dist: polars; extra == "tests"
70
+ Requires-Dist: fugue; extra == "tests"
71
+ Requires-Dist: ibis-framework; extra == "tests"
31
72
  Provides-Extra: examples
32
- Provides-Extra: examples_tests
73
+ Requires-Dist: geoviews>=1.9.0; extra == "examples"
74
+ Requires-Dist: geopandas; extra == "examples"
75
+ Requires-Dist: xarray>=0.18.2; extra == "examples"
76
+ Requires-Dist: networkx>=2.6.3; extra == "examples"
77
+ Requires-Dist: streamz>=0.3.0; extra == "examples"
78
+ Requires-Dist: intake>=0.6.5; extra == "examples"
79
+ Requires-Dist: intake-parquet>=0.2.3; extra == "examples"
80
+ Requires-Dist: intake-xarray>=0.5.0; extra == "examples"
81
+ Requires-Dist: dask>=2021.3.0; extra == "examples"
82
+ Requires-Dist: notebook>=5.4; extra == "examples"
83
+ Requires-Dist: rasterio; extra == "examples"
84
+ Requires-Dist: cartopy; extra == "examples"
85
+ Requires-Dist: pyproj; extra == "examples"
86
+ Requires-Dist: s3fs>=2022.1.0; extra == "examples"
87
+ Requires-Dist: scipy>=1.5.3; extra == "examples"
88
+ Requires-Dist: pillow>=8.2.0; extra == "examples"
89
+ Requires-Dist: selenium>=3.141.0; extra == "examples"
90
+ Requires-Dist: scikit-image>=0.17.2; extra == "examples"
91
+ Requires-Dist: python-snappy>=0.6.0; extra == "examples"
92
+ Requires-Dist: pooch>=1.6.0; extra == "examples"
93
+ Requires-Dist: fiona; extra == "examples"
94
+ Requires-Dist: rioxarray; extra == "examples"
95
+ Requires-Dist: matplotlib; extra == "examples"
96
+ Requires-Dist: plotly; extra == "examples"
97
+ Requires-Dist: pygraphviz; extra == "examples"
98
+ Requires-Dist: ipywidgets; extra == "examples"
99
+ Requires-Dist: numba>=0.51.0; extra == "examples"
100
+ Requires-Dist: datashader>=0.6.5; extra == "examples"
101
+ Requires-Dist: spatialpandas>=0.4.3; extra == "examples"
102
+ Requires-Dist: polars; extra == "examples"
103
+ Requires-Dist: fugue; extra == "examples"
104
+ Requires-Dist: ibis-framework; extra == "examples"
105
+ Provides-Extra: examples-tests
106
+ Requires-Dist: geoviews>=1.9.0; extra == "examples-tests"
107
+ Requires-Dist: geopandas; extra == "examples-tests"
108
+ Requires-Dist: xarray>=0.18.2; extra == "examples-tests"
109
+ Requires-Dist: networkx>=2.6.3; extra == "examples-tests"
110
+ Requires-Dist: streamz>=0.3.0; extra == "examples-tests"
111
+ Requires-Dist: intake>=0.6.5; extra == "examples-tests"
112
+ Requires-Dist: intake-parquet>=0.2.3; extra == "examples-tests"
113
+ Requires-Dist: intake-xarray>=0.5.0; extra == "examples-tests"
114
+ Requires-Dist: dask>=2021.3.0; extra == "examples-tests"
115
+ Requires-Dist: notebook>=5.4; extra == "examples-tests"
116
+ Requires-Dist: rasterio; extra == "examples-tests"
117
+ Requires-Dist: cartopy; extra == "examples-tests"
118
+ Requires-Dist: pyproj; extra == "examples-tests"
119
+ Requires-Dist: s3fs>=2022.1.0; extra == "examples-tests"
120
+ Requires-Dist: scipy>=1.5.3; extra == "examples-tests"
121
+ Requires-Dist: pillow>=8.2.0; extra == "examples-tests"
122
+ Requires-Dist: selenium>=3.141.0; extra == "examples-tests"
123
+ Requires-Dist: scikit-image>=0.17.2; extra == "examples-tests"
124
+ Requires-Dist: python-snappy>=0.6.0; extra == "examples-tests"
125
+ Requires-Dist: pooch>=1.6.0; extra == "examples-tests"
126
+ Requires-Dist: fiona; extra == "examples-tests"
127
+ Requires-Dist: rioxarray; extra == "examples-tests"
128
+ Requires-Dist: matplotlib; extra == "examples-tests"
129
+ Requires-Dist: plotly; extra == "examples-tests"
130
+ Requires-Dist: pygraphviz; extra == "examples-tests"
131
+ Requires-Dist: ipywidgets; extra == "examples-tests"
132
+ Requires-Dist: numba>=0.51.0; extra == "examples-tests"
133
+ Requires-Dist: datashader>=0.6.5; extra == "examples-tests"
134
+ Requires-Dist: spatialpandas>=0.4.3; extra == "examples-tests"
135
+ Requires-Dist: polars; extra == "examples-tests"
136
+ Requires-Dist: fugue; extra == "examples-tests"
137
+ Requires-Dist: ibis-framework; extra == "examples-tests"
138
+ Requires-Dist: pytest-xdist; extra == "examples-tests"
139
+ Requires-Dist: nbval; extra == "examples-tests"
33
140
  Provides-Extra: doc
141
+ Requires-Dist: geoviews>=1.9.0; extra == "doc"
142
+ Requires-Dist: geopandas; extra == "doc"
143
+ Requires-Dist: xarray>=0.18.2; extra == "doc"
144
+ Requires-Dist: networkx>=2.6.3; extra == "doc"
145
+ Requires-Dist: streamz>=0.3.0; extra == "doc"
146
+ Requires-Dist: intake>=0.6.5; extra == "doc"
147
+ Requires-Dist: intake-parquet>=0.2.3; extra == "doc"
148
+ Requires-Dist: intake-xarray>=0.5.0; extra == "doc"
149
+ Requires-Dist: dask>=2021.3.0; extra == "doc"
150
+ Requires-Dist: notebook>=5.4; extra == "doc"
151
+ Requires-Dist: rasterio; extra == "doc"
152
+ Requires-Dist: cartopy; extra == "doc"
153
+ Requires-Dist: pyproj; extra == "doc"
154
+ Requires-Dist: s3fs>=2022.1.0; extra == "doc"
155
+ Requires-Dist: scipy>=1.5.3; extra == "doc"
156
+ Requires-Dist: pillow>=8.2.0; extra == "doc"
157
+ Requires-Dist: selenium>=3.141.0; extra == "doc"
158
+ Requires-Dist: scikit-image>=0.17.2; extra == "doc"
159
+ Requires-Dist: python-snappy>=0.6.0; extra == "doc"
160
+ Requires-Dist: pooch>=1.6.0; extra == "doc"
161
+ Requires-Dist: fiona; extra == "doc"
162
+ Requires-Dist: rioxarray; extra == "doc"
163
+ Requires-Dist: matplotlib; extra == "doc"
164
+ Requires-Dist: plotly; extra == "doc"
165
+ Requires-Dist: pygraphviz; extra == "doc"
166
+ Requires-Dist: ipywidgets; extra == "doc"
167
+ Requires-Dist: numba>=0.51.0; extra == "doc"
168
+ Requires-Dist: datashader>=0.6.5; extra == "doc"
169
+ Requires-Dist: spatialpandas>=0.4.3; extra == "doc"
170
+ Requires-Dist: polars; extra == "doc"
171
+ Requires-Dist: fugue; extra == "doc"
172
+ Requires-Dist: ibis-framework; extra == "doc"
173
+ Requires-Dist: nbsite>=0.8.4; extra == "doc"
34
174
  Provides-Extra: build
175
+ Requires-Dist: param>=1.7.0; extra == "build"
176
+ Requires-Dist: pyct>=0.4.4; extra == "build"
177
+ Requires-Dist: setuptools>=30.3.0; extra == "build"
35
178
  Provides-Extra: all
36
- License-File: LICENSE
179
+ Requires-Dist: cartopy; extra == "all"
180
+ Requires-Dist: codecov; extra == "all"
181
+ Requires-Dist: dask; extra == "all"
182
+ Requires-Dist: dask>=2021.3.0; extra == "all"
183
+ Requires-Dist: datashader>=0.6.5; extra == "all"
184
+ Requires-Dist: fiona; extra == "all"
185
+ Requires-Dist: flake8; extra == "all"
186
+ Requires-Dist: fugue; extra == "all"
187
+ Requires-Dist: geopandas; extra == "all"
188
+ Requires-Dist: geoviews>=1.9.0; extra == "all"
189
+ Requires-Dist: ibis-framework; extra == "all"
190
+ Requires-Dist: intake>=0.6.5; extra == "all"
191
+ Requires-Dist: intake-parquet>=0.2.3; extra == "all"
192
+ Requires-Dist: intake-xarray>=0.5.0; extra == "all"
193
+ Requires-Dist: ipywidgets; extra == "all"
194
+ Requires-Dist: matplotlib; extra == "all"
195
+ Requires-Dist: nbsite>=0.8.4; extra == "all"
196
+ Requires-Dist: nbval; extra == "all"
197
+ Requires-Dist: networkx>=2.6.3; extra == "all"
198
+ Requires-Dist: notebook>=5.4; extra == "all"
199
+ Requires-Dist: numba>=0.51.0; extra == "all"
200
+ Requires-Dist: param>=1.7.0; extra == "all"
201
+ Requires-Dist: parameterized; extra == "all"
202
+ Requires-Dist: pillow>=8.2.0; extra == "all"
203
+ Requires-Dist: plotly; extra == "all"
204
+ Requires-Dist: polars; extra == "all"
205
+ Requires-Dist: pooch; extra == "all"
206
+ Requires-Dist: pooch>=1.6.0; extra == "all"
207
+ Requires-Dist: pre-commit; extra == "all"
208
+ Requires-Dist: pyct>=0.4.4; extra == "all"
209
+ Requires-Dist: pygraphviz; extra == "all"
210
+ Requires-Dist: pyproj; extra == "all"
211
+ Requires-Dist: pytest; extra == "all"
212
+ Requires-Dist: pytest-cov; extra == "all"
213
+ Requires-Dist: pytest-xdist; extra == "all"
214
+ Requires-Dist: python-snappy>=0.6.0; extra == "all"
215
+ Requires-Dist: rasterio; extra == "all"
216
+ Requires-Dist: rioxarray; extra == "all"
217
+ Requires-Dist: s3fs>=2022.1.0; extra == "all"
218
+ Requires-Dist: scikit-image>=0.17.2; extra == "all"
219
+ Requires-Dist: scipy; extra == "all"
220
+ Requires-Dist: scipy>=1.5.3; extra == "all"
221
+ Requires-Dist: selenium>=3.141.0; extra == "all"
222
+ Requires-Dist: setuptools>=30.3.0; extra == "all"
223
+ Requires-Dist: spatialpandas>=0.4.3; extra == "all"
224
+ Requires-Dist: streamz>=0.3.0; extra == "all"
225
+ Requires-Dist: xarray; extra == "all"
226
+ Requires-Dist: xarray>=0.18.2; extra == "all"
37
227
 
38
228
  # hvPlot makes data analysis and visualization simple <img src="https://github.com/holoviz/hvplot/blob/main/doc/_static/logo.png?raw=true" style="width:2em;margin-bottom:-15px">
39
229
 
@@ -0,0 +1 @@
1
+ collect_ignore_glob = []
@@ -79,7 +79,7 @@
79
79
  "metadata": {},
80
80
  "outputs": [],
81
81
  "source": [
82
- "explorer = df.hvplot.explorer(x='bill_length_mm', y='bill_depth_mm', kind='scatter', by=['species'])\n",
82
+ "explorer = df.hvplot.explorer(x='bill_length_mm', y='bill_depth_mm', by=['species'])\n",
83
83
  "explorer"
84
84
  ]
85
85
  },
@@ -147,7 +147,7 @@
147
147
  "metadata": {},
148
148
  "outputs": [],
149
149
  "source": [
150
- "hvexplorer.param.update(kind='scatter', x='bill_length_mm', y_multi=['bill_depth_mm'], by=['species'])\n",
150
+ "hvexplorer.param.update(x='bill_length_mm', y_multi=['bill_depth_mm'], by=['species'])\n",
151
151
  "hvexplorer.labels.title = 'Penguins Scatter'"
152
152
  ]
153
153
  },
@@ -24,7 +24,7 @@
24
24
  "\n",
25
25
  " conda install geoviews\n",
26
26
  " \n",
27
- "or if the cartopy dependency has been satisfied in some other way, GeoViews may also be installed using pip:\n",
27
+ "or with pip:\n",
28
28
  "\n",
29
29
  " pip install geoviews\n",
30
30
  "\n",
@@ -265,7 +265,7 @@
265
265
  "- ``global_extent`` (default=False): Whether to expand the plot extent to span the whole globe\n",
266
266
  "- ``project`` (default=False): Whether to project the data before plotting (adds initial overhead but avoids projecting data when plot is dynamically updated)\n",
267
267
  "- ``tiles`` (default=False): Whether to overlay the plot on a tile source. Tiles sources can be selected by name, the default is 'Wikipedia'.\n",
268
- "Other options are: 'CartoDark', 'CartoEco', 'CartoLight', 'CartoMidnight', 'EsriImagery', 'EsriNatGeo', 'EsriReference''EsriTerrain', 'EsriUSATopo', 'OSM', 'StamenLabels', 'StamenTerrain', 'StamenTerrainRetina', 'StamenToner', 'StamenTonerBackground', 'StamenWatercolor'"
268
+ "Other options are: 'CartoDark', 'CartoEco', 'CartoLight', 'CartoMidnight', 'EsriImagery', 'EsriNatGeo', 'EsriReference''EsriTerrain', 'EsriUSATopo', 'OSM', 'StamenLabels', 'StamenTerrain', 'StamenTerrainRetina', 'StamenToner', 'StamenTonerBackground', 'StamenWatercolor'. Stamen tile sources require a Stadia account when not running locally; see [stadiamaps.com](https://stadiamaps.com/)."
269
269
  ]
270
270
  }
271
271
  ],
@@ -405,7 +405,7 @@
405
405
  "cell_type": "markdown",
406
406
  "metadata": {},
407
407
  "source": [
408
- "If you want more control over the layout, you can use any of the features from [Panel](https://panel.holoviz.org):"
408
+ "If you want more control over the layout, you can use any of the features from [Panel](https://panel.holoviz.org). In this case, `interactive.panel()` (or `interactive.output()`) make sure you display the interactive plot only, with the widgets explicitly declared by `interactive.widgets()`:"
409
409
  ]
410
410
  },
411
411
  {
@@ -235,10 +235,10 @@
235
235
  "metadata": {},
236
236
  "outputs": [],
237
237
  "source": [
238
- "delay_min_max = flights.groupby(['day', 'carrier'])['carrier_delay'].mean().groupby('day').agg([np.min, np.max])\n",
238
+ "delay_min_max = flights.groupby(['day', 'carrier'])['carrier_delay'].mean().groupby('day').agg({'min': np.min, 'max': np.max})\n",
239
239
  "delay_mean = flights.groupby('day')['carrier_delay'].mean()\n",
240
240
  "\n",
241
- "delay_min_max.hvplot.area(x='day', y='amin', y2='amax', alpha=0.2) * delay_mean.hvplot()"
241
+ "delay_min_max.hvplot.area(x='day', y='min', y2='max', alpha=0.2) * delay_mean.hvplot()"
242
242
  ]
243
243
  },
244
244
  {
@@ -239,10 +239,10 @@
239
239
  "metadata": {},
240
240
  "outputs": [],
241
241
  "source": [
242
- "delay_min_max = flights.groupby(['day', 'carrier'])['carrier_delay'].mean().groupby('day').agg([np.min, np.max])\n",
242
+ "delay_min_max = flights.groupby(['day', 'carrier'])['carrier_delay'].mean().groupby('day').agg({'min': np.min, 'max': np.max})\n",
243
243
  "delay_mean = flights.groupby('day')['carrier_delay'].mean()\n",
244
244
  "\n",
245
- "delay_min_max.hvplot.area(x='day', y='amin', y2='amax', alpha=0.2) * delay_mean.hvplot()"
245
+ "delay_min_max.hvplot.area(x='day', y='min', y2='max', alpha=0.2) * delay_mean.hvplot()"
246
246
  ]
247
247
  },
248
248
  {
@@ -295,7 +295,7 @@
295
295
  "metadata": {},
296
296
  "outputs": [],
297
297
  "source": [
298
- "crime.hvplot.scatter(x='Violent Crime rate', y='Burglary rate')"
298
+ "crime.hvplot.scatter(x='Violent Crime rate', y='Burglary rate', c='Year')"
299
299
  ]
300
300
  },
301
301
  {
@@ -365,7 +365,7 @@
365
365
  "metadata": {},
366
366
  "outputs": [],
367
367
  "source": [
368
- "crime.hvplot.bivariate(x='Violent Crime rate', y='Burglary rate', width=600, height=500, colorbar=False)"
368
+ "crime.hvplot.bivariate(x='Violent Crime rate', y='Burglary rate', width=600, height=500)"
369
369
  ]
370
370
  },
371
371
  {
@@ -383,7 +383,7 @@
383
383
  "metadata": {},
384
384
  "outputs": [],
385
385
  "source": [
386
- "flights.compute().hvplot.heatmap(x='day', y='carrier', C='depdelay', reduce_function=np.mean, colorbar=False).opts(show_values=False)"
386
+ "flights.compute().hvplot.heatmap(x='day', y='carrier', C='depdelay', reduce_function=np.mean).opts(show_values=False)"
387
387
  ]
388
388
  },
389
389
  {
@@ -246,10 +246,10 @@
246
246
  "metadata": {},
247
247
  "outputs": [],
248
248
  "source": [
249
- "delay_min_max = flights.groupby(['day', 'carrier'])['carrier_delay'].mean().groupby('day').agg([np.min, np.max])\n",
249
+ "delay_min_max = flights.groupby(['day', 'carrier'])['carrier_delay'].mean().groupby('day').agg({'min': np.min, 'max': np.max})\n",
250
250
  "delay_mean = flights.groupby('day')['carrier_delay'].mean()\n",
251
251
  "\n",
252
- "delay_min_max.hvplot.area(x='day', y='amin', y2='amax', alpha=0.2) * delay_mean.hvplot()"
252
+ "delay_min_max.hvplot.area(x='day', y='min', y2='max', alpha=0.2) * delay_mean.hvplot()"
253
253
  ]
254
254
  },
255
255
  {
@@ -0,0 +1 @@
1
+ {"git_describe": "v0.9.1-0-g58c6ece", "version_string": "0.9.1"}
@@ -609,7 +609,7 @@ class HoloViewsConverter:
609
609
  # Default to categorical camp if we detect categorical shading
610
610
  if ((self.datashade or self.rasterize) and (self.aggregator is None or 'count_cat' in str(self.aggregator)) and
611
611
  ((self.by and not self.subplots) or
612
- (isinstance(self.y, list) or (self.y is None and len(set(self.variables) - set(self.indexes)) > 1)))):
612
+ ((isinstance(self.y, list) and len(self.y) > 1) or (self.y is None and len(set(self.variables) - set(self.indexes)) > 1)))):
613
613
  self._style_opts['cmap'] = self._default_cmaps['categorical']
614
614
  elif symmetric:
615
615
  self._style_opts['cmap'] = self._default_cmaps['diverging']
@@ -2060,7 +2060,11 @@ class HoloViewsConverter:
2060
2060
  o, h, l, c = y
2061
2061
  neg, pos = self.kwds.get('neg_color', 'red'), self.kwds.get('pos_color', 'green')
2062
2062
  color_exp = (dim(o)>dim(c)).categorize({True: neg, False: pos})
2063
- ds = Dataset(data, [x], [o, h, l, c])
2063
+ ohlc_cols = [o, h, l, c]
2064
+ if x in self.hover_cols:
2065
+ self.hover_cols.remove(x)
2066
+ vdims = list(dict.fromkeys(ohlc_cols + self.hover_cols))
2067
+ ds = Dataset(data, [x], vdims)
2064
2068
  if ds.data[x].dtype.kind in 'SUO':
2065
2069
  rects = Rectangles(ds, [x, o, x, c])
2066
2070
  else:
@@ -2078,9 +2082,9 @@ class HoloViewsConverter:
2078
2082
  tools = seg_cur_opts.pop('tools', [])
2079
2083
  if 'hover' in tools:
2080
2084
  tools[tools.index('hover')] = HoverTool(tooltips=[
2081
- (x, '@{%s}' % x), ('Open', '@{%s}' % o), ('High', '@{%s}' % h),
2082
- ('Low', '@{%s}' % l), ('Close', '@{%s}' % c)
2083
- ])
2085
+ (x, f'@{x}'), ('Open', f'@{o}'), ('High', f'@{h}'),
2086
+ ('Low', f'@{l}'), ('Close', f'@{c}')
2087
+ ] + [(hc, f'@{hc}') for hc in vdims[4:]])
2084
2088
  seg_cur_opts['tools'] = tools
2085
2089
  seg_cur_opts ['color'] = self.kwds.get('line_color', 'black')
2086
2090
  if 'xlabel' not in seg_cur_opts:
@@ -0,0 +1 @@
1
+ collect_ignore_glob = []
@@ -79,7 +79,7 @@
79
79
  "metadata": {},
80
80
  "outputs": [],
81
81
  "source": [
82
- "explorer = df.hvplot.explorer(x='bill_length_mm', y='bill_depth_mm', kind='scatter', by=['species'])\n",
82
+ "explorer = df.hvplot.explorer(x='bill_length_mm', y='bill_depth_mm', by=['species'])\n",
83
83
  "explorer"
84
84
  ]
85
85
  },
@@ -147,7 +147,7 @@
147
147
  "metadata": {},
148
148
  "outputs": [],
149
149
  "source": [
150
- "hvexplorer.param.update(kind='scatter', x='bill_length_mm', y_multi=['bill_depth_mm'], by=['species'])\n",
150
+ "hvexplorer.param.update(x='bill_length_mm', y_multi=['bill_depth_mm'], by=['species'])\n",
151
151
  "hvexplorer.labels.title = 'Penguins Scatter'"
152
152
  ]
153
153
  },
@@ -24,7 +24,7 @@
24
24
  "\n",
25
25
  " conda install geoviews\n",
26
26
  " \n",
27
- "or if the cartopy dependency has been satisfied in some other way, GeoViews may also be installed using pip:\n",
27
+ "or with pip:\n",
28
28
  "\n",
29
29
  " pip install geoviews\n",
30
30
  "\n",
@@ -265,7 +265,7 @@
265
265
  "- ``global_extent`` (default=False): Whether to expand the plot extent to span the whole globe\n",
266
266
  "- ``project`` (default=False): Whether to project the data before plotting (adds initial overhead but avoids projecting data when plot is dynamically updated)\n",
267
267
  "- ``tiles`` (default=False): Whether to overlay the plot on a tile source. Tiles sources can be selected by name, the default is 'Wikipedia'.\n",
268
- "Other options are: 'CartoDark', 'CartoEco', 'CartoLight', 'CartoMidnight', 'EsriImagery', 'EsriNatGeo', 'EsriReference''EsriTerrain', 'EsriUSATopo', 'OSM', 'StamenLabels', 'StamenTerrain', 'StamenTerrainRetina', 'StamenToner', 'StamenTonerBackground', 'StamenWatercolor'"
268
+ "Other options are: 'CartoDark', 'CartoEco', 'CartoLight', 'CartoMidnight', 'EsriImagery', 'EsriNatGeo', 'EsriReference''EsriTerrain', 'EsriUSATopo', 'OSM', 'StamenLabels', 'StamenTerrain', 'StamenTerrainRetina', 'StamenToner', 'StamenTonerBackground', 'StamenWatercolor'. Stamen tile sources require a Stadia account when not running locally; see [stadiamaps.com](https://stadiamaps.com/)."
269
269
  ]
270
270
  }
271
271
  ],
@@ -405,7 +405,7 @@
405
405
  "cell_type": "markdown",
406
406
  "metadata": {},
407
407
  "source": [
408
- "If you want more control over the layout, you can use any of the features from [Panel](https://panel.holoviz.org):"
408
+ "If you want more control over the layout, you can use any of the features from [Panel](https://panel.holoviz.org). In this case, `interactive.panel()` (or `interactive.output()`) make sure you display the interactive plot only, with the widgets explicitly declared by `interactive.widgets()`:"
409
409
  ]
410
410
  },
411
411
  {
@@ -235,10 +235,10 @@
235
235
  "metadata": {},
236
236
  "outputs": [],
237
237
  "source": [
238
- "delay_min_max = flights.groupby(['day', 'carrier'])['carrier_delay'].mean().groupby('day').agg([np.min, np.max])\n",
238
+ "delay_min_max = flights.groupby(['day', 'carrier'])['carrier_delay'].mean().groupby('day').agg({'min': np.min, 'max': np.max})\n",
239
239
  "delay_mean = flights.groupby('day')['carrier_delay'].mean()\n",
240
240
  "\n",
241
- "delay_min_max.hvplot.area(x='day', y='amin', y2='amax', alpha=0.2) * delay_mean.hvplot()"
241
+ "delay_min_max.hvplot.area(x='day', y='min', y2='max', alpha=0.2) * delay_mean.hvplot()"
242
242
  ]
243
243
  },
244
244
  {
@@ -239,10 +239,10 @@
239
239
  "metadata": {},
240
240
  "outputs": [],
241
241
  "source": [
242
- "delay_min_max = flights.groupby(['day', 'carrier'])['carrier_delay'].mean().groupby('day').agg([np.min, np.max])\n",
242
+ "delay_min_max = flights.groupby(['day', 'carrier'])['carrier_delay'].mean().groupby('day').agg({'min': np.min, 'max': np.max})\n",
243
243
  "delay_mean = flights.groupby('day')['carrier_delay'].mean()\n",
244
244
  "\n",
245
- "delay_min_max.hvplot.area(x='day', y='amin', y2='amax', alpha=0.2) * delay_mean.hvplot()"
245
+ "delay_min_max.hvplot.area(x='day', y='min', y2='max', alpha=0.2) * delay_mean.hvplot()"
246
246
  ]
247
247
  },
248
248
  {
@@ -295,7 +295,7 @@
295
295
  "metadata": {},
296
296
  "outputs": [],
297
297
  "source": [
298
- "crime.hvplot.scatter(x='Violent Crime rate', y='Burglary rate')"
298
+ "crime.hvplot.scatter(x='Violent Crime rate', y='Burglary rate', c='Year')"
299
299
  ]
300
300
  },
301
301
  {
@@ -365,7 +365,7 @@
365
365
  "metadata": {},
366
366
  "outputs": [],
367
367
  "source": [
368
- "crime.hvplot.bivariate(x='Violent Crime rate', y='Burglary rate', width=600, height=500, colorbar=False)"
368
+ "crime.hvplot.bivariate(x='Violent Crime rate', y='Burglary rate', width=600, height=500)"
369
369
  ]
370
370
  },
371
371
  {
@@ -383,7 +383,7 @@
383
383
  "metadata": {},
384
384
  "outputs": [],
385
385
  "source": [
386
- "flights.compute().hvplot.heatmap(x='day', y='carrier', C='depdelay', reduce_function=np.mean, colorbar=False).opts(show_values=False)"
386
+ "flights.compute().hvplot.heatmap(x='day', y='carrier', C='depdelay', reduce_function=np.mean).opts(show_values=False)"
387
387
  ]
388
388
  },
389
389
  {
@@ -246,10 +246,10 @@
246
246
  "metadata": {},
247
247
  "outputs": [],
248
248
  "source": [
249
- "delay_min_max = flights.groupby(['day', 'carrier'])['carrier_delay'].mean().groupby('day').agg([np.min, np.max])\n",
249
+ "delay_min_max = flights.groupby(['day', 'carrier'])['carrier_delay'].mean().groupby('day').agg({'min': np.min, 'max': np.max})\n",
250
250
  "delay_mean = flights.groupby('day')['carrier_delay'].mean()\n",
251
251
  "\n",
252
- "delay_min_max.hvplot.area(x='day', y='amin', y2='amax', alpha=0.2) * delay_mean.hvplot()"
252
+ "delay_min_max.hvplot.area(x='day', y='min', y2='max', alpha=0.2) * delay_mean.hvplot()"
253
253
  ]
254
254
  },
255
255
  {
@@ -492,7 +492,7 @@ class Interactive:
492
492
 
493
493
  Examples
494
494
  --------
495
- >>> widget = panel.wid7ugets.IntSlider(value=1, start=1, end=5)
495
+ >>> widget = panel.widgets.IntSlider(value=1, start=1, end=5)
496
496
  >>> dfi = df.interactive(width=200)
497
497
  >>> dfi.head(widget)
498
498
  """
@@ -1,5 +1,5 @@
1
1
  import holoviews as hv
2
- from ..util import with_hv_extension
2
+ from ..util import with_hv_extension, is_polars
3
3
 
4
4
  from .core import hvPlot, hvPlotTabular # noqa
5
5
 
@@ -30,6 +30,9 @@ def plot(data, kind, **kwargs):
30
30
  if v is not None:
31
31
  no_none_kwargs[k] = v
32
32
 
33
+ if is_polars(data):
34
+ from .core import hvPlotTabularPolars
35
+ return hvPlotTabularPolars(data)(kind=kind, **no_none_kwargs)
33
36
  return hvPlotTabular(data)(kind=kind, **no_none_kwargs)
34
37
 
35
38
 
@@ -1,3 +1,4 @@
1
+ import itertools
1
2
  from collections import defaultdict
2
3
 
3
4
  import param
@@ -1862,6 +1863,47 @@ class hvPlotTabular(hvPlotBase):
1862
1863
  return self(x, y, text=text, kind="labels", **kwds)
1863
1864
 
1864
1865
 
1866
+ class hvPlotTabularPolars(hvPlotTabular):
1867
+ def _get_converter(self, x=None, y=None, kind=None, **kwds):
1868
+ import polars as pl
1869
+
1870
+ params = dict(self._metadata, **kwds)
1871
+ x = x or params.pop("x", None)
1872
+ y = y or params.pop("y", None)
1873
+ kind = kind or params.pop("kind", None)
1874
+
1875
+ # Find columns which should be converted for LazyDataFrame and DataFrame
1876
+ if isinstance(self._data, (pl.LazyFrame, pl.DataFrame)):
1877
+ if params.get("hover_cols") == "all":
1878
+ columns = list(self._data.columns)
1879
+ else:
1880
+ possible_columns = [
1881
+ [v] if isinstance(v, str) else v
1882
+ for v in params.values()
1883
+ if isinstance(v, (str, list))
1884
+ ]
1885
+ columns = (
1886
+ set(self._data.columns) & set(itertools.chain(*possible_columns))
1887
+ ) or {self._data.columns[0]}
1888
+ xs = x if is_list_like(x) else (x,)
1889
+ ys = y if is_list_like(y) else (y,)
1890
+ columns |= {*xs, *ys}
1891
+ columns.discard(None)
1892
+
1893
+ if isinstance(self._data, pl.DataFrame):
1894
+ data = self._data.select(columns).to_pandas()
1895
+ elif isinstance(self._data, pl.Series):
1896
+ data = self._data.to_pandas()
1897
+ elif isinstance(self._data, pl.LazyFrame):
1898
+ data = self._data.select(columns).collect().to_pandas()
1899
+ else:
1900
+ raise ValueError(
1901
+ "Only Polars DataFrame, Series, and LazyFrame are supported"
1902
+ )
1903
+
1904
+ return HoloViewsConverter(data, x, y, kind=kind, **params)
1905
+
1906
+
1865
1907
  class hvPlot(hvPlotTabular):
1866
1908
  """
1867
1909
  The plotting method: `df.hvplot(...)` creates a plot similarly to the familiar Pandas
@@ -0,0 +1,20 @@
1
+ """Adds the `.hvplot` method to pl.DataFrame, pl.LazyFrame and pl.Series"""
2
+ from hvplot import post_patch
3
+ from hvplot.plotting.core import hvPlotTabularPolars
4
+
5
+
6
+ def patch(name="hvplot", extension="bokeh", logo=False):
7
+ try:
8
+ import polars as pl
9
+ except:
10
+ raise ImportError(
11
+ "Could not patch plotting API onto Polars. Polars could not be imported."
12
+ )
13
+ pl.api.register_dataframe_namespace(name)(hvPlotTabularPolars)
14
+ pl.api.register_series_namespace(name)(hvPlotTabularPolars)
15
+ pl.api.register_lazyframe_namespace(name)(hvPlotTabularPolars)
16
+
17
+ post_patch(extension, logo)
18
+
19
+
20
+ patch()
@@ -0,0 +1,31 @@
1
+ import pandas as pd
2
+ import hvplot.pandas # noqa
3
+
4
+
5
+ df = pd.DataFrame({
6
+ 'Open': [100.00, 101.25, 102.75],
7
+ 'High': [104.10, 105.50, 110.00],
8
+ 'Low': [94.00, 97.10, 99.20],
9
+ 'Close': [101.15, 99.70, 109.50],
10
+ 'Volume': [10012, 5000, 18000],
11
+ }, index=[pd.Timestamp('2022-08-01'), pd.Timestamp('2022-08-03'), pd.Timestamp('2022-08-04')])
12
+
13
+ ohlc_cols = ['Open', 'High', 'Low', 'Close']
14
+
15
+
16
+ def test_ohlc_hover_cols():
17
+ plot = df.hvplot.ohlc(y=ohlc_cols, hover_cols=['Volume'])
18
+ segments = plot.Segments.I
19
+ assert 'Volume' in segments
20
+ tooltips = segments.opts.get('plot').kwargs['tools'][0].tooltips
21
+ assert len(tooltips) == len(df.columns) + 1
22
+ assert tooltips[-1] == ('Volume', '@Volume')
23
+
24
+
25
+ def test_ohlc_hover_cols_all():
26
+ plot = df.hvplot.ohlc(y=ohlc_cols, hover_cols='all')
27
+ segments = plot.Segments.I
28
+ assert 'Volume' in segments
29
+ tooltips = segments.opts.get('plot').kwargs['tools'][0].tooltips
30
+ assert len(tooltips) == len(df.columns) + 1
31
+ assert tooltips[-1] == ('Volume', '@Volume')