Releases: holoviz/holoviews
Version 1.20.0
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
andsublabel_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 forsubcoordinate_y
plots (#6403, #6420) - Support async callbacks for
popup
(#6390) - Add
popup
position and anchor (#6414)
Bug fixes
- Wrap
popup
inset_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
andSpan
onmulti_y
(#6376) - Drop the
z
dimension fromImageStack
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
Version 1.19.1
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
inis_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
inoperations.datashader
(#6309)
Maintenance
Version 1.19.0
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
inPointPlot
(#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
andhv.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
andmax_interval
to theRangeToolLink
(#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
inDaskInterface
when sorting (#6221) - Fix
hv.help
ifInfo.store
isNone
(#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
, andBokeh >=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
forpytest-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
Version 1.18.2
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
indatashade
when intermediate step is anImageStack
(#5994) - Fix hist on overlay (#5995)
- Set proper context before triggering streams (#6000)
- Support partial bound function (#6009)
- Add
norm
ininit_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
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:
Maintenance:
- General maintenance (#5955)
Version 1.18.0
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
, andHSpans
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
inResampleOperation2D
(#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 thedimension
argument and add kwargs to allget_extents
(#5872) - Enable
Mathjax
withenable_mathjax
(#5904) - Fix
histogram
operation on Ibis data (#5929) - Raise exceptions in
compare_dataset
(#5932) - Don't overlap objects in overlaid plot (#5942)
Compatibility:
- Param 2.0 support (#5865, #5897, #5906, #5918)
- Pandas 2.1 support (#5877, #5898, #5880)
- Numpy 1.25 support (#5870)
- Replace
np.NaN
withnp.nan
for Numpy 2.0 (#5938) - Bokeh 3.3 support (#5873, #5923, #5935)
- Dropping support for Bokeh 2 (#5891)
- Python 3.12 support (#5909)
- Dropping support for Python 3.8 (#5936)
- Matplotlib 3.8 compatibility (#5910, #5924)
- Remove deprecations functions (#5915)
Documentation:
- Add Linking Bokeh plots guide to the table of contents (#5900)
Maintenance:
- Remove warnings (#5854, #5894)
- Add output of pre-commit hook in summary and add environment artifact (#5905)
- Improvements to test CI (#5917, #5892)
- General maintenance update (#5889, #5907, #5934, #5943)
- Update build of conda package (#5921, #5922)
- Add sorting of imports (#5937)
- Enable Bugbear lint (#5861)
Version 1.17.1
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
andhv.Overlay
in downsample1d (#5856) - Improve legend support for
hv.Layout
and add documentation forsync_legends
andshow_legends
(#5852)
Bug fixes:
RangeToolLink
now correctly reset to the predefinedboundsx
andboundsy
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 toTrue
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
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
andsummary
aggregators and addselector
option torasterize
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 forVectorField
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
inhv.RGB
(#5773, #5775) - Improve notebook detection in VSCode and Google Colab (#5792)
- Don't warn when running
rasterize
in VSCode (#5780) - Add
__init__
tohv.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 ofquad
(#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
withnp.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
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 runninghv.extension
in a Jupyter Notebook (#5748) - Adding more Param 2 support (#5717)
Enhancements:
- Speed up import time of Holoviews (#5719)
Maintenance: