hvplot 0.8.3rc2__tar.gz → 0.8.4__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 (178) hide show
  1. {hvplot-0.8.3rc2/hvplot.egg-info → hvplot-0.8.4}/PKG-INFO +1 -1
  2. hvplot-0.8.4/hvplot/.version +1 -0
  3. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/converter.py +26 -8
  4. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/interactive.py +49 -1
  5. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/plotting/core.py +1 -1
  6. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/tests/testgeo.py +29 -8
  7. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/tests/testinteractive.py +28 -1
  8. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/util.py +14 -2
  9. {hvplot-0.8.3rc2 → hvplot-0.8.4/hvplot.egg-info}/PKG-INFO +1 -1
  10. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot.egg-info/requires.txt +5 -8
  11. {hvplot-0.8.3rc2 → hvplot-0.8.4}/setup.py +2 -5
  12. hvplot-0.8.3rc2/hvplot/.version +0 -1
  13. {hvplot-0.8.3rc2 → hvplot-0.8.4}/LICENSE +0 -0
  14. {hvplot-0.8.3rc2 → hvplot-0.8.4}/MANIFEST.in +0 -0
  15. {hvplot-0.8.3rc2 → hvplot-0.8.4}/README.md +0 -0
  16. {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/assets/console.png +0 -0
  17. {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/assets/console_server.gif +0 -0
  18. {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/assets/diagram.png +0 -0
  19. {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/assets/diagram.svg +0 -0
  20. {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/assets/hvplot-wm.png +0 -0
  21. {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/assets/streamz_demo.gif +0 -0
  22. {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/data/crime.csv +0 -0
  23. {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/datasets.yaml +0 -0
  24. {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/getting_started/explorer.ipynb +0 -0
  25. {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/getting_started/hvplot.ipynb +0 -0
  26. {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/getting_started/interactive.ipynb +0 -0
  27. {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/reference/geopandas/points.ipynb +0 -0
  28. {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/reference/geopandas/polygons.ipynb +0 -0
  29. {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/reference/pandas/andrewscurves.ipynb +0 -0
  30. {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/reference/pandas/area.ipynb +0 -0
  31. {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/reference/pandas/bar.ipynb +0 -0
  32. {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/reference/pandas/barh.ipynb +0 -0
  33. {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/reference/pandas/bivariate.ipynb +0 -0
  34. {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/reference/pandas/box.ipynb +0 -0
  35. {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/reference/pandas/errorbars.ipynb +0 -0
  36. {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/reference/pandas/heatmap.ipynb +0 -0
  37. {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/reference/pandas/hexbin.ipynb +0 -0
  38. {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/reference/pandas/hist.ipynb +0 -0
  39. {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/reference/pandas/kde.ipynb +0 -0
  40. {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/reference/pandas/labels.ipynb +0 -0
  41. {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/reference/pandas/lagplot.ipynb +0 -0
  42. {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/reference/pandas/line.ipynb +0 -0
  43. {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/reference/pandas/ohlc.ipynb +0 -0
  44. {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/reference/pandas/parallelcoordinates.ipynb +0 -0
  45. {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/reference/pandas/scatter.ipynb +0 -0
  46. {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/reference/pandas/scattermatrix.ipynb +0 -0
  47. {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/reference/pandas/step.ipynb +0 -0
  48. {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/reference/pandas/table.ipynb +0 -0
  49. {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/reference/pandas/violin.ipynb +0 -0
  50. {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/reference/xarray/contour.ipynb +0 -0
  51. {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/reference/xarray/contourf.ipynb +0 -0
  52. {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/reference/xarray/image.ipynb +0 -0
  53. {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/reference/xarray/quadmesh.ipynb +0 -0
  54. {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/reference/xarray/rgb.ipynb +0 -0
  55. {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/reference/xarray/vectorfield.ipynb +0 -0
  56. {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/user_guide/Customization.ipynb +0 -0
  57. {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/user_guide/Explorer.ipynb +0 -0
  58. {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/user_guide/Geographic_Data.ipynb +0 -0
  59. {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/user_guide/Gridded_Data.ipynb +0 -0
  60. {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/user_guide/Interactive.ipynb +0 -0
  61. {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/user_guide/Introduction.ipynb +0 -0
  62. {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/user_guide/NetworkX.ipynb +0 -0
  63. {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/user_guide/Pandas_API.ipynb +0 -0
  64. {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/user_guide/Plotting.ipynb +0 -0
  65. {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/user_guide/Plotting_Extensions.ipynb +0 -0
  66. {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/user_guide/Plotting_with_Matplotlib.ipynb +0 -0
  67. {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/user_guide/Plotting_with_Plotly.ipynb +0 -0
  68. {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/user_guide/Statistical_Plots.ipynb +0 -0
  69. {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/user_guide/Streaming.ipynb +0 -0
  70. {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/user_guide/Subplots.ipynb +0 -0
  71. {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/user_guide/Timeseries_Data.ipynb +0 -0
  72. {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/user_guide/Viewing.ipynb +0 -0
  73. {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/user_guide/Widgets.ipynb +0 -0
  74. {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/user_guide/images/simple.svg +0 -0
  75. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/__init__.py +0 -0
  76. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/backend_transforms.py +0 -0
  77. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/cudf.py +0 -0
  78. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/dask.py +0 -0
  79. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/assets/console.png +0 -0
  80. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/assets/console_server.gif +0 -0
  81. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/assets/diagram.png +0 -0
  82. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/assets/diagram.svg +0 -0
  83. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/assets/hvplot-wm.png +0 -0
  84. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/assets/streamz_demo.gif +0 -0
  85. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/data/crime.csv +0 -0
  86. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/datasets.yaml +0 -0
  87. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/getting_started/explorer.ipynb +0 -0
  88. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/getting_started/hvplot.ipynb +0 -0
  89. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/getting_started/interactive.ipynb +0 -0
  90. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/reference/geopandas/points.ipynb +0 -0
  91. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/reference/geopandas/polygons.ipynb +0 -0
  92. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/reference/pandas/andrewscurves.ipynb +0 -0
  93. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/reference/pandas/area.ipynb +0 -0
  94. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/reference/pandas/bar.ipynb +0 -0
  95. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/reference/pandas/barh.ipynb +0 -0
  96. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/reference/pandas/bivariate.ipynb +0 -0
  97. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/reference/pandas/box.ipynb +0 -0
  98. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/reference/pandas/errorbars.ipynb +0 -0
  99. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/reference/pandas/heatmap.ipynb +0 -0
  100. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/reference/pandas/hexbin.ipynb +0 -0
  101. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/reference/pandas/hist.ipynb +0 -0
  102. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/reference/pandas/kde.ipynb +0 -0
  103. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/reference/pandas/labels.ipynb +0 -0
  104. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/reference/pandas/lagplot.ipynb +0 -0
  105. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/reference/pandas/line.ipynb +0 -0
  106. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/reference/pandas/ohlc.ipynb +0 -0
  107. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/reference/pandas/parallelcoordinates.ipynb +0 -0
  108. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/reference/pandas/scatter.ipynb +0 -0
  109. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/reference/pandas/scattermatrix.ipynb +0 -0
  110. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/reference/pandas/step.ipynb +0 -0
  111. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/reference/pandas/table.ipynb +0 -0
  112. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/reference/pandas/violin.ipynb +0 -0
  113. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/reference/xarray/contour.ipynb +0 -0
  114. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/reference/xarray/contourf.ipynb +0 -0
  115. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/reference/xarray/image.ipynb +0 -0
  116. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/reference/xarray/quadmesh.ipynb +0 -0
  117. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/reference/xarray/rgb.ipynb +0 -0
  118. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/reference/xarray/vectorfield.ipynb +0 -0
  119. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/user_guide/Customization.ipynb +0 -0
  120. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/user_guide/Explorer.ipynb +0 -0
  121. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/user_guide/Geographic_Data.ipynb +0 -0
  122. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/user_guide/Gridded_Data.ipynb +0 -0
  123. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/user_guide/Interactive.ipynb +0 -0
  124. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/user_guide/Introduction.ipynb +0 -0
  125. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/user_guide/NetworkX.ipynb +0 -0
  126. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/user_guide/Pandas_API.ipynb +0 -0
  127. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/user_guide/Plotting.ipynb +0 -0
  128. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/user_guide/Plotting_Extensions.ipynb +0 -0
  129. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/user_guide/Plotting_with_Matplotlib.ipynb +0 -0
  130. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/user_guide/Plotting_with_Plotly.ipynb +0 -0
  131. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/user_guide/Statistical_Plots.ipynb +0 -0
  132. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/user_guide/Streaming.ipynb +0 -0
  133. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/user_guide/Subplots.ipynb +0 -0
  134. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/user_guide/Timeseries_Data.ipynb +0 -0
  135. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/user_guide/Viewing.ipynb +0 -0
  136. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/user_guide/Widgets.ipynb +0 -0
  137. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/user_guide/images/simple.svg +0 -0
  138. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/ibis.py +0 -0
  139. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/intake.py +0 -0
  140. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/networkx.py +0 -0
  141. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/pandas.py +0 -0
  142. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/plotting/__init__.py +0 -0
  143. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/plotting/andrews_curves.py +0 -0
  144. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/plotting/lag_plot.py +0 -0
  145. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/plotting/parallel_coordinates.py +0 -0
  146. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/plotting/scatter_matrix.py +0 -0
  147. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/sample_data.py +0 -0
  148. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/streamz.py +0 -0
  149. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/tests/__init__.py +0 -0
  150. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/tests/plotting/__init__.py +0 -0
  151. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/tests/plotting/testcore.py +0 -0
  152. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/tests/plotting/testscattermatrix.py +0 -0
  153. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/tests/test_links.py +0 -0
  154. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/tests/testbackend_transforms.py +0 -0
  155. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/tests/testcharts.py +0 -0
  156. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/tests/testgridplots.py +0 -0
  157. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/tests/testhelp.py +0 -0
  158. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/tests/testibis.py +0 -0
  159. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/tests/testnetworkx.py +0 -0
  160. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/tests/testoperations.py +0 -0
  161. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/tests/testoptions.py +0 -0
  162. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/tests/testoverrides.py +0 -0
  163. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/tests/testpanel.py +0 -0
  164. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/tests/testpatch.py +0 -0
  165. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/tests/testplotting.py +0 -0
  166. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/tests/teststreaming.py +0 -0
  167. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/tests/testtransforms.py +0 -0
  168. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/tests/testui.py +0 -0
  169. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/tests/testutil.py +0 -0
  170. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/ui.py +0 -0
  171. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/utilities.py +0 -0
  172. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/xarray.py +0 -0
  173. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot.egg-info/SOURCES.txt +0 -0
  174. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot.egg-info/dependency_links.txt +0 -0
  175. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot.egg-info/entry_points.txt +0 -0
  176. {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot.egg-info/top_level.txt +0 -0
  177. {hvplot-0.8.3rc2 → hvplot-0.8.4}/pyproject.toml +0 -0
  178. {hvplot-0.8.3rc2 → hvplot-0.8.4}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: hvplot
3
- Version: 0.8.3rc2
3
+ Version: 0.8.4
4
4
  Summary: A high-level plotting API for the PyData ecosystem built on HoloViews.
5
5
  Home-page: https://hvplot.pyviz.org
6
6
  Author: Philipp Rudiger
@@ -0,0 +1 @@
1
+ {"git_describe": "v0.8.4-0-gd336e11", "version_string": "0.8.4"}
@@ -230,6 +230,9 @@ class HoloViewsConverter:
230
230
  Whether to project the data before plotting (adds initial
231
231
  overhead but avoids projecting data when plot is dynamically
232
232
  updated).
233
+ projection (default=None): str or Cartopy CRS
234
+ Coordinate reference system of the plot specified as Cartopy
235
+ CRS object or class name.
233
236
  tiles (default=False):
234
237
  Whether to overlay the plot on a tile source. Tiles sources
235
238
  can be selected by name or a tiles object or class can be passed,
@@ -255,7 +258,8 @@ class HoloViewsConverter:
255
258
  ]
256
259
 
257
260
  _geo_options = [
258
- 'geo', 'crs', 'features', 'project', 'coastline', 'tiles'
261
+ 'geo', 'crs', 'features', 'project', 'coastline', 'tiles',
262
+ 'projection', 'global_extents'
259
263
  ]
260
264
 
261
265
  _axis_options = [
@@ -393,7 +397,7 @@ class HoloViewsConverter:
393
397
  )
394
398
 
395
399
  self.dynamic = dynamic
396
- self.geo = any([geo, crs, global_extent, projection, project, coastline, features])
400
+ self.geo = any([geo, crs, global_extent, projection, project, coastline, features, tiles])
397
401
  self.crs = self._process_crs(data, crs) if self.geo else None
398
402
  self.project = project
399
403
  self.coastline = coastline
@@ -412,7 +416,7 @@ class HoloViewsConverter:
412
416
  'install -c pyviz geoviews')
413
417
  if self.geo:
414
418
  if self.kind not in self._geo_types:
415
- param.main.warning(
419
+ param.main.param.warning(
416
420
  "geo option cannot be used with kind=%r plot "
417
421
  "type. Geographic plots are only supported for "
418
422
  "following plot types: %r" % (self.kind, self._geo_types))
@@ -434,13 +438,20 @@ class HoloViewsConverter:
434
438
  "Projection must be defined as cartopy CRS or "
435
439
  "one of the following CRS string:\n {}".format(all_crs))
436
440
 
437
- proj_crs = projection or ccrs.GOOGLE_MERCATOR
438
- if self.crs != proj_crs:
441
+ projection = projection or (ccrs.GOOGLE_MERCATOR if tiles else self.crs)
442
+ if tiles and projection != ccrs.GOOGLE_MERCATOR:
443
+ raise ValueError(
444
+ "Tiles can only be used with output projection of "
445
+ "`cartopy.crs.GOOGLE_MERCATOR`. To get rid of this error "
446
+ "remove `projection=` or `tiles=`"
447
+ )
448
+
449
+ if self.crs != projection:
439
450
  px0, py0, px1, py1 = ccrs.GOOGLE_MERCATOR.boundary.bounds
440
451
  x0, x1 = xlim or (px0, px1)
441
452
  y0, y1 = ylim or (py0, py1)
442
453
  extents = (x0, y0, x1, y1)
443
- x0, y0, x1, y1 = project_extents(extents, self.crs, proj_crs)
454
+ x0, y0, x1, y1 = project_extents(extents, self.crs, projection)
444
455
  if xlim:
445
456
  xlim = (x0, x1)
446
457
  if ylim:
@@ -606,7 +617,7 @@ class HoloViewsConverter:
606
617
  if debug:
607
618
  kwds = dict(x=self.x, y=self.y, by=self.by, kind=self.kind,
608
619
  groupby=self.groupby, grid=self.grid)
609
- param.main.warning('Plotting {kind} plot with parameters x: {x}, '
620
+ param.main.param.warning('Plotting {kind} plot with parameters x: {x}, '
610
621
  'y: {y}, by: {by}, groupby: {groupby}, row/col: {grid}'.format(**kwds))
611
622
 
612
623
  def _process_symmetric(self, symmetric, clim, check_symmetric_max):
@@ -706,6 +717,10 @@ class HoloViewsConverter:
706
717
  kind = 'polygons'
707
718
  elif geom_type in ('LineString', 'LineRing', 'Line'):
708
719
  kind = 'paths'
720
+ # if only one arg is provided, treat it like color
721
+ if x is not None and y is None:
722
+ kwds['color'] = kwds.pop('color', kwds.pop('c', x))
723
+ x = None
709
724
  elif isinstance(data, pd.DataFrame):
710
725
  datatype = 'pandas'
711
726
  self.data = data
@@ -2232,9 +2247,12 @@ class HoloViewsConverter:
2232
2247
  for opts_ in [cur_opts, compat_opts]:
2233
2248
  if 'color' in opts_ and opts_['color'] in vdims:
2234
2249
  opts_['color'] = hv.dim(opts_['color'])
2250
+ # if there is nothing to put in hover, turn it off
2251
+ if 'tools' in opts_ and kind in ["polygons", "paths"] and not vdims:
2252
+ opts_["tools"] = [t for t in opts_["tools"] if t != "hover"]
2235
2253
  if self.geo: params['crs'] = self.crs
2236
2254
  if self.by:
2237
- obj = Dataset(data).to(element, kdims, vdims, self.by, **params)
2255
+ obj = Dataset(data, self.by+kdims, vdims).to(element, kdims, vdims, self.by, **params)
2238
2256
  if self.subplots:
2239
2257
  obj = obj.layout(sort=False)
2240
2258
  else:
@@ -112,7 +112,7 @@ from panel.widgets.base import Widget
112
112
 
113
113
  from .converter import HoloViewsConverter
114
114
  from .util import (
115
- _flatten, is_tabular, is_xarray, is_xarray_dataarray,
115
+ _flatten, bokeh3, is_tabular, is_xarray, is_xarray_dataarray,
116
116
  _convert_col_names_to_str,
117
117
  )
118
118
 
@@ -709,6 +709,11 @@ class Interactive:
709
709
  to the center and widget location specified in the
710
710
  interactive call.
711
711
  """
712
+ if bokeh3:
713
+ return self._layout_bk3(**kwargs)
714
+ return self._layout_bk2(**kwargs)
715
+
716
+ def _layout_bk2(self, **kwargs):
712
717
  widget_box = self.widgets()
713
718
  panel = self.output()
714
719
  loc = self._loc
@@ -751,6 +756,49 @@ class Interactive:
751
756
  components = [Column(panel, widgets)]
752
757
  return Row(*components, **kwargs)
753
758
 
759
+ def _layout_bk3(self, **kwargs):
760
+ widget_box = self.widgets()
761
+ panel = self.output()
762
+ loc = self._loc
763
+ center = self._center
764
+ alignments = {
765
+ 'left': (Row, ('start', 'center'), True),
766
+ 'right': (Row, ('end', 'center'), False),
767
+ 'top': (Column, ('center', 'start'), True),
768
+ 'bottom': (Column, ('center', 'end'), False),
769
+ 'top_left': (Column, 'start', True),
770
+ 'top_right': (Column, ('end', 'start'), True),
771
+ 'bottom_left': (Column, ('start', 'end'), False),
772
+ 'bottom_right': (Column, 'end', False),
773
+ 'left_top': (Row, 'start', True),
774
+ 'left_bottom': (Row, ('start', 'end'), True),
775
+ 'right_top': (Row, ('end', 'start'), False),
776
+ 'right_bottom': (Row, 'end', False)
777
+ }
778
+ layout, align, widget_first = alignments[loc]
779
+ widget_box.align = align
780
+ if not len(widget_box):
781
+ if center:
782
+ components = [HSpacer(), panel, HSpacer()]
783
+ else:
784
+ components = [panel]
785
+ return Row(*components, **kwargs)
786
+
787
+ items = (widget_box, panel) if widget_first else (panel, widget_box)
788
+ sizing_mode = kwargs.get('sizing_mode')
789
+ if not center:
790
+ if layout is Row:
791
+ components = list(items)
792
+ else:
793
+ components = [layout(*items, sizing_mode=sizing_mode)]
794
+ elif layout is Column:
795
+ components = [HSpacer(), layout(*items, sizing_mode=sizing_mode), HSpacer()]
796
+ elif loc.startswith('left'):
797
+ components = [widget_box, HSpacer(), panel, HSpacer()]
798
+ else:
799
+ components = [HSpacer(), panel, HSpacer(), widget_box]
800
+ return Row(*components, **kwargs)
801
+
754
802
  def holoviews(self):
755
803
  """
756
804
  Returns a HoloViews object to render the output of this
@@ -113,7 +113,7 @@ class hvPlotBase:
113
113
  if name in plots:
114
114
  plot_opts = plots[name]
115
115
  if "kind" in plot_opts and name in HoloViewsConverter._kind_mapping:
116
- param.main.warning(
116
+ param.main.param.warning(
117
117
  "Custom options for existing plot types should not "
118
118
  "declare the 'kind' argument. The .%s plot method "
119
119
  "was unexpectedly customized with kind=%r." % (plot_opts["kind"], name)
@@ -7,7 +7,6 @@ from packaging.version import Version
7
7
  import numpy as np
8
8
  import pandas as pd
9
9
  import holoviews as hv
10
- import pytest
11
10
 
12
11
  from hvplot.util import proj_to_cartopy
13
12
 
@@ -107,6 +106,11 @@ class TestProjections(TestGeo):
107
106
  with self.assertRaisesRegex(ValueError, "Projection must be defined"):
108
107
  self.da.hvplot.image('x', 'y', projection='foo')
109
108
 
109
+ def test_plot_with_projection_raises_an_error_when_tiles_set(self):
110
+ da = self.da.copy()
111
+ with self.assertRaisesRegex(ValueError, "Tiles can only be used with output projection"):
112
+ da.hvplot.image('x', 'y', crs=self.crs, projection='Robinson', tiles=True)
113
+
110
114
 
111
115
  class TestGeoAnnotation(TestCase):
112
116
 
@@ -261,6 +265,13 @@ class TestGeoPandas(TestCase):
261
265
  assert points.kdims == ['x', 'y']
262
266
  assert points.vdims == ['index']
263
267
 
268
+ def test_points_hover_cols_positional_arg_sets_color(self):
269
+ points = self.cities.hvplot('name')
270
+ assert points.kdims == ['x', 'y']
271
+ assert points.vdims == ['name']
272
+ opts = hv.Store.lookup_options('bokeh', points, 'style').kwargs
273
+ assert opts['color'] == 'name'
274
+
264
275
  def test_points_hover_cols_with_c_set_to_name(self):
265
276
  points = self.cities.hvplot(c='name')
266
277
  assert points.kdims == ['x', 'y']
@@ -268,16 +279,26 @@ class TestGeoPandas(TestCase):
268
279
  opts = hv.Store.lookup_options('bokeh', points, 'style').kwargs
269
280
  assert opts['color'] == 'name'
270
281
 
271
- @pytest.mark.xfail
272
282
  def test_points_hover_cols_with_by_set_to_name(self):
273
283
  points = self.cities.hvplot(by='name')
274
- assert points.kdims == ['x', 'y']
275
- assert points.vdims == ['name']
284
+ assert isinstance(points, hv.core.overlay.NdOverlay)
285
+ assert points.kdims == ['name']
286
+ assert points.vdims == []
287
+ for element in points.values():
288
+ assert element.kdims == ['x', 'y']
289
+ assert element.vdims == []
290
+
291
+ def test_points_project_xlim_and_ylim(self):
292
+ points = self.cities.hvplot(geo=True, xlim=(-10, 10), ylim=(-20, -10))
293
+ opts = hv.Store.lookup_options('bokeh', points, 'plot').options
294
+ assert opts['xlim'] == (-10, 10)
295
+ assert opts['ylim'] == (-20, -10)
276
296
 
277
- @pytest.mark.xfail(
278
- reason='Waiting for upstream fix https://github.com/holoviz/holoviews/pull/5325',
279
- raises=KeyError,
280
- )
281
297
  def test_polygons_by_subplots(self):
282
298
  polygons = self.polygons.hvplot(geo=True, by="name", subplots=True)
283
299
  assert isinstance(polygons, hv.core.layout.NdLayout)
300
+
301
+ def test_polygons_turns_off_hover_when_there_are_no_fields_to_include(self):
302
+ polygons = self.polygons.hvplot(geo=True)
303
+ opts = hv.Store.lookup_options('bokeh', polygons, 'plot').kwargs
304
+ assert 'hover' not in opts.get('tools')
@@ -14,6 +14,10 @@ from holoviews.util.transform import dim
14
14
  from hvplot import bind
15
15
  from hvplot.interactive import Interactive
16
16
  from hvplot.xarray import XArrayInteractive
17
+ from hvplot.util import bokeh3
18
+
19
+ is_bokeh2 = pytest.mark.skipif(bokeh3, reason="requires bokeh 2.x")
20
+ is_bokeh3 = pytest.mark.skipif(not bokeh3, reason="requires bokeh 3.x")
17
21
 
18
22
 
19
23
  @pytest.fixture(scope='module')
@@ -665,7 +669,7 @@ def test_interactive_pandas_frame_bind_out_widgets(df):
665
669
 
666
670
 
667
671
  def test_interactive_pandas_frame_bind_operator_out_widgets(df):
668
- select = pn.widgets.Select(default='A', options=list(df.columns))
672
+ select = pn.widgets.Select(value='A', options=list(df.columns))
669
673
 
670
674
  def sel_col(col):
671
675
  return df[col]
@@ -1247,6 +1251,7 @@ def test_interactive_pandas_layout_default_no_widgets_kwargs(df):
1247
1251
  assert layout.width == 200
1248
1252
 
1249
1253
 
1254
+ @is_bokeh2
1250
1255
  def test_interactive_pandas_layout_default_with_widgets(df):
1251
1256
  w = pn.widgets.IntSlider(value=2, start=1, end=5)
1252
1257
  dfi = Interactive(df)
@@ -1270,6 +1275,27 @@ def test_interactive_pandas_layout_default_with_widgets(df):
1270
1275
  assert isinstance(layout[0][0][1], pn.layout.HSpacer)
1271
1276
 
1272
1277
 
1278
+ @is_bokeh3
1279
+ def test_interactive_pandas_layout_default_with_widgets_bk3(df):
1280
+ w = pn.widgets.IntSlider(value=2, start=1, end=5)
1281
+ dfi = Interactive(df)
1282
+ dfi = dfi.head(w)
1283
+
1284
+ assert dfi._center is False
1285
+ assert dfi._loc == 'top_left'
1286
+
1287
+ layout = dfi.layout()
1288
+
1289
+ assert isinstance(layout, pn.Row)
1290
+ assert len(layout) == 1
1291
+ assert isinstance(layout[0], pn.Column)
1292
+ assert len(layout[0]) == 2
1293
+ assert isinstance(layout[0][0], pn.Column)
1294
+ assert isinstance(layout[0][1], pn.pane.PaneBase)
1295
+ assert len(layout[0][0]) == 1
1296
+ assert isinstance(layout[0][0][0], pn.widgets.IntSlider)
1297
+
1298
+ @is_bokeh2
1273
1299
  def test_interactive_pandas_layout_center_with_widgets(df):
1274
1300
  w = pn.widgets.IntSlider(value=2, start=1, end=5)
1275
1301
  dfi = df.interactive(center=True)
@@ -1298,6 +1324,7 @@ def test_interactive_pandas_layout_center_with_widgets(df):
1298
1324
  assert isinstance(layout[1][1][2], pn.layout.HSpacer)
1299
1325
 
1300
1326
 
1327
+ @is_bokeh2
1301
1328
  def test_interactive_pandas_layout_loc_with_widgets(df):
1302
1329
  w = pn.widgets.IntSlider(value=2, start=1, end=5)
1303
1330
  dfi = df.interactive(loc='top_right')
@@ -10,6 +10,7 @@ from functools import wraps
10
10
  from packaging.version import Version
11
11
  from types import FunctionType
12
12
 
13
+ import bokeh
13
14
  import numpy as np
14
15
  import pandas as pd
15
16
  import param
@@ -21,6 +22,8 @@ except:
21
22
  panel_available = False
22
23
 
23
24
  hv_version = Version(hv.__version__)
25
+ bokeh_version = Version(bokeh.__version__)
26
+ bokeh3 = bokeh_version >= Version("3.0")
24
27
 
25
28
 
26
29
  def with_hv_extension(func, extension='bokeh', logo=False):
@@ -228,12 +231,21 @@ def process_crs(crs):
228
231
  3. cartopy.crs.CRS instance
229
232
  4. None defaults to crs.PlateCaree
230
233
  """
234
+ missing = []
231
235
  try:
232
236
  import cartopy.crs as ccrs
237
+ except ImportError:
238
+ missing.append('cartopy')
239
+ try:
233
240
  import geoviews as gv # noqa
241
+ except ImportError:
242
+ missing.append('geoviews')
243
+ try:
234
244
  import pyproj
235
245
  except ImportError:
236
- raise ImportError('Geographic projection support requires geoviews, pyproj and cartopy.')
246
+ missing.append('pyproj')
247
+ if missing:
248
+ raise ImportError(f'Geographic projection support requires: {", ".join(missing)}.')
237
249
 
238
250
  if crs is None:
239
251
  return ccrs.PlateCarree()
@@ -320,7 +332,7 @@ def is_dask(data):
320
332
  return isinstance(data, (dd.DataFrame, dd.Series))
321
333
 
322
334
  def is_intake(data):
323
- if not check_library(data, 'intake'):
335
+ if "intake" not in sys.modules:
324
336
  return False
325
337
  from intake.source.base import DataSource
326
338
  return isinstance(data, DataSource)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: hvplot
3
- Version: 0.8.3rc2
3
+ Version: 0.8.4
4
4
  Summary: A high-level plotting API for the PyData ecosystem built on HoloViews.
5
5
  Home-page: https://hvplot.pyviz.org
6
6
  Author: Philipp Rudiger
@@ -22,7 +22,7 @@ intake-xarray>=0.5.0
22
22
  ipykernel<6.18.0
23
23
  ipywidgets
24
24
  matplotlib
25
- nbsite>=0.7.2rc2
25
+ nbsite>=0.8.0rc33
26
26
  nbval
27
27
  networkx>=2.6.3
28
28
  notebook>=5.4
@@ -36,7 +36,6 @@ pooch
36
36
  pooch>=1.6.0
37
37
  pre-commit
38
38
  pyct>=0.4.4
39
- pydata-sphinx-theme<0.10
40
39
  pyepsg
41
40
  pygraphviz
42
41
  pyproj
@@ -53,8 +52,6 @@ scipy>=1.5.3
53
52
  selenium>=3.141.0
54
53
  setuptools>=30.3.0
55
54
  spatialpandas>=0.4.3
56
- sphinx-copybutton
57
- sphinx-design
58
55
  streamz>=0.3.0
59
56
  xarray
60
57
  xarray>=0.18.2
@@ -93,13 +90,11 @@ plotly
93
90
  pygraphviz
94
91
  ipykernel<6.18.0
95
92
  numpy<1.24
93
+ ipywidgets
96
94
  numba>=0.51.0
97
95
  datashader>=0.6.5
98
96
  spatialpandas>=0.4.3
99
- nbsite>=0.7.2rc2
100
- pydata-sphinx-theme<0.10
101
- sphinx-copybutton
102
- sphinx-design
97
+ nbsite>=0.8.0rc33
103
98
 
104
99
  [examples]
105
100
  geoviews>=1.9.0
@@ -130,6 +125,7 @@ plotly
130
125
  pygraphviz
131
126
  ipykernel<6.18.0
132
127
  numpy<1.24
128
+ ipywidgets
133
129
  numba>=0.51.0
134
130
  datashader>=0.6.5
135
131
  spatialpandas>=0.4.3
@@ -163,6 +159,7 @@ plotly
163
159
  pygraphviz
164
160
  ipykernel<6.18.0
165
161
  numpy<1.24
162
+ ipywidgets
166
163
  numba>=0.51.0
167
164
  datashader>=0.6.5
168
165
  spatialpandas>=0.4.3
@@ -60,7 +60,6 @@ extras_require['tests'] = [
60
60
  'pooch',
61
61
  'scipy',
62
62
  'ipywidgets',
63
-
64
63
  ]
65
64
 
66
65
  # Dependencies required to run the notebooks
@@ -94,6 +93,7 @@ extras_require['examples'] = [
94
93
  'pygraphviz',
95
94
  'ipykernel <6.18.0', # temporary
96
95
  'numpy < 1.24', # temporary, for a numba error
96
+ 'ipywidgets',
97
97
  ]
98
98
 
99
99
  # Packages not working on python 3.11 because of numba
@@ -109,10 +109,7 @@ extras_require["examples_tests"] = extras_require["examples"] + extras_require['
109
109
 
110
110
  # Additional packages required to build the docs
111
111
  extras_require['doc'] = extras_require['examples'] + [
112
- 'nbsite >=0.7.2rc2',
113
- 'pydata-sphinx-theme <0.10',
114
- 'sphinx-copybutton',
115
- 'sphinx-design',
112
+ 'nbsite >=0.8.0rc33',
116
113
  ]
117
114
 
118
115
  # until pyproject.toml/equivalent is widely supported (setup_requires
@@ -1 +0,0 @@
1
- {"git_describe": "v0.8.3rc2-0-g7796bc3", "version_string": "0.8.3rc2"}
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes