Skip to content

Releases: holoviz/holoviews

Version 1.20.0

04 Nov 15:56
366d932
Compare
Choose a tag to compare

This release focuses on performance improvement, enhancing streaming support, and refining popup functionality, along with several bug fixes.
Many thanks to the new contributors @grapesmoker, @arafune, and @LecrisUT, as well as the returning contributors @ahuang11, @droumis, @jbednar, @maximlt, @philippjfr, and @hoxbro.

Enhancements

  • De-parameterize the options Keywords objects (#6314)
  • Freeze models while updating plot(s) (#6315)
  • Support hit-tested group-wise wheel zoom renderers for subcoordinate_y (#6277)
  • Adds Bokeh 3.5 enhancements to RangeToolLink (#6341)
  • Add MultiAxisTap stream (#6374)
  • Add sublabel_index and sublabel_skip option for matplotlib backend (#6375)
  • Handle datetimes and empty selections better for inspect operations (#6377)
  • Improve following behavior when streaming (#6318)
  • Enh: Add Scalebar support for subcoordinate_y plots (#6403, #6420)
  • Support async callbacks for popup (#6390)
  • Add popup position and anchor (#6414)

Bug fixes

  • Wrap popup in set_curdoc (#6337)
  • Fixes popup being invisible forever after closing once (#6347)
  • Disable simple id in notebook (#6367)
  • Ensure pixel_ratio is applied when computing resampling coordinates (#6373)
  • Add support for rendering HLine, VLine and Span on multi_y (#6376)
  • Drop the z dimension from ImageStack DataArray before shading (#6378)
  • Improve datetime support for continuous hv.Bars (#6365)
  • Don't clone Span in HoverTool (#6387)
  • Ensure proper cleanup of stream subscribers (#6389)
  • Handle datetime selection in the cuDF interface (#6407)
  • Fix popup positioning on polygons (#6411)
  • Fix a problem where linked selections were resulting in repeated columns (#6336)
  • Ensure streams are correctly mapped to plots (#6415)
  • Fix Bars width for small discrete differences on the x-axis (#6428)
  • Documentation fixes (#6392, #6421)
  • Fix rasterizing a Path where categorical values include empty strings (#6429)

Compatibility

  • Handle DeprecationWarning from Pandas (#6346, #6391)
  • Compatibility with Ibis 9.5 (#6371), Python 3.13 (#6383), cuDF 24.10 (#6409), and Matplotlib 3.10 (#6431)

Version 1.19.1

05 Jul 07:22
96317ad
Compare
Choose a tag to compare

This micro release includes a number of bug fixes and enhancements, as well as compatibility updates.
Thanks to @maximlt and @hoxbro for their contributions.

Enhancements

  • Add color to bars for Plotly backend (#6294)

Bug fixes

  • Ensure no auto index is created when a kdim is part of a multi index (#6299)
  • Fix hv.Bars with only one value in it (#6301)
  • Set zIndex of Popup to 1000 (#6297)
  • Handle boolean input in categorically grouped Bars plots (#6304)
  • Also check for pd.NA in is_nan (#6290)

Compatibility

  • Compatibility with Bokeh 3.5 (#6267)
  • Compatibility with Matplotlib 3.9 (#6307)
  • pandas: Fix observed FutureWarning for categorial groupby (#6306)
  • Lazy load dask.dataframe in operations.datashader (#6309)

Maintenance

  • Update pre-commit and conda-build script (#6287)
  • Update hatchling options to match other packages (#6291)
  • Update hv.show_versions with more relevant packages (#6293)

Version 1.19.0

13 Jun 14:51
280da97
Compare
Choose a tag to compare

This release introduces a number of major new features and enhancements, including the ability to add popups to your Bokeh figures, which allows you to drill down into subsets of your data easily.
Additionally, this release retains and uses pandas (multi-)indexes without unnecessary copies, providing significant benefits for working with wide data.
A major focus of this release has also been to improve the time it takes to plot large datasets, both by updating the data pipeline and reducing the amount of data send to the browser.
Furthermore, we have improved the developer experience, making it easier to contribute to HoloViews, see the developer guide.
Lastly bugs have been squashed and enhancements made to the existing features.

Thank you to @mirage007 and @WesleyTheGeolien for their first contributions and to the returning contributors @douglas-raillard-arm, @jj-github-jj, and @TheoMathurin.
Another thanks to the maintainers @ahuang11, @droumis, @maximlt, @philippjfr, and @hoxbro.

New features

Enhancements

  • Override Curve's count aggregator default to self_intersect=False (#6030)
  • Zoom tools automatically vertically scaled on subcoordinate_y overlays (#6051)
  • Use tsdownsample library for downsampling if available (#6059, #6083)
  • Add viewport downsample algorithm (#6017)
  • Optimize downsample1d when data is shared between layers (#6075)
  • Support dictionary cmaps for ImageStack (#6025)
  • Expose hit_dilation in PointPlot (#6121)
  • Improve autocompletion for lazy module (#6174)
  • Subcoordinate_y: reverse the renderers by default (#6194)
  • Add hover_tooltips, hover_mode, hover_formatters opts to easily modify hover (#6180)
  • Expose setting hard navigable bounds (#6056)
  • Add a zoom tool per subcoordinate_y group (#6122)
  • Support all Bokeh Text style opts in hv.Labels and hv.Text (#6198)
  • Implement support for retaining Pandas index (#6061)
  • Add operation for group-wise normalisation (#6124)
  • Allow Bars to be plotted on continuous axes (#6145)
  • Add min_interval and max_interval to the RangeToolLink (#6134)
  • Add support for rasterizing geopandas dataframes directly (#5958)
  • Allow options for non-enabled backends (#6196)
  • Support ImageStack in dynspread (#6024)
  • Add support for cticks (#6257)
  • Support title font size in Plotly backend (#5920)
  • Hold rendering until a plot has been fully updated (#6265)
  • Make Dimension.label source of truth for Dimension identity (#6262)
  • Allow subcoordinates to be drawn from NdOverlay dimensions (#6209)
  • Add stream transform (#6230)

Bug fixes

  • Don't show figures toolbar on GridSpace (#6127)
  • Update merge_tool (#6141)
  • Don't raise KeyError if options don't contain None (#6153)
  • Force vdims to strings for ImageStack (#6155)
  • Fixes to Bokeh BoxWhisker (#6169)
  • Improve groupby behavior for operation histogram (#6172)
  • Ensure plot ranges for all renderers are combined in auto-ranging (#6173)
  • Ensure that the downsample algorithm m4 n_out is always a multiple of 4 (#6195)
  • Subcoordinate_y: respect ylim (#6190)
  • Bug fix for player example pause button (#6212)
  • Clone if a Tool is as Bokeh model (#6220)
  • Fix violin plot in Plotly (#6237)
  • Don't error on TypeError in DaskInterface when sorting (#6221)
  • Fix hv.help if Info.store is None (#6250)
  • Change how upper limit is taken for color_levels (#4898)
  • Fix vectorfield hover (#6258)
  • Ensure Range streams and RangeToolLink respect subcoordinate axis range (#6256)
  • Fix pickling state (#6245)
  • Fix colab rendering (#6269)
  • Disable batching when subcoordinate_y is enabled (#6272)
  • Ensure downsample works with non-contiguous arrays (#6271)
  • Fix issue with range lookups in (y)-axis creation (#6274)

Dependencies updates

  • Update param minimum version to 2.0 (#6230)
  • Update numpy >=1.21, pandas >= 1.3, and Bokeh >=3.1 (#6253)

Compatibility

  • Update test for Bokeh 3.4 (#6130)
  • Test with dask-expr (#6259, #6149)
  • Numpy 2.0 compatibility (#6238)
  • Update to support cudf 2024.06 (#6263)

Documentation

  • Minor typos (#6179, #6193)
  • Update CSS for documentation (#6228)
  • Fix links (#6246, #6036)
  • Document subcoordinate_group_ranges by extending the EEG Viewer demo (#6243)

Maintenance

  • Switch to Pixi for development / CI and hatchling for build system (#6182, #6200, #6251)
  • Add test-gpu task for Pixi (#6217)
  • Add sync-git-tags task to Pixi for sync git tags with upstream repo (#6215)
  • Parallelize unit test (#6234)
  • Use psutil for pytest-xdist logical option (#6213)
  • Bump CI tests to use Python 3.12 (#5978)
  • Only run test-suite on code change (#6035)
  • Add skip statement to all steps to work with required (#6037)
  • Add true if inputs.cache is not set (#6050)
  • Dynamic generate unit test matrix and add cache option (#6043)
  • Add prettier to markdown and yaml (#6040)
  • Add taplo as toml formatter (#6227)
  • Disable always on warnings (#6077)
  • Updating Package workflow to a build and a publish step (#6031)
  • Use the new conda package format (#6216)

Version 1.18.3

13 Feb 10:17
27d38e9
Compare
Choose a tag to compare

This micro release includes bug fixes.

Bug fixes:

  • Fix BoundsX and BoundsY regression (#6099)
  • Fix rasterize regression (#6102)
  • Fix link selection for empty Layout (#6110)
  • Don't pin notebook in conda recipe for pyviz channel (#6108)

Version 1.18.2

05 Feb 11:22
9b3dc5a
Compare
Choose a tag to compare

This micro release includes a number of bug fixes and documentation updates, as well as compatibility updates for xarray 2023.12 and Pandas 2.2.
Many thanks to the new contributors @junietoc, @JulianGiles, and @magic-lantern, as well as the returning contributors @ianthomas23, @maximlt, @TheoMathurin, @philippjfr, @ahuang11, and @hoxbro.

Enhancements:

  • Update contour line calculations to use ContourPy's LineType.ChunkCombinedNan (#5985)
  • Use sys.executable for check_output (#5983)
  • Updates to show_versions (#6072, #6081)

Bug fixes:

  • Support color_key in datashade when intermediate step is an ImageStack (#5994)
  • Fix hist on overlay (#5995)
  • Set proper context before triggering streams (#6000)
  • Support partial bound function (#6009)
  • Add norm in init_artists in holoviews/plotting/mpl/raster.py (#6029)
  • Fix linking elements that are transformed by a Compositor (#6003)
  • Add datetime hover information for selector (#6023, #6039)
  • Only evaluate rx if it is a Reactive Expression (#6014)
  • Ensure partial methods can be used as dmap callables (#6063)
  • Del frame after stack level is found in deprecated (#6085)

Compatibility:

  • Compatibility updates with xarray 2023.12 (#6026)
  • Add extra check to detect if we are in jupyterlite (#6007)
  • Compatibility updates with Pandas 2.2 (#6074, #6078)
  • Add Comm on_open handler to initialize the server comm (#6076)

Documentation:

  • Fix docs (#5996)
  • Fix Param usage in the Plot and Renderers guide (#6001)
  • Fixing URLs to bokeh project (#6005)
  • Fix to broken urls in example gallery pages (#6038)
  • Replace Google Analytics with GoatCounter (#6048)
  • Add downloads badges (#6088)

Maintenance:

  • Change to pytest-rerunfailures (#5984)
  • Holoviews maintenance (#5987)
  • Add log_cli_level = "INFO" to pytest (#5989)
  • Add shell pre-commit hook (#5991)
  • Enable Bugbear 904 (#5992)
  • Part 1, modernize test suite (#5954)
  • Enforce labels (#5996)
  • Add lower pin to scipy (#6032)
  • Skip Deploying_Bokeh_Apps.ipynb on Windows (#6070)
  • Fix failing Windows tests (#6087)

Version 1.18.1

09 Nov 09:16
9c72201
Compare
Choose a tag to compare

This release contains a small number of bug fixes and compatibility updates — many thanks to @philippjfr and @hoxbro for their contributions.

Bug fixes:

  • Account for overlaid elements when using subcoordinates_y (#5950)
  • Fix groupby option for vectorized annotations (#5956)
  • Fix and improvements to ImageStack (#5961)
  • Do not allow partial matches when updating OverlayPlot (#5962)
  • Always ravel array in unique_array (#5969)

Compatibility:

  • Update Stamen maps with new URL (#5967)
  • Compatibility updates for Numpy 2.0 (#5979)

Maintenance:

  • General maintenance (#5955)

Version 1.18.0

23 Oct 07:26
ad31eda
Compare
Choose a tag to compare

This release includes new features, improvements, and bug fixes. Among these are the new elements. First is the ImageStack element allows you to easily visualize a 3D array, while the VLines, HLines, VSpans, and HSpans elements allow you to visualize vertical and horizontal lines and spans easily. In addition, this release includes support for subcoordinate systems in the y-axis and various other enhancements and bug fixes. This release adds support for the newest Python 3.12 and Bokeh 3.3 and drops support for Python 3.8 and Bokeh 2.

Many thanks to the new contributors @MeggyCal, along with our returning contributors @ahuang11, @ianthomas23, @jlstevens, @maximlt, @philippjfr, and @hoxbro.

New features:

  • Implementation of ImageStack (#5751, #5945)
  • Adding vectorized VLines, HLines, VSpans, and HSpans elements (#5845, #5911, #5940)
  • Implement support for subcoordinate systems in the y-axis (#5840)

Enhancements:

  • Cycle through text_color when overlaying Labels (#5888)
  • Drop requirements for OrderedDict (#5867, #5890, #5925)
  • Allow to link to an Overlay (#5881)
  • Use contourpy for contour calculations (#5910)
  • Use browser information to set pixel_density in ResampleOperation2D (#5947)
  • Avoid bounce back of events for Range{X,Y,XY} streams (#5946)

Bug fixes:

  • Fix overlaying labels in Sankey diagram (#5864)
  • Ensure the PlotSize stream works with undefined width/height (#5868)
  • Fix test when only python3 command is available (#5874)
  • Try and except get_extents without the dimension argument and add kwargs to all get_extents (#5872)
  • Enable Mathjax with enable_mathjax (#5904)
  • Fix histogram operation on Ibis data (#5929)
  • Raise exceptions in compare_dataset (#5932)
  • Don't overlap objects in overlaid plot (#5942)

Compatibility:

Documentation:

  • Add Linking Bokeh plots guide to the table of contents (#5900)

Maintenance:

Version 1.17.1

17 Aug 07:08
e2f06d0
Compare
Choose a tag to compare

This release contains a small number of important bug fixes and regressions — many thanks to @ianthomas23, @maximlt, @philippjfr, and @hoxbro for their contributions.

Enhancements:

  • Improve support for hv.NdOverlay and hv.Overlay in downsample1d (#5856)
  • Improve legend support for hv.Layout and add documentation for sync_legends and show_legends (#5852)

Bug fixes:

  • RangeToolLink now correctly reset to the predefined boundsx and boundsy values (#5848)
  • Fix regressions with Bokeh's axis (#5838, #5850, #5851)

Compatibility:

  • Pin Param version for Bokeh 2 (#5844)
  • Explicitly clear Matplotlib figure to remove warning about auto-removal of overlapping axes for Matplotlib 3.8 (#5857)

Documentation:

  • Set autohide example to True as in the hook (#5832)

Maintenance:

  • Add OpenCollective sponsor link on the repo page (#5839)
  • Update Ruff in pre-commit and report panel communication in hv.show_versions (#5853)
  • Cleanup imports (#5846)

Version 1.17.0

25 Jul 16:28
f73e703
Compare
Choose a tag to compare

This release brings one of the most requested features - interactive twin-axis support! Another feature added in this release is the ability to easily set custom options on plot components with backend_opts, making it much easier to customize your plots. Datashaders where and summary aggregators are now supported, and rasterize now has a selector option, making it easy to get extra information about your rasterized data. Lastly, Bokeh figures with the same labels will synchronize muteness or visibility across different figures.

In addition, this release includes several enhancements and bug fixes.

Many thanks to the new contributors @alfredocarella and @RaulPL, as well as the returning contributors @ahuang11, @droumis, @jbednar, @jlstevens, @maximlt, @philippjfr, @TheoMathurin and @hoxbro.

New features:

  • Multi-yaxis support in the Bokeh backend (#5621)
  • Allow modifying the underlying Bokeh or Matplotlib figure, axes etc. using backend_opts (#4463)
  • Support Datashaders where and summary aggregators and add selector option to rasterize enabling instant hover inspection of value dimensions (#5805)
  • Synchronize muteness or visibility across Bokeh figures to support linked legends (#5763)

Enhancements:

  • Add option for initial ranges to RangeToolLink (#5800)
  • Allow resample's pixel_ratio to go below 1 (#5813, #5817)
    Add the ability for VectorField to instantiate from UV coordinates (#5797)
  • Handle the nodata option for rasterized RGB image (#5774)

Bug fixes:

  • Fix bins option in the autompg_histogram demo (#5750)
  • Fix 0pt bug in safari (#5755)
  • Disable pan if active_tools=[] (#5754)
  • Better handling of inputs to rasterize.instance() (#5767, #5811)
  • Fix class variable being used as instance vdims in hv.RGB (#5773, #5775)
  • Improve notebook detection in VSCode and Google Colab (#5792)
  • Don't warn when running rasterize in VSCode (#5780)
  • Add __init__ to hv.Output to not overwrite its parent signature (#5799)
  • Fix XArrayInterface crashing when input is an empty array (#5809)
  • Avoid setting batched before the class is initialized (#5814)
  • Fix aspect handling when plot size is still unknown (#5808)
  • Update callbacks to use Bokeh's quad instead of quad (#5760)
  • Update hv.Image/hv.RGB invert_{x,y}axis to work with Bokeh 3 (#5796)
  • strip_magics should also strip IPython line magic (#5794)

Compatibility:

  • Implement HEP1 - Drop support for Python 3.7 (#5695)
  • Replace deprecated np.product with np.prod (#5787)
  • Update FileArchive repr for Param 2.0 (#5791)
  • Deprecate functionality (#5776)

Documentation:

  • Fix typo in Getting Started section text (#5759)
  • Add sep keyword to pd.read_csv in documentation page (#5798)

Maintenance:

Version 1.16.2

08 Jun 16:36
5cb5ff7
Compare
Choose a tag to compare

This release includes a breaking change as notebooks will no longer be inlining as default. This change will reduce the size of the notebook files and, more importantly, address an upstream issue in Jupyter where running hv.extension would give an error when used in a notebook.

Critical bug fixes and compatibility:

  • Correctly set inline=False when running hv.extension in a Jupyter Notebook (#5748)
  • Adding more Param 2 support (#5717)

Enhancements:

  • Speed up import time of Holoviews (#5719)

Maintenance:

  • Fix failing tests (#5742)
  • Misc. mainteance (#5717)