Skip to content

Releases: holoviz/holoviews

Version 1.23.1

Choose a tag to compare

@github-actions github-actions released this 02 Jul 13:33
v1.23.1
1146eb8

This patch release includes a number of bug fixes. Thanks to @hoxbro for their contributions.

Bug Fixes:

  • Avoid memory leak from hv.streams when using partial.functools with methods (#6941)
  • Allow dictionary as an cmap input for categorical data with the Plotly backend (#6940)
  • Fix rasterize on hv.Spread swapped order of positive and negative error bars (#6933)
  • Support stacked hv.Bars with narwhals backend (#6930)

Version 1.23.0

Choose a tag to compare

@github-actions github-actions released this 24 Jun 12:30
v1.23.0
388b337

This release introduces new chart types including Donut and Waterfall, along with significant performance improvements, and numerous bug fixes.

Many thanks to @AR21SM (first contribution), @Chetansahney (first contribution), @ghostiee-11 (first contribution), @mvanhorn (first contribution), @SimonHeybrock (first contribution), @ahuang11, @Azaya89, @JulianGiles, @MarcSkovMadsen, @philippjfr, @stanwest, @thuydotm, and @hoxbro for their contributions.

Features:

  • Add Donut chart (#6848)
  • Add Waterfall chart (#6847)
  • Add categorical_agg operation for linked selections with categorical Bars (#6804)

Breaking changes:

  • Removal of deprecated parameters: color_index, size_index, scaling_factor, scaling_method, size_fn (#6819)
  • Removal of HoloViews IPython magic, deprecated since 1.21.0 (#6781)
  • Only support HOLOVIEWSRC environment variable for custom config, deprecated since 1.21.0 (#6782)
  • Removal of old location of IPTestCase, deprecated since 1.21.0 (#6782)
  • Removal of streamz support, deprecated since 1.21.0 (#6782)
  • Removal of binder links (#6822)

Deprecations:

  • Deprecate dash support, removal in 1.24.0 (#6867)
  • Warning about deprecated old API (holoviews.core.options.Opts and holoviews.core.dimension.redim), removal in 1.24.0 (#6863)
  • Deprecation of holoviews.element.comparison for holoviews.testing, removal in 1.25.0 (#6735)

Enhancements:

  • Add baseline opt to Bars for floating bar charts (#6896)
  • Small improvements to Spread (#6883)
  • Remove use of explicit raise Exception (#6866)
  • Support all narwhals stable versions (#6844)
  • Handle xarray Dataset for rolling_outliers_std (#6763)
  • Support selector and ds.summary for geom_aggregator (#6743)

Bug Fixes:

  • Remove extra space in some warnings of irregular sampling (#6916)
  • Allow image coordinate irregularity equal to the tolerance (#6915)
  • Handle undeclared aggregator column in _resolve_agg_column_name (#6908)
  • Prevent exponential custom-option id growth on re-customization (#6904)
  • Interpolation curves crash on empty input (#6903)
  • Add exception logging to Stream.trigger (#6902)
  • Norm and vmin/vmax in raster.py (#6889)
  • Datetime with HeatMap (#6877)
  • Memory leak in Stream._subscribers (#6875)
  • HMAC-sign Dash store data (#6867)
  • Missing Interface import (#6854)
  • Avoid trying to match dimension by name (#6853)
  • Add timezone handling for xarray backend (#6849)
  • Don't clip matplotlib animation (#6845)
  • Check narwhals.Series is also arraylike (#6829)
  • Fix Bars crash with datetime x-axis for single or duplicate values (#6820)
  • Raise error if RGB getitem uses Ellipsis with bad name (#6818)
  • Self passed in super().__init__ (#6817)
  • Display colorbar label from value dimension in Bokeh (#6815)
  • Prevent duplicate legend entries in BoxWhisker plot in Bokeh (#6809)
  • Labels with offset raising unreachable code in Bokeh (#6800)
  • Prevent Matplotlib from overriding Cycle.default_cycles with RGB tuples (#6798)
  • BoxEdit stream data not initialized for Rectangles (#6786)
  • Sync visibility with PolyDraw/PolyEdit (#6784)
  • Support pandas dtypes for interpolation (#6783)
  • Handle NdMapping with explicit tuple set slicing with dimension values (#6780)
  • Check for zero height in get_aspect to prevent ZeroDivisionError (#6779)
  • Fix extra hover tooltips for labels (#6774)
  • Categorical color mapping for Polygons in mpl backend (#6762)
  • Categorical color error for Scatter plotly plot (#6758)
  • Handle datetime with timezone in rasterize (#6757)
  • isdatetime check for arraylike (#6755)
  • Seed range streams on initial draw of overlay plots (#6922)

Performance:

  • Cache static layout properties in _update_plot in Bokeh (#6839)
  • Skip param.update when plot options unchanged (#6837)
  • Skip Bokeh property validation in _update_datasource in Bokeh (#6835)
  • Disable pipeline bookkeeping during plot refresh (#6832)
  • Cache gen_types type tuples (#6831)
  • Remove dead hasattr check triggering difflib in Bokeh (#6830)
  • Add numeric fast path to max_range and dimension_range (#6806)
  • Remove packaging dependency for regex (#6857)

Type Annotations:

  • Add type checking on isolated and utility files (#6851)
  • Support latest param dev release and use param.descendents (#6869)
  • Update ty version and small fixes (#6859)
  • Enable type checking ruff rules (#6850)

Compatibility:

Refactoring:

  • Enable flake8-comprehensions (C4) and pygrep-hooks (PGH) (#6865)
  • Enable ruff formatting (#6810)
  • Make test use hv. import if it is top-level import (#6803)
  • Remove * imports and update __all__ to be static (#6802)
  • Don't have test inheriting from unittest.TestCase (#6735)

Governance:

Documentation:

Read more

Version 1.22.1

Choose a tag to compare

@github-actions github-actions released this 05 Dec 14:55
v1.22.1
302614b

This patch release includes a number of bug fixes and enhancements, and adds compatibility with Pandas 3.
Many thanks to @chrisbotica (first contribution), @JelmerBot (first contribution), @Azaya89, and @hoxbro for their contributions.

Enhancements:

  • Add text_outline_color and text_outline_width style to Labels (Bokeh) (#6738, #6746)
  • Add support for timedelta axis and Narwhals duration (Bokeh) (#6734)
  • Add numpy masked array to masked_types (#6732)

Bug Fixes:

  • Have hover tool work across different DynamicMaps elements (Bokeh) (#6748)
  • Suppress Runtime warnings for negative size values (Matplotlib) (#6744)
  • Don't error if Heatmap is optimized and color style is used (#6730)
  • Narwhals Series not being seen as arraylike and not computing dim expression (#6729)
  • Check categorical legend dtypes for categories before accessing it (#6053)
  • Element interface mask to allow for np.nan (#5790)

Documentation:

  • Add documentation for legend_opts (Bokeh) (#6751)

Compatibility:

Version 1.22.0

Choose a tag to compare

@github-actions github-actions released this 10 Nov 18:01
v1.22.0
90a02ac

This release adds Narwhals support for broader dataframe compatibility. By doing so, we now also support Polars and DuckDB data backends.
Another new feature is the addition of sizebar support for Points elements, allowing for better visualization of point sizes in plots.
Along with these new features, this release includes numerous enhancements, bug fixes, compatibility updates, and improved documentation.
Many thanks to @epaaso (first contribution), @thuydotm (first contribution), @ahuang11, @Azaya89, @maximlt, @philippjfr, @stanwest, and @hoxbro for their contributions.

New Features:

Enhancements:

  • Add gridstyle to matplotlib (#6700)
  • Add from_sparse classmethod for Graph (#6673)
  • Add support for synthetic legends on ImageStackPlot (#6662)
  • Sync tools with Bokeh and use auto_box_zoom as default (#6650)
  • Add hover filter (#6646)
  • Improve error message for non-matching types when aspect is set to equal (#6103)
  • Use ImageStack as an element_type in rasterize (#6631)
  • Improve core.util to work better without pandas installed (#6702)
  • Implement link_selections.unlink (#6685)

Deprecations:

  • Deprecate IbisInterface for NarwhalsInterface (#6718)

Performance:

  • Optimize HeatMap rendering path if gridded and contiguous (#6680)
  • Add debounce support to PlotSize and RangeXY Bokeh callbacks (#6672)
  • Don't import IPython in find_stack_level (#6724)

Bug Fixes:

  • Interpolation for Image with datashade (#6707)
  • subcoordinate_y for DynamicMap if labels mismatched between plots (#6694)
  • Setting selection_expr programmatically (#6689)
  • Handle node_color in element transformations for Bokeh and MPL (#6678)
  • hv.dim and hv.Dimension as color opts for Matplotlib Path plots (#6721, #6665)
  • Use native bokeh x marker in plots and legends (#6676)
  • Silence Bokeh FIXED_SIZING_MODE warning on hv.save (#6674)
  • Comparison for non-numeric dtypes (#6671)
  • Allow discovering .apply operation on pipeline (#6670)
  • dendrogram edgecases (#6669)
  • Don't select in decimate if start and end are the same (#6661)

Compatibility:

Version 1.21.0

Choose a tag to compare

@hoxbro hoxbro released this 25 Jun 11:29
v1.21.0
0541eae

This release adds support for sample information on hover for rasterized/datashaded plots, adds dendrogram plot, and adds logarithmic support for Histogram. Along with these new features, this release includes a number of enhancements, bug fixes, and improved documentation.
Many thanks to the new contributors @philipc2, @NolanBrb, and @sand-hanitizer, as well as the returning contributors @Azaya89, @LecrisUT, @maximlt, @michaelaye, @philippjfr, and @hoxbro.

This release bumps the minimum supported Python version to 3.10, deprecates the streamz interface, autoloading RC file, IPython magic, and using matplotlib as default backend for hv.extension which are all planned for removal in 1.23.0.

New features:

Deprecations and removals:

  • Minimum supported Python version is now 3.10 (#6549)
  • Deprecate the streamz interface (planned removal in 1.23.0) (#6490)
  • Deprecate autoloading RC file (planned removal in 1.23.0) (#6610)
  • Deprecate IPython magic (planned removal in 1.23.0) (#6610)
  • Deprecate hv.extension() for hv.extension("matplotlib") (planned removal in 1.23.0) (#6610)
  • Remove unused hv.config parameters: future_deprecations and warn_options_call (#6610)

Enhancements:

  • [Bokeh] Add hide_toolbar options (#6602)
  • [Bokeh] Add radius and radius_dimension to Point plot (#6599, #6613)
  • [Notebook] Add details option for AbbreviatedException (#6611)
  • [Notebook] Improve the content displayed when loading the extension in a notebook (#6586)
  • Add basic reactive expression support in a streams dictionary (#6563)
  • Allow passing dimension as style mapping option #6614
  • Support passing selection dictionary to Dataset.select (#6617, #6626)
  • Pass the backend in holoviews.opts.defaults (#6331)
  • Update norm function to handle edge case (#6366)

Performance:

  • Defer Pandas import (#6476, #6574, #6582, #6585)
  • Defer datashader.bundling to avoid numba compile time (#6616)
  • Defer Panel and Pandas imports in IPython (#6570)

Fixes:

  • Correctly apply Bars style transforms (#6623)
  • Don't assume all extents are string in max_extents (#6571)
  • Histogram error with datatype dask.array and backend Matplotlib (#6542)
  • Wrong empty element when using apply_when (#6628)
  • Add legend to distribution for matplotlib backend (#6544)
  • Improve multi_y error for single element (#6543)
  • PandasInterface.select with an index and a column (#6579)
  • Skip overlay aggregate for NdOverlays with a count aggregator (#6619)

Documentation:

Build:

  • Add more project URLs to PyPI (#6629)
  • Support PEP 639 - License Clarity (#6564)
  • Support PEP 734 - Dependency Groups (#6608)

Version 1.20.2

Choose a tag to compare

@hoxbro hoxbro released this 13 Mar 13:22
v1.20.2
17946ac

This micro release includes a couple of bug fixes, an enhancement, and compatibility updates.
Thank you to the new contributor @MikalaiPrakapenka, as well as the returning contributor @hoxbro.

Enhancements:

  • Add active toggle to scalebar icon (#6473)

Bug fixes:

  • PolyEdit stream not synchronizes with CDS (#6534)
  • Regression in get_value_array (#6519)

Compatibility:

Version 1.20.1

Choose a tag to compare

@hoxbro hoxbro released this 19 Feb 19:50
v1.20.1
d301861

This micro release includes a number of bug fixes, enhancements, and compatibility updates.
Many thanks to the new contributors @spacetimeengineer, @flying-sheep, and @Azaya89, as well as the returning contributors @stanwest, @ahuang11, @maximlt, and @hoxbro

Enhancements:

  • Faster spatialpandas unique scalar values (#6470)

Bug fixes:

  • IndexError associated with HeatMap (#6438)
  • Propagate default_tools (#6451)
  • Heatmap with non-sanitized name (#6462)
  • Don't have linked axis between source and target for RangeToolLink (#6466)
  • Empty constant_keys (#6477)
  • Support pandas ExtensionArray ordering (#6481)
  • Heatmap aggregation when kdims are in a Pandas multi-index (#6499)
  • Support the case of multiple line segments each with one vdim (#6492)

Refactor:

  • Remove unused pandas import (#6439)
  • Enable RUF005 (#6434)

Compatibility:

Documentation:

  • Fix wrong variable name (#6442)
  • Correct doc of "allow_jedi_completion" (#6485)
  • Improve LSP information for extension (#6461)
  • Add gallery intro with link to examples.holoviz.org (#6472)

Build:

  • Small updates to build infrastructure (#6458)
  • Switch PyPI package to trusted build (#6447)

CI:

  • Enable conventional commits (#6397, #6457)
  • Add COVERAGE_CORE=sysmon for tests (#6465)
  • Add test-313 environment (#6508)
  • Exclude forks from nightly-lock workflow (#6507)
  • Use ruff on all python files (#6498)

Version 1.20.0

Choose a tag to compare

@hoxbro hoxbro released this 04 Nov 15:56
366d932

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

Choose a tag to compare

@hoxbro hoxbro released this 05 Jul 07:22
96317ad

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

Choose a tag to compare

@hoxbro hoxbro released this 13 Jun 14:51
280da97

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)