Release notes

Version 1.13

Version 1.13.5

This version contains numerous bug fixes and a number of enhancements. Many thanks for contribution by @bryevdv, @jbednar, @jlstevens, @jonmmease, @kcpevey and @philippjfr.

Bug fixes:



Version 1.13.4

This version fixes a large number of bugs particularly relating to linked selections. Additionally it introduces some enhancements laying the groundwork for future functionality. Many thanks for contribution by @ruoyu0088, @hamogu, @Dr-Irv, @jonmmease, @justinbois, @ahuang11, and the core maintainer @philippjfr.

Bug fixes:

  • Fix the .info property to return the info (#4513)

  • Set toolbar=True the default in save() (#4518)

  • Fix bug when the default value is 0 (#4537)

  • Ensure operations do not recursively accumulate pipelines (#4544)

  • Fixed whiskers for BoxWhisker so that they never point inwards (#4548)

  • Fix issues with boomeranging events when aspect is set (#4569)

  • Fix aspect if width/height has been constrained (#4579)

  • Fixed categorical handling in Geom plot types (#4575)

  • Do not attempt linking axes on annotations (#4584)

  • Reset RangeXY when framewise is set (#4585)

  • Add automatic collate for Overlay of AdjointLayout`s (`#4586)

  • Fixed color-ranging after box select on side histogram (#4587)

  • Use HTTPS throughout on homepage (#4588)


  • Compatibility with bokeh 2.2 for CDSCallback (#4568)

  • Handle rcParam deprecations in matplotlib 3.3 (#4583)


  • Allow toggling the selection_mode on link_selections from the context menu in the bokeh toolbar (#4604)

  • Optimize options machinery (#4545)

  • Add new Derived stream class (#4532)

  • Set Panel state to busy during callbacks (#4546)

  • Support positional stream args in DynamicMap callback (#4534)

  • legend_opts implemented (#4558)

  • Add History stream (#4554)

  • Updated spreading operation to support aggregate arrays (#4562)

  • Add ability to supply dim transforms for all dimensions (#4578)

  • Add ‘vline’ and ‘hline’ Hover mode (#4527)

  • Allow rendering to pgf in matplotlib (#4577)

Version 1.13.3

This version introduces a number of enhancements of existing functionality, particularly for features introduced in 1.13.0, e.g. cuDF support and linked selections. In addition it introduces a number of important bug fixes. Many thanks for contribution by @kebowen730, @maximlt, @pretros1999, @alexbraditsas, @lelatbones, @flothesof, @ruoyu0088, @cool-PR and the core maintainers @jbednar and @philippjfr.


  • Expose center as an output rendering option (#4365)

  • Configurable throttling schemes for linked streams on the server (#4372)

  • Add support for lasso tool in linked selections (#4362)

  • Add support for NdOverlay in linked selections (#4481)

  • Add support for unwatching on Params stream (#4417)

  • Optimizations for the cuDF interface (#4436)

  • Add support for by aggregator in datashader operations (#4438)

  • Add support for cupy and dask histogram and box-whisker calculations (#4447)

  • Allow rendering HoloViews output as an ipywidget (#4404)

  • Allow DynamicMap callback to accept key dimension values as variable kwargs (#4462)

  • Delete toolbar by default when rendering bokeh plot to PNG (#4422)

  • Ensure Bounds and Lasso events only trigger on mouseup (#4478)

  • Fix issues with ranges bouncing when PlotSize stream is attached (#4480)

  • Fix bug with hv.extension(inline=False) (#4491)

  • Handle missing categories on split Violin plot (#4482)

Bug fixes:

  • Eliminate circular references to allow immediate garbage collection (#4368, #4377)

  • Allow bytes as categories (#4392)

  • Fix handling of zero as log colormapper lower bound (#4383)

  • Do not compute data ranges if Dimension.values is supplied (#4416)

  • Fix RangeXY updates when zooming on only one axis (#4413)

  • Ensure that ranges do not bounce when data_aspect is set (#4431)

  • Fix bug specifying a rotation for Box element (#4460)

  • Fix handling of datetimes in bokeh RectanglesPlot (#4461)

  • Fix bug normalizing ranges across multiple plots when framewise=True (#4450)

  • Fix bug coloring adjoined histograms (#4458)

Version 1.13.2

This is a minor patch release fixing a number of regressions introduced as part of the 1.13.x releases. Many thanks to the contributors including @eddienko, @poplarShift, @wuyuani135, @maximlt and the maintainer @philippjfr.


  • Add PressUp and PanEnd streams (#4334)

Bug fixes:

  • Fix regression in single node Sankey computation (#4337)

  • Fix color and alpha option on bokeh Arrow plot (#4338)

  • Fix undefined JS varaibles in various bokeh links (#4341)

  • Fix matplotlib >=3.2.1 deprecation warnings (#4335)

  • Fix handling of document in server mode (#4355)

Version 1.13.1

This is a minor patch release to fix issues compatibility with the about to be released Bokeh 2.0.1 release. Additionally this release makes Pandas a hard dependency, which was already implicitly the case in 1.13.0 but not declared. Lastly this release contains a small number of enhancements and bug fixes.


  • Add option to set Plotly plots to responsive (#4319)

  • Unified datetime formatting in bokeh hover info (#4318)

  • Add explicit .df and .xr namespaces to dim expressions to allow using dataframe and xarray APIs (#4320)

  • Allow using dim expressions as accessors (#4311)

  • Allow defining clim which defines only upper or lower bound and not both (#4314)

  • Improved exceptions when selected plotting extension is not loaded (#4325)

Bug fixes:

  • Fix regression in Overlay.relabel that occurred in 1.12.3 resulting in relabeling of contained elements by default (#4246)

  • Fix bug when updating bokeh Arrow elements (#4313)

  • Fix bug where Layout/Overlay constructors would drop items (#4313)


  • Fix compatibility with Bokeh 2.0.1 (#4308)


  • Update API reference manual (#4316)

Version 1.13.0

This release is packed full of features and includes a general refactoring of how HoloViews renders widgets now built on top of the Panel library. Many thanks to the many contributors to this release either directly by submitting PRs or by reporting issues and making suggestions. Specifically we would like to thank @poplarShift, @jonmease, @flothesof, @julioasotodv, @ltalirz, @DancingQuanta, @ahuang, @kcpevey, @Jacob-Barkhak, @nluetts, @harmbuisman, @ceball, @mgsnuno, @srp3003, @jsignell as well as the maintainers @jbednar, @jlstevens and @philippjfr for contributing to this release. This version includes the addition of a large number of features, enhancements and bug fixes:

Major features:

  • Add link_selection to make custom linked brushing simple (#3951)

  • link_selection builds on new support for much more powerful data-transform pipelines: new Dataset.transform method (#237, #3932), dim expressions in (#3920), arbitrary method calls on dim expressions (#4080), and Dataset.pipeline and Dataset.dataset properties to track provenance of data

  • Add Annotators to allow easily drawing, editing, and annotating visual elements (#1185)

  • Completely replaced custom Javascript widgets with Panel-based widgets allowing for customizable layout (#84, #805)

  • Add HSpan, VSpan, Slope, Segments and Rectangles elements (#3510, #3532, #4000)

  • Add support for cuDF GPU dataframes, cuPy backed xarrays, and GPU datashading (#3982)

Other features

  • Add spatialpandas support and redesigned geometry interfaces for consistent roundtripping (#4120)

  • Support GIF rendering with Bokeh and Plotly backends (#2956, #4017)

  • Support for Plotly Bars, Bounds, Box, Ellipse, HLine, Histogram, RGB, VLine and VSpan plots

  • Add UniformNdMapping.collapse to collapse nested datastructures (#4250)

  • Add CurveEdit and SelectionXY streams (#4119, #4167)

  • Add apply_when helper to conditionally apply operations (#4289)

  • Display Javascript callback errors in the notebook (#4119)

  • Add support for linked streams in Plotly backend to enable rich interactivity (#3880, #3912)


  • Support for packed values dimensions, e.g. 3D RGB/HSV arrays (#550, #3983)

  • Allow selecting/slicing datetimes with strings (#886)

  • Support for datashading Area, Spikes, Segments and Polygons (#4120)

  • HeatMap now supports mixed categorical/numeric axes (#2128)

  • Use __signature__ to generate .opts tab completions (#4193)

  • Allow passing element-specific keywords through datashade and rasterize (#4077) (#3967)

  • Add per_element flag to .apply accessor (#4119)

  • Add selected plot option to control selected glyphs in bokeh (#4281)

  • Improve default Sankey node_padding heuristic (#4253)

  • Add hooks plot option for Plotly backend (#4157)

  • Support for split Violin plots in bokeh (#4112)

Bug fixes:

  • Fixed radial HeatMap sizing issues (#4162)

  • Switched to Panel for rendering machinery fixing various export issues (#3683)

  • Handle updating of user supplied HoverTool in bokeh (#4266)

  • Fix issues with single value datashaded plots (#3673)

  • Fix legend layout issues (#3786)

  • Fix linked axes issues with mixed date, categorical and numeric axes in bokeh (#3845)

  • Fixed handling of repeated dimensions in PandasInterface (#4139)

  • Fixed various issues related to widgets (#3868, #2885, #1677, #3212, #1059, #3027, #3777)

Library compatibility:

  • Better support for Pandas 1.0 (#4254)

  • Compatibility with Bokeh 2.0 (#4226)

Migration notes:

  • Geometry .iloc now indexes by geometry instead of by datapoint. Convert to dataframe or dictionary before using .iloc to access individual datapoints (#4104)

  • Padding around plot elements is now enabled by default, to revert set hv.config.node_padding = 0 (#1090)

  • Removed Bars group_index and stack_index options, which are now controlled using the stacked option (#3985)

  • .table is deprecated; use .collapse method instead and cast to Table (#3985)

  • HoloMap.split_overlays is deprecated and is now a private method (#3985)

  • Histogram.edges and Histogram.values properties are deprecated; use dimension_values (#3985)

  • Element.collapse_data is deprecated; use the container’s .collapse method instead (#3985)

  • hv.output filename argument is deprecated; use instead (#3985)

Version 1.12

Version 1.12.7

This a very minor hotfix release fixing an important bug related to axiswise normalization between plots. Many thanks to @srp3003 and @philippjfr for contributing to this release.


  • Add styles attribute to PointDraw stream for consistency with other drawing streams (#3819)

Bug fixes:

  • Fixed shared_axes/axiswise regression (#4097)

Version 1.12.6

This is a minor release containing a large number of bug fixes thanks to the contributions from @joelostblom, @ahuang11, @chbrandt, @randomstuff, @jbednar and @philippjfr. It also contains a number of enhancements. This is the last planned release in the 1.12.x series.


  • Ensured that shared_axes option on layout plots is respected across backends (#3410)

  • Allow plotting partially irregular (curvilinear) mesh (#3952)

  • Add support for dependent functions in dynamic operations (#3975, #3980)

  • Add support for fast QuadMesh rasterization with datashader >= 0.8 (#4020)

  • Allow passing Panel widgets as operation parameter (#4028)

Bug fixes:

  • Fixed issue rounding datetimes in Curve step interpolation (#3958)

  • Fix resampling of categorical colorcet colormaps (#3977)

  • Ensure that changing the Stream source deletes the old source (#3978)

  • Ensure missing hover tool does not break plot (#3981)

  • Ensure .apply work correctly on HoloMaps (#3989, #4025)

  • Ensure Grid axes are always aligned in bokeh (#3916)

  • Fix hover tool on Image and Raster plots with inverted axis (#4010)

  • Ensure that DynamicMaps are still linked to streams after groupby (#4012)

  • Using hv.renderer no longer switches backends (#4013)

  • Ensure that Points/Scatter categorizes data correctly when axes are inverted (#4014)

  • Fixed error creating legend for matplotlib Image artists (#4031)

  • Ensure that unqualified Options objects are supported (#4032)

  • Fix bounds check when constructing Image with ImageInterface (#4035)

  • Ensure elements cannot be constructed with wrong number of columns (#4040)

  • Ensure streaming data works on bokeh server (#4041)


  • Ensure HoloViews is fully compatible with xarray 0.13.0 (#3973)

  • Ensure that deprecated matplotlib 3.1 rcparams do not warn (#4042)

  • Ensure compatibility with new legend options in bokeh 1.4.0 (#4036)

Version 1.12.5

This is a very minor bug fix release ensuring compatibility with recent releases of dask.


  • Ensure that HoloViews can be imported when dask is installed but dask.dataframe is not. (#3900)

  • Fix for rendering Scatter3D with matplotlib 3.1 (#3898)

Version 1.12.4

This is a minor release with a number of bug and compatibility fixes as well as a number of enhancements.

Many thanks to recent @henriqueribeiro, @poplarShift, @hojo590, @stuarteberg, @justinbois, @schumann-tim, @ZuluPro and @jonmmease for their contributions and the many users filing issues.


  • Add numpy log to dim transforms (#3731)

  • Make Buffer stream following behavior togglable (#3823)

  • Added internal methods to access dask arrays and made histogram operation operate on dask arrays (#3854)

  • Optimized range finding if Dimension.range is set (#3860)

  • Add ability to use functions annotated with param.depends as DynamicMap callbacks (#3744)

Bug fixes:

  • Fixed handling datetimes on Spikes elements (#3736)

  • Fix graph plotting for unsigned integer node indices (#3773)

  • Fix sort=False on GridSpace and GridMatrix (#3769)

  • Fix extent scaling on VLine/HLine annotations (#3761)

  • Fix BoxWhisker to match convention (#3755)

  • Improved handling of custom array types (#3792)

  • Allow setting cmap on HexTiles in matplotlib (#3803)

  • Fixed handling of data_aspect in bokeh backend (#3848, #3872)

  • Fixed legends on bokeh Path plots (#3809)

  • Ensure Bars respect xlim and ylim (#3853)

  • Allow setting Chord edge colors using explicit colormapping (#3734)


  • Improve compatibility with deprecated matplotlib rcparams (#3745, #3804)

Backwards incompatible changes:

  • Unfortunately due to a major mixup the data_aspect option added in 1.12.0 was not correctly implemented and fixing it changed its behavior significantly (inverting it entirely in some cases).

  • A mixup in the convention used to compute the whisker of a box-whisker plots was fixed resulting in different results going forward.

Version 1.12.3

This is a minor release primarily focused on a number of important bug fixes. Thanks to our users for reporting issues, and special thanks to the internal developers @philippjfr and @jlstevens and external developers including @poplarShift, @fedario and @odoublewen for their contributions.

Bug fixes:

  • Fixed regression causing unhashable data to cause errors in streams (#3681)

  • Ensure that handles non-HoloViews objects (#3689)

  • Ensure that DataLink handles data containing NaNs (#3694)

  • Ensure that bokeh backend handles Cycle of markers (#3706)

  • Fix for using opts method on DynamicMap (#3691)

  • Ensure that bokeh backend handles DynamicMaps with variable length NdOverlay (#3696)

  • Fix default width/height setting for HeatMap (#3703)

  • Ensure that dask imports handle modularity (#3685)

  • Fixed regression in xarray data interface (#3724)

  • Ensure that RGB hover displays the integer RGB value (#3727)

  • Ensure that param streams handle subobjects (#3728)

Version 1.12.2

This is a minor release with a number of important bug fixes and a small number of enhancements. Many thanks to our users for reporting these issues, and special thanks to our internal developers @philippjfr, @jlstevens and @jonmease and external contributors incluing @ahuang11 and @arabidopsis for their contributions to the code and the documentation.


  • Add styles argument to draw tool streams to allow cycling colors when drawing glyphs (#3612)

  • Add ability to define alpha on (data)shade operation (#3611)

  • Ensure that categorical plots respect Dimension.values order (#3675)


  • Compatibility with Plotly 3.8 (#3644)

Bug fixes:

  • Ensure that bokeh server plot updates have the exclusive Document lock (#3621)

  • Ensure that Dimensioned streams are inherited on __mul__ (#3658)

  • Ensure that bokeh hover tooltips are updated when dimensions change (#3609)

  • Fix DynamicMap.event method for empty streams (#3564)

  • Fixed handling of datetimes on Path plots (#3464, #3662)

  • Ensure that resampling operations do not cause event loops (#3614)

Backward compatibility:

  • Added color cycles on Violin and BoxWhisker elements due to earlier regression (#3592)

Version 1.12.1

This is a minor release that pins to the newly released Bokeh 1.1 and adds support for parameter instances as streams:


  • Add support for passing in parameter instances as streams (#3616)

Version 1.12.0

This release provides a number of exciting new features as well as a set of important bug fixes. Many thanks to our users for reporting these issues, and special thanks to @ahuang11, @jonmmease, @poplarShift, @reckoner, @scottclowe and @syhooper for their contributions to the code and the documentation.


  • New plot options for controlling layouts including a responsive mode as well as improved control over aspect using the newly updated bokeh layout engine (#3450, #3575)

  • Added a succinct and powerful way of creating DynamicMaps from functions and methods via the new .apply method (#3554, #3474)


  • Added a number of new plot options including a clabel param for colorbars (#3517), exposed Sankey font size (#3535) and added a radius for bokeh nodes (#3556)

  • Switched notebook output to use an HTML mime bundle instead of separate HTML and JS components (#3574)

  • Improved support for style mapping constant values via dim.categorize (#3578)

Bug fixes:

Version 1.11

Version 1.11.3

This is the last micro-release in the 1.11 series providing a number of important fixes. Many thanks to our users for reporting these issues and @poplarShift and @henriqueribeiro for contributing a number of crucial fixes.

Bug fixes:

  • All unused Options objects are now garbage collected fixing the last memory leak (#3438)

  • Ensured updating of size on matplotlib charts does not error (#3442)

  • Fix casting of datetimes on dask dataframes (#3460)

  • Ensure that calling redim does not break streams and links (#3478)

  • Ensure that matplotlib polygon plots close the edge path (#3477)

  • Fixed bokeh ArrowPlot error handling colorbars (#3476)

  • Fixed bug in angle conversion on the VectorField if invert_axes (#3488)

  • Ensure that all non-Annotation elements support empty constructors (#3511)

  • Fixed bug handling out-of-bounds errors when using tap events on datetime axis (#3519)


  • Apply Labels element offset using a bokeh transform allowing Labels element to share data with original data (#3445)

  • Allow using datetimes in xlim/ylim/zlim (#3491)

  • Optimized rendering of TriMesh wireframes (#3495)

  • Add support for datetime formatting when hovering on Image/Raster (#3520)

  • Added Tiles element from GeoViews (#3515)

Version 1.11.2

This is a minor bug fix release with a number of minor but important bug fixes. Special thanks to @darynwhite for his contributions.

Bug fixes:

  • Fixed persisting options during clone on Overlay (#3435)

  • Ensure cftime datetimes are displayed as a slider (#3413)

  • Fixed timestamp selections on streams (#3427)

  • Compatibility with pandas 0.24.0 release (#3433)


Version 1.11.1

This is a minor bug fix release with a number of important bug fixes, enhancements and updates to the documentation. Special thanks to Andrew Huang (@ahuang11), @garibarba and @Safrone for their contributions.

Bug fixes:

  • Fixed bug plotting adjoined histograms in matplotlib (#3377)

  • Fixed bug updating bokeh RGB alpha value (#3371)

  • Handled issue when colorbar limits were equal in bokeh (#3382)

  • Fixed bugs plotting empty Violin and BoxWhisker elements (#3397, #3405)

  • Fixed handling of characters that have no uppercase on Layout and Overlay objects ((#3403)

  • Fixed bug updating Polygon plots in bokeh (#3409)


  • Provide control over gridlines ticker and mirrored axis ticker by default (#3398)

  • Enabled colorbars on CompositePlot classes such as Graphs, Chords etc. (#3397)

  • Ensure that xarray backend retains dimension metadata when casting element (#3401)

  • Consistently support clim options (#3382)


  • Completed updates from .options to .opts API in the documentation (#3364, #3367)

Version 1.11.0

This is a major release containing a large number of features and API improvements. Specifically this release was devoted to improving the general usability and accessibility of the HoloViews API and deprecating parts of the API in anticipation for the 2.0 release. To enable deprecation warnings for these deprecations set:

hv.config.future_deprecations = True

The largest updates to the API relate to the options system which is now more consistent, has better validation and better supports notebook users without requiring IPython magics. The new dim transform generalizes the mapping from data dimensions to visual dimensions, greatly increasing the expressive power of the options system. Please consult the updated user guides for more information.

Special thanks for the contributions by Andrew Huang (@ahuang11), Julia Signell (@jsignell), Jon Mease (@jonmmease), and Zachary Barry (@zbarry).


  • Generalized support for style mapping using dim transforms (2152)

  • Added alternative to opts magic with tab-completion (#3173)

  • Added support for Polygons with holes and improved contours operation (#3092)

  • Added support for Links to express complex interactivity in JS (#2832)

  • Plotly improvements including support for plotly 3.0 (#3194), improved support for containers (#3255) and support for more elements (#3256)

  • Support for automatically padding plots using new padding option (#2293)

  • Added xlim/ylim plot options to simplify setting axis ranges (#2293)

  • Added xlabel/ylabel plot options to simplify overriding axis labels (#2833)

  • Added xformatter/yformatter plot options to easily override tick formatter (#3042)

  • Added active_tools options to allow defining tools to activate on bokeh plot initialization (#3251)

  • Added FreehandDraw stream to allow freehand drawing on bokeh plots (#2937)

  • Added support for cftime types for dates which are not supported by standard datetimes and calendars (#2728)

  • Added top-level save and render functions to simplify exporting plots (#3134)

  • Added support for updating Bokeh bokeh legends (#3139)

  • Added support for indicating directed graphs with arrows (#2521)


  • Improved import times (#3055)

  • Adopted Google style docstring and documented most core methods and classes (#3128

Bug fixes:

  • GIF rendering fixed under Windows (#3151)

  • Fixes for hover on Path elements in bokeh (#2472, #2872)

  • Fixes for handling TriMesh value dimensions on rasterization (#3050)


  • finalize_hooks renamed to hooks (#3134)

  • All *_index and related options are now deprecated including color_index, size_index, scaling_method, scaling_factor, size_fn (#2152)

  • Bars group_index, category_index and stack_index are deprecated in favor of stacked option (#2828)

  • iris interface was moved to GeoViews (#3054)

  • Top-level namespace was cleaned up (#2224)

  • ElementOpration, Layout.display and mdims argument to .to now fully removed (#3128)

  • Element.mapping, ItemTable.values, Element.table, HoloMap.split_overlays, ViewableTree.from_values, ViewableTree.regroup and Element.collapse_data methods now marked for deprecation (#3128)

Version 1.10

Version 1.10.8

This a likely the last hotfix release in the 1.10.x series containing fixes for compatibility with bokeh 1.0 and matplotlib 3.0. It also contains a wide array of fixes contributed and reported by users:

Special thanks for the contributions by Andrew Huang (@ahuang11), Julia Signell (@jsignell), and Zachary Barry (@zbarry).


  • Add support for labels, choord, hextiles and area in .to interface (#2924)

  • Allow defining default bokeh themes as strings on Renderer (#2972)

  • Allow specifying fontsize for categorical axis ticks in bokeh (#3047)

  • Allow hiding toolbar without disabling tools (#3074)

  • Allow specifying explicit colormapping on non-categorical data (#3071)

  • Support for displaying xarray without explicit coordinates (#2968)


  • Allow dictionary data to reference values which are not dimensions (#2855, #2859)

  • Fixes for zero and non-finite ranges in datashader operation (#2860, #2863, #2869)

  • Fixes for CDSStream and drawing tools on bokeh server (#2915)

  • Fixed issues with nans, datetimes and streaming on Area and Spread elements (#2951, c55b044)

  • General fixes for datetime handling (#3005, #3045, #3075)

  • Fixed handling of curvilinear and datetime coordinates on QuadMesh (#3017, #3081)

  • Fixed issue when inverting a shared axis in bokeh (#3083)

  • Fixed formatting of values in HoloMap widgets (#2954)

  • Fixed setting fontsize for z-axis label (#2967)


  • Suppress warnings about rcParams in matplotlib 3.0 (#3013, #3058, #3104)

  • Fixed incompatibility with Python <=3.5 (#3073)

  • Fixed incompatibility with bokeh >=1.0 (#3051)


Version 1.10.7

This a very minor hotfix release mostly containing fixes for datashader aggregation of empty datasets:


  • Fix datashader aggregation of empty and zero-range data (#2860, #2863)

  • Disable validation for additional, non-referenced keys in the DictInterface (#2860)

  • Fixed frame lookup for non-overlapping dimensions (#2861)

  • Fixed ticks on log Colorbar if low value <= 0 (#2865)

Version 1.10.6

This another minor bug fix release in the 1.10 series and likely the last one before the upcoming 1.11 release. In addition to some important fixes relating to datashading and the handling of dask data, this release includes a number of enhancements and fixes.


  • Added the ability to specify color intervals using the color_levels plot options (#2797)

  • Allow defining port and multiple websocket origins on (#2801)

  • Support for datetimes in Curve step interpolation (#2757)

  • Add ability to mute legend by default (#2831)

  • Implemented ability to collapse and concatenate gridded data (#2762)

  • Add support for cumulative histogram and explicit bins (#2812)


  • Dataset discovers multi-indexes on dask dataframes (#2789)

  • Fixes for datashading NdOverlays with datetime axis and data with zero range (#2829, #2842)

Version 1.10.5

This is a minor bug fix release containing a mixture of small enhancements, a number of important fixes and improved compatibility with pandas 0.23.


  • Graph.from_networkx now extracts node and edge attributes from networkx graphs (#2714)

  • Added throttling support to scrubber widget (#2748)

  • histogram operation now works on datetimes (#2719)

  • Legends on NdOverlay containing overlays now supported (#2755)

  • Dataframe indexes may now be referenced in .to conversion (#2739)

  • Reindexing a gridded Dataset without arguments now behaves consistently with NdMapping types and drops scalar dimensions making it simpler to drop dimensions after selecting (#2746)


  • Various fixes for QuadMesh support including support for contours, nan coordinates and inverted coordinates (#2691, #2702, #2771)

  • Fixed bugs laying out complex layouts in bokeh (#2740)

  • Fix for adding value dimensions to an xarray dataset (#2761)

Version 1.10.4

This is a minor bug fix release including a number of crucial fixes for issues reported by our users.


  • Allow setting alpha on Image/RGB/HSV and Raster types in bokeh (#2680)


  • Fixed bug running display multiple times in one cell (#2677)

  • Avoid sending hover data unless explicitly requested (#2681)

  • Fixed bug slicing xarray with tuples (#2674)

Version 1.10.3

This is a minor bug fix release including a number of crucial fixes for issues reported by our users.


  • The dimensions of elements may now be changed allowing updates to axis labels and table column headers (#2666)


  • Fix for labelled plot option (#2643)

  • Optimized initialization of dynamic plots specifying a large parameter space (#2646)

  • Fixed unicode and reversed axis slicing issues in XArrayInterface (#2658, #2653)

  • Fixed widget sorting issues when applying dynamic groupby (#2641)


  • The PlotReset reset parameter was renamed to resetting to avoid clash with a method (#2665)

  • PolyDraw tool data parameter now always indexed with ‘xs’ and ‘ys’ keys for consistency (#2650)

Version 1.10.2

This is a minor bug fix release with a number of small fixes for features and regressions introduced in 1.10:


  • Exposed Image hover functionality for upcoming bokeh 0.12.16 release (#2625)


  • Minor fixes for newly introduced elements and plots including Chord (#2581) and RadialHeatMap (#2610

  • Fixes for .options method including resolving style and plot option clashes (#2411) and calling it without arguments (#2630)

  • Fixes for IPython display function (#2587) and display_formats (#2592)


  • BoxWhisker and Bars width bokeh style options and Arrow matplotlib fontsize option are deprecated (#2411)

Version 1.10.1

This is a minor bug fix release with a number of fixes for regressions and minor bugs introduced in the 1.10.0 release:


  • Fixed static HTML export of notebooks (#2574)

  • Ensured Chord element allows recurrent edges (#2583)

  • Restored behavior for inferring key dimensions order from XArray Dataset (#2579)

  • Fixed Selection1D stream on bokeh server after changes in bokeh 0.12.15 (#2586)

Version 1.10.0

This is a major release with a large number of new features and bug fixes, as well as a small number of API changes. Many thanks to the numerous users who filed bug reports, tested development versions, and contributed a number of new features and bug fixes, including special thanks to @mansenfranzen, @ea42gh, @drs251 and @jakirkham.

JupyterLab support:

  • Full compatibility with JupyterLab when installing the jupyterlab_holoviews extension (#687)

New components:

  • Added Sankey element to plot directed flow graphs (#1123)

  • Added TriMesh element and datashading operation to plot small and large irregular meshes (#2143)

  • Added a Chord element to draw flow graphs between different nodes (#2137, #2143)

  • Added HexTiles element to plot data binned into a hexagonal grid (#1141)

  • Added Labels element to plot a large number of text labels at once (as data rather than as annotations) (#1837)

  • Added Div element to add arbitrary HTML elements to a Bokeh layout (#2221)

  • Added PointDraw, PolyDraw, BoxEdit and PolyEdit streams to allow drawing, editing, and annotating glyphs on a Bokeh plot, and syncing the resulting data to Python (#2268)


  • Added radial HeatMap option to allow plotting heatmaps with a cyclic x-axis (#2139)

  • All elements now support declaring bin edges as well as centers allowing Histogram and QuadMesh to become first class Dataset types (#547)

  • When using widgets, their initial or default value can now be set via the Dimension.default parameter (#704)

  • n-dimensional Dask arrays are now supported directly via the gridded dictionary data interface (#2305)

  • Added new Styling Plots and Colormaps user guides, including new functionality for working with colormaps.


  • Improvements to exceptions (#1127)

  • Toolbar position and merging (via a new merge_toolbar option) can now be controlled for Layout and Grid plots (#1977)

  • Bokeh themes can now be applied at the renderer level (#1861)

  • Dataframe and Series index can now be referenced by name when constructing an element (#2000)

  • Option-setting methods such as .opts, .options and hv.opts now allow specifying the backend instead of defaulting to the current backend (#1801)

  • Handled API changes in streamz 0.3.0 in Buffer stream (#2409)

  • Supported GIF output on windows using new Matplotlib pillow animation support (#385)

  • Provided simplified interface to rasterize most element types using datashader (#2465)

  • Bivariate element now support levels as a plot option (#2099)

  • NdLayout and GridSpace now consistently support * overlay operation (#2075)

  • The Bokeh backend no longer has a hard dependency on Matplotlib (#829)

  • DynamicMap may now return (Nd)Overlay with varying number of elements (#1388)

  • In the notebook, deleting or re-executing a cell will now delete the plot and clean up any attached streams (#2141)

  • Added color_levels plot option to set discrete number of levels during colormapping (#2483)

  • Expanded the Large Data user guide to show examples of all Element and Container types supported for datashading and give performance guidelines.


  • Layout and Overlay objects no longer create lower-case nodes on attribute access (#2331)

  • Dimension.step now correctly respects both integer and float steps (#1707)

  • Fixed timezone issues when using linked streams on datetime axes (#2459)

Changes affecting backwards compatibility:

  • Image elements now expect and validate regular sampling (#1869); for genuinely irregularly sampled data QuadMesh should be used.

  • Tabular elements will no longer default to use ArrayInterface, instead preferring pandas and dictionary data formats (#1236)

  • Cycle/Palette values are no longer zipped together; instead they now cycle independently (#2333)

  • The default color Cycle was expanded to provide more unique colors (#2483)

  • Categorical colormapping was made consistent across backends, changing the behavior of categorical Matplotlib colormaps (#2483)

  • Disabled auto-indexable property of the Dataset baseclass, i.e. if a single column is supplied no integer index column is added automatically (#2522)

Version 1.9

Version 1.9.5

This release includes a very small number of minor bugfixes and a new feature to simplify setting options in python:


  • Added .options method for simplified options setting. (#2306)


  • Allow plotting bytes datausing the Bokeh backend in python3 (#2357)

  • Allow .range to work on data with heterogeneous types in Python 3 (#2345)

  • Fixed bug streaming data containing datetimes using bokeh>-0.12.14 (#2383)

Version 1.9.4

This release contains a small number of important bug fixes:

  • Compatibility with recent versions of Dask and pandas (#2329)

  • Fixed bug referencing columns containing non-alphanumeric characters in Bokeh Tables (#2336)

  • Fixed issue in regrid operation (2337)

  • Fixed issue when using datetimes with datashader when processing ranges (#2344)

Version 1.9.3

This release contains a number of important bug fixes and minor enhancements.

Particular thanks to @jbampton, @ea42gh, @laleph, and @drs251 for a number of fixes and improvements to the documentation.


  • Optimized rendering of stream based OverlayPlots (#2253)

  • Added merge_toolbars and toolbar options to control toolbars on Layout and Grid plots (#2289)

  • Optimized rendering of VectorField (#2314)

  • Improvements to documentation (#2198, #2220, #2233, #2235, #2316)

  • Improved Bokeh Table formatting (#2267)

  • Added support for handling types (#2267)

  • Add support for pre- and post-process hooks on operations (#2246, #2334)


  • Fix for Bokeh server widgets (#2218)

  • Fix using event based streams on Bokeh server (#2239, #2256)

  • Switched to drawing Distribution, Area and Spread using patch glyphs in Bokeh fixing legends (#2225)

  • Fixed categorical coloring of Polygons/Path elements in Matplotlib (#2259)

  • Fixed bug computing categorical datashader aggregates (#2295)

  • Allow using Empty object in AdjointLayout (#2275)

API Changes:

  • Renamed Trisurface to TriSurface for future consistency (#2219)

Version 1.9.2

This release is a minor bug fix release patching various issues which were found in the 1.9.1 release.


  • Improved the Graph element, optimizing the constructor and adding support for defining a edge_color_index (#2145)

  • Added support for adding jitter to Bokeh Scatter and Points plots (e56208)


  • Ensure dimensions, group and label are inherited when casting Image to QuadMesh (#2144)

  • Handle compatibility for Bokeh version >- 0.12.11 (#2159)

  • Fixed broken Bokeh ArrowPlot (#2172)

  • Fixed Pointer based streams on datetime axes (#2179)

  • Allow constructing and plotting of empty Distribution and Bivariate elements (#2190)

  • Added support for hover info on Bokeh BoxWhisker plots (#2187)

  • Fixed bug attaching streams to (Nd)Overlay types (#2194)

Version 1.9.1

This release is a minor bug fix release patching various issues which were found in the 1.9.0 release.


  • Exposed min_alpha parameter on datashader shade and datashade operations (#2109)


  • Fixed broken Bokeh server linked stream throttling (#2112)

  • Fixed bug in Bokeh callbacks preventing linked streams using Bokeh’s on_event callbacks from working (#2112)

  • Fixed insufficient validation issue for Image and bugs when applying regrid operation to xarray based Images (#2117)

  • Fixed handling of dimensions and empty elements in univariate_kde and bivariate_kde operations (#2103)

Version 1.9.0

This release includes a large number of long awaited features, improvements and bug fixes, including streaming and graph support, binary transfer of Bokeh data, fast Image/RGB regridding, first-class statistics elements and a complete overhaul of the geometry elements.

Particular thanks to all users and contributers who have reported issues and submitted pull requests.


  • The kdim and vdim keyword arguments are now positional making the declaration of elements less verbose (e.g. Scatter(data, ‘x’, ‘y’)) (#1946)

  • Added Graph, Nodes, and EdgePaths elements adding support for plotting network graphs (#1829)

  • Added datashader based regrid operation for fast Image and RGB regridding (#1773)

  • Added support for binary transport when plotting with Bokeh, providing huge speedups for dynamic plots (#1894, #1896)

  • Added Pipe and Buffer streams for streaming data support (#2011)

  • Add support for datetime axes on Image, RGB and when applying datashading and regridding operations (#2023)

  • Added Distribution and Bivariate as first class elements which can be plotted with Matplotlib and Bokeh without depending on seaborn (#1985)

  • Completely overhauled support for plotting geometries with Path, Contours and Polygons elements including support for coloring individual segments and paths by value (#1991)


  • Add support for adjoining all elements on Matplotlib plots (#1033)

  • Improved exception handling for data interfaces (#2041)

  • Add groupby argument to histogram operation (#1725)

  • Add support for reverse sort on Dataset elements (#1843)

  • Added support for invert_x/yaxis on all elements (#1872, #1919)


  • Fixed a bug in Matplotlib causing the first frame in gif and mp4 getting stuck (#1922)

  • Fixed various issues with support for new nested categorical axes in Bokeh (#1933)

  • A large range of other bug fixes too long to list here.

Changes affecting backwards compatibility:

  • The contours operation no longer overlays the contours on top of the supplied Image by default and returns a single Contours/Polygons rather than an NdOverlay of them (#1991)

  • The values of the Distribution element should now be defined as a key dimension (#1985)

  • The seaborn interface was removed in its entirety being replaced by first class support for statistics elements such as Distribution and Bivariate (#1985)

  • Since kdims and vdims can now be passed as positional arguments the bounds argument on Image is no longer positional (#1946).

  • The datashade and shade cmap was reverted back to blue due to issues with the fire cmap against a white background. (#2078)

  • Dropped all support for Bokeh versions older than 0.12.10

  • histogram operation now returns Histogram elements with less generic value dimension and customizable label (#1836)

Version 1.8

Version 1.8.4

This bugfix release includes a number of critical fixes for compatiblity with Bokeh 0.12.9 along with various other bug fixes. Many thanks to our users for various detailed bug reports, feedback and contributions.


  • Fixes to register BoundsXY stream. (#1826)

  • Fix for Bounds streams on Bokeh server. (#1883)

  • Compatibility with Matplotlib 2.1 (#1842)

  • Fixed bug in scrubber widget and support for scrubbing discrete DynamicMaps (#1832)

  • Various fixes for compatibility with Bokeh 0.12.9 (#1849, #1866)

  • Fixes for setting QuadMesh ranges. (#1876)

  • Fixes for inverting Image/RGB/Raster axes in Bokeh. (#1872)

Version 1.8.3

This bugfix release fixes a number of minor issues identified since the last release:


  • Add support for setting the Bokeh sizing_mode as a plot option (#1813)


  • Handle StopIteration on DynamicMap correctly. (#1792)

  • Fix bug with linked streams on empty source element (#1725)

  • Compatibility with latest datashader 0.6.0 release (#1773)

  • Fixed missing HTML closing tag in extension (#1797, #1809)

  • Various fixes and improvements for documentation (#1664, #1796)

Version 1.8.2

This bugfix release addresses a number of minor issues identified since the 1.8.1 release:


  • Added support for groupby to histogram operation. (#1725)


  • Fixed problem with HTML export due to new extension logos. (#1778)

  • Replaced deprecated __call__ usage with opts method throughout codebase. (#1759, #1763, #1779)

  • Fixed pip installation. (#1782)

  • Fixed miscellaneous bugs (#1724, #1739, #1711)

Version 1.8.1

This bugfix release addresses a number of minor issues identified since the 1.8 release:


  • All enabled plotting extension logos now shown (#1694)


  • Updated search ordering when looking for holoviews.rc (#1700)

  • Fixed lower bound inclusivity bug when no upper bound supplied (#1686)

  • Raise SkipRendering error when plotting nested layouts (#1687)

  • Added safety margin for grid axis constraint issue (#1695)

  • Fixed bug when using +framewise (#1685)

  • Fixed handling of Spacer models in sparse grid (#1682)

  • Renamed Bounds to BoundsXY for consistency (#1672)

  • Fixed Bokeh log axes with axis lower bound <-0 (#1691)

  • Set default datashader cmap to fire (#1697)

  • Set SpikesPlot color index to None by default (#1671)

  • Documentation fixes (#1662, #1665, #1690, #1692, #1658)

Version 1.8.0

This release includes a complete and long awaited overhaul of the HoloViews documentation and website, with a new gallery, getting-started section, and logo. In the process, we have also improved and made small fixes to all of the major new functionality that appeared in 1.7.0 but was not properly documented until now. We want to thank all our old and new contributors for providing feedback, bug reports, and pull requests.

Major features:

  • Completely overhauled the documentation and website (#1384, #1473, #1476, #1473, #1537, #1585, #1628, #1636)

  • Replaced dependency on bkcharts with new Bokeh bar plot (#1416) and Bokeh BoxWhisker plot (#1604)

  • Added support for drawing the Arrow annotation in Bokeh (#1608)

  • Added periodic method DynamicMap to schedule recurring events (#1429)

  • Cleaned up the API for deploying to Bokeh server (#1444, #1469, #1486)

  • Validation of invalid backend specific options (#1465)

  • Added utilities and entry points to convert notebooks to scripts including magics (#1491)

  • Added support for rendering to png in Bokeh backend (#1493)

  • Made Matplotlib and Bokeh styling more consistent and dropped custom Matplotlib rc file (#1518)

  • Added iloc and ndloc method to allow integer based indexing on tabular and gridded datasets (#1435)

  • Added option to restore case sensitive completion order by setting hv.extension.case_sensitive_completion-True in python or via holoviews.rc file (#1613)

Other new features and improvements:

  • Optimized datashading of NdOverlay (#1430)

  • Expose last DynamicMap args and kwargs on Callable (#1453)

  • Allow colormapping Contours Element (#1499)

  • Add support for fixed ticks with labels in Bokeh backend (#1503)

  • Added a clim parameter to datashade controlling the color range (#1508)

  • Add support for wrapping xarray DataArrays containing Dask arrays (#1512)

  • Added support for aggregating to target Image dimensions in datashader aggregate operation (#1513)

  • Added top-level hv.extension and hv.renderer utilities (#1517)

  • Added support for Splines defining multiple cubic splines in Bokeh (#1529)

  • Add support for redim.label to quickly define dimension labels (#1541)

  • Add BoundsX and BoundsY streams (#1554)

  • Added support for adjoining empty plots (#1561)

  • Handle zero-values correctly when using logz colormapping option in Matplotlib (#1576)

  • Define a number of Cycle and Palette defaults across backends (#1605)

  • Many other small improvements and fixes (#1399, #1400, #1405, #1412, #1413, #1418, #1439, #1442, #1443, #1467, #1485, #1505, #1493, #1509, #1524, #1543, #1547, #1560, #1603)

Changes affecting backwards compatibility:

  • Renamed ElementOperation to Operation (#1421)

  • Removed stack_area operation in favor of Area.stack classmethod (#1515)

  • Removed all mpld3 support (#1516)

  • Added opts method on all types, replacing the now-deprecated __call__ syntax to set options (#1589)

  • Styling changes for both Matplotlib and Bokeh, which can be reverted for a notebook with the config option of hv.extension. For instance, hv.extension('bokeh', config-dict(style_17-True)) (#1518)

Version 1.7

Version 1.7.0

This version is a major new release incorporating seven months of work involving several hundred PRs and over 1700 commits. Highlights include extensive new support for easily building highly interactive Bokeh plots, support for using datashader-based plots for working with large datasets, support for rendering images interactively but outside of the notebook, better error handling, and support for Matplotlib 2.0 and Bokeh 0.12.5. The PRs linked below serve as initial documentation for these features, and full documentation will be added in the run-up to HoloViews 2.0.

Major features and improvements:

Other new features and improvements:

Changes affecting backwards compatibility:

  • Automatic coloring and sizing on Points now disabled (PR #748).

  • Deprecated max_branches output magic option (PR #1293).

  • Deprecated GridImage (PR #1292, #1223).

  • Deprecated NdElement (PR #1191).

  • Deprecated DFrame conversion methods (PR #1065).

  • Banner text removed from notebook_extension() (PR #1231, #1291).

  • Bokeh’s Matplotlib compatibility module removed (PR #1239).

  • ls as Matplotlib linestyle alias dropped (PR #1203).

  • mdims argument of conversion interface renamed to groupby (PR #1066).

  • Replaced global alias state with Dimension.label (#1083).

  • DynamicMap only update ranges when set to framewise

  • Deprecated DynamicMap sampled, bounded, open and generator modes (#969, #1305)

  • Layout.display method is now deprecated (#1026)

  • Layout fix for Matplotlib figures with non-square aspects introduced in 1.6.2 (PR #826), now enabled by default.

Version 1.6

Version 1.6.2

Bug fix release with various fixes for gridded data backends and optimizations for Bokeh.

  • Optimized Bokeh event messaging, reducing the average json payload by 30-50% (PR #807).

  • Fixes for correctly handling NdOverlay types returned by DynamicMaps (PR #814).

  • Added support for datetime64 handling in Matplotlib and support for datetime formatters on Dimension.type_formatters (PR #816).

  • Fixed handling of constant dimensions when slicing xarray datasets (PR #817).

  • Fixed support for passing custom dimensions to iris Datasets (PR #818).

  • Fixed support for add_dimension on xarray interface (PR #820).

  • Improved extents computation on Matplotlib SpreadPlot (PR #821).

  • Bokeh backend avoids sending data for static frames and empty events (PR #822).

  • Added major layout fix for figures with non-square aspects, reducing the amount of unnecessary whitespace (PR #826). Disabled by default until 1.7 release but can be enabled with:

from holoviews.plotting.mpl import LayoutPlot
LayoutPlot.v17_layout_format - True
LayoutPlot.vspace - 0.3

Version 1.6.1

Bug fix release following the 1.6 major release with major bug fixes for the grid data interfaces and improvements to the options system.

  • Ensured that style options incompatible with active backend are ignored (PR #802).

  • Added support for placing legends outside the plot area in Bokeh (PR #801).

  • Fix to ensure Bokeh backend does not depend on pandas (PR #792).

  • Fixed option system to ensure correct inheritance when redefining options (PR #796).

  • Major refactor and fixes for the grid based data backends (iris, xarray and arrays with coordinates) ensuring the data is oriented and transposed correctly (PR #794).

Version 1.6.0

A major release with an optional new data interface based on xarray, support for batching Bokeh plots for huge increases in performance, support for Bokeh 0.12 and various other fixes and improvements.

Features and improvements:

  • Made VectorFieldPlot more general with support for independent coloring and scaling (PR #701).

  • Iris interface now allows tuple and dict formats in the constructor (PR #709.

  • Added support for dynamic groupby on all data interfaces (PR #711).

  • Added an xarray data interface (PR #713).

  • Added the redim method to all Dimensioned objects making it easy to quickly change dimension names and attributes on nested objects #715).

  • Added support for batching plots (PR #715).

  • Support for Bokeh 0.12 release (PR #725).

  • Added support for logz option on Bokeh Raster plots (PR #729).

  • Bokeh plots now support custom tick formatters specified via Dimension value_format (PR #728).

Version 1.5

Version 1.5.0

A major release with a large number of new features including new data interfaces for grid based data, major improvements for DynamicMaps and a large number of bug fixes.

Features and improvements:

  • Added a grid based data interface to explore n-dimensional gridded data easily (PR #562).

  • Added data interface based on iris Cubes (PR #624).

  • Added support for dynamic operations and overlaying of DynamicMaps (PR #588).

  • Added support for applying groupby operations to DynamicMaps (PR #667).

  • Added dimension value formatting in widgets (PR #562).

  • Added support for indexing and slicing with a function (PR #619).

  • Improved throttling behavior on widgets (PR #596).

  • Major refactor of Matplotlib plotting classes to simplify implementing new Element plots (PR #438).

  • Added Renderer.last_plot attribute to allow easily debugging or modifying the last displayed plot (PR #538).

  • Added Bokeh QuadMeshPlot (PR #661).

Bug fixes:

  • Fixed overlaying of 3D Element types (PR #504).

  • Fix for Bokeh hovertools with dimensions with special characters (PR #524).

  • Fixed bugs in seaborn Distribution Element (PR #630).

  • Fix for inverted Raster.reduce method (PR #672).

  • Fixed Store.add_style_opts method (PR #587).

  • Fixed bug preventing simultaneous logx and logy plot options (PR #554).

Backwards compatibility:

  • Renamed Columns type to Dataset (PR #620).

Version 1.4

Version 1.4.3

A minor bugfix release to patch a number of small but important issues.

Fixes and improvements:

  • Added a DynamicMap Tutorial to explain how to explore very large or continuous parameter spaces in HoloViews (PR #470).

  • Various fixes and improvements for DynamicMaps including slicing (PR #488) and validation (PR #483) and serialization (PR #483)

  • Widgets containing Matplotlib plots now display the first frame from cache providing at least the initial frame when exporting DynamicMaps (PR #486)

  • Fixed plotting Bokeh plots using widgets in live mode, after changes introduced in latest Bokeh version (commit 1b87c91e9).

  • Fixed issue in coloring Point/Scatter objects by values (Issue #467).

Backwards compatibility:

  • The behavior of the scaling_factor on Point and Scatter plots has changed now simply multiplying area or width (as defined by the scaling_method). To disable scaling points by a dimension set size_index-None.

  • Removed hooks to display 3D Elements using the BokehMPLRawWrapper in Bokeh (PR #477)

  • Renamed the DynamicMap mode closed to bounded (PR #477)

Version 1.4.2

Over the past month since the 1.4.1 release, we have improved our infrastructure for building documentation, updated the main website and made several additional usability improvements.

Documentation changes:

  • Major overhaul of website and notebook building making it much easier to test user contributions (Issue #180, PR #429)

  • Major rewrite of the documentation (PR #401, PR #411)

  • Added Columnar Data Tutorial and removed most of Pandas Conversions as it is now supported by the core.

Fixes and improvements:

  • Major improvement for grid based layouts with varying aspects (PR #457)

  • Fix for interleaving %matplotline inline and holoviews plots (Issue #179)

  • Matplotlib legend z-orders and updating fixed (Issue #304, Issue #305)

  • color_index and size_index plot options support specifying dimension by name (Issue #391)

  • Added Area Element type for drawing area under or between Curves. (PR #427)

  • Fixed issues where slicing would remove styles applied to an Element. (Issue #423, PR #439)

  • Updated the title_format plot option to support a {dimensions} formatter (PR #436)

  • Improvements to Renderer API to allow JS and CSS requirements for exporting standalone widgets (PR #426)

  • Compatibility with the latest Bokeh 0.11 release (PR #393)

Version 1.4.1

Over the past two weeks since the 1.4 release, we have implemented several important bug fixes and have made several usability improvements.

New features:

  • Improved help system. It is now possible to recursively list all the applicable documentation for a composite object. In addition, the documentation may now be filtered using a regular expression pattern. (PR #370)

  • HoloViews now supports multiple active display hooks making it easier to use nbconvert. For instance, PNG data will be embedded in the notebook if the argument display_formats-[‘html’,’png’] is supplied to the notebook_extension. (PR #355)

  • Improvements to the display of DynamicMaps as well as many new improvements to the Bokeh backend including better VLines/HLines and support for the Bars element. (PR #367 , PR #362, PR #339).

  • New Spikes and BoxWhisker elements suitable for representing distributions as a sequence of lines or as a box-and-whisker plot. (PR #346, PR #339)

  • Improvements to the notebook_extension. For instance, executing hv.notebook_extension(‘bokeh’) will now load BokehJS and automatically activate the Bokeh backend (if available).

  • Significant performance improvements when using the groupby operation on HoloMaps and when working with highly nested datastructures. (PR #349, PR #359)

Notable bug fixes:

  • DynamicMaps are now properly integrated into the style system and can be customized in the same way as HoloMaps. (PR #368)

  • Widgets now work correctly when unicode is used in the dimension labels and values (PR #376).

Version 1.4.0

Over the past few months we have added several major new features and with the help of our users have been able to address a number of bugs and inconsistencies. We have closed 57 issues and added over 1100 new commits.

Major new features:

  • Data API: The new data API brings an extensible system of to add new data interfaces to column based Element types. These interfaces allow applying powerful operations on the data independently of the data format. The currently supported datatypes include NumPy, pandas dataframes and a simple dictionary format. (PR #284)

  • Backend API: In this release we completely refactored the rendering, plotting and IPython display system to make it easy to add new plotting backends. Data may be styled and pickled for each backend independently and renderers now support exporting all plotting data including widgets as standalone HTML files or with separate JSON data.

  • Bokeh backend: The first new plotting backend added via the new backend API. Bokeh plots allow for much faster plotting and greater interactivity. Supports most Element types and layouts and provides facilities for sharing axes across plots and linked brushing across plots. (PR #250)

  • DynamicMap: The new DynamicMap class allows HoloMap data to be generated on-the-fly while running a Jupyter IPython notebook kernel. Allows visualization of unbounded data streams and smooth exploration of large continuous parameter spaces. (PR #278)

Other features:

  • Easy definition of custom aliases for group, label and Dimension names, allowing easier use of LaTeX.

  • New Trisurface and QuadMesh elements.

  • Widgets now allow expressing hierarchical relationships between dimensions.

  • Added GridMatrix container for heterogeneous Elements and gridmatrix operation to generate scatter matrix showing relationship between dimensions.

  • Filled contour regions can now be generated using the contours operation.

  • Consistent indexing semantics for all Elements and support for boolean indexing for Columns and NdMapping types.

  • New hv.notebook_extension function offers a more flexible alternative to %load_ext, e.g. for loading other extensions hv.notebook_extension(bokeh-True).

Experimental features:

  • Bokeh callbacks allow adding interactivity by communicating between BokehJS tools and the IPython kernel, e.g. allowing downsampling based on the zoom level.

Notable bug fixes:

  • Major speedup rendering large HoloMaps (~ 2-3 times faster).

  • Colorbars now consistent for all plot configurations.

  • Style pickling now works correctly.

API Changes:

  • Dimension formatter parameter now deprecated in favor of value_format.

  • Types of Chart and Table Element data now dependent on selected interface.

  • DFrame conversion interface deprecated in favor of Columns pandas interface.

Version 1.3

Version 1.3.2

Minor bugfix release to address a small number of issues:


  • Added support for colorbars on Surface Element (1cd5281).

  • Added linewidth style option to SurfacePlot (9b6ccc5).

Bug fixes:

  • Fixed inversion inversion of y-range during sampling (6ff81bb).

  • Fixed overlaying of 3D elements (787d511).

  • Ensuring that underscore.js is loaded in widgets (f2f6378).

  • Fixed Python3 issue in Overlay.get (8ceabe3).

Version 1.3.1

Minor bugfix release to address a number of issues that weren’t caught in time for the 1.3.0 release with the addition of a small number of features:


  • Introduced new Spread element to plot errors and confidence intervals (30d3184).

  • ErrorBars and Spread elements now allow most Chart constructor types (f013deb).

Bug fixes:

  • Fixed unicode handling for dimension labels (061e9af).

  • Handling of invalid dimension label characters in widgets (a101b9e).

  • Fixed setting of fps option for MPLRenderer video output (c61b9df).

  • Fix for multiple and animated colorbars (5e1e4b5).

  • Fix to Chart slices starting or ending at zero (edd0039).

Version 1.3.0

Since the last release we closed over 34 issues and have made 380 commits mostly focused on fixing bugs, cleaning up the API and working extensively on the plotting and rendering system to ensure HoloViews is fully backend independent.

We’d again like to thank our growing user base for all their input, which has helped us in making the API more understandable and fixing a number of important bugs.


  • Allowed display of data structures which do not match the recommended nesting hierarchy (67b28f3, fbd89c3).

  • Dimensions now sanitized for .select, .sample and .reduce calls (6685633, 00b5a66).

  • Added holoviews.ipython.display function to render (and display) any HoloViews object, useful for IPython interact widgets (0fa49cd).

  • Table column widths now adapt to cell contents (be90a54).

  • Defaulting to Matplotlib ticking behavior (62e1e58).

  • Allowed specifying fixed figure sizes to Matplotlib via fig_inches tuples using (width, None) and (None, height) formats (632facd).

  • Constructors of Chart, Path and Histogram classes now support additional data formats (2297375).

  • ScrubberWidget now supports all figure formats (c317db4).

  • Allowed customizing legend positions on Bars Elements (5a12882).

  • Support for multiple colorbars on one axis (aac7b92).

  • .reindex on NdElement types now support converting between key and value dimensions allowing more powerful conversions. (03ac3ce)

  • Improved support for casting between Element types (cdaab4e, b2ad91b, ce7fe2d, 865b4d5).

  • The %%opts cell magic may now be used multiple times in the same cell (2a77fd0)

  • Matplotlib rcParams can now be set correctly per figure (751210f).

  • Improved OptionTree repr which now works with eval (2f824c1).

  • Refactor of rendering system and IPython extension to allow easy swapping of plotting backend (#141)

  • Large plotting optimization by computing tight bbox_inches once (e34e339).

  • Widgets now cache frames in the DOM, avoiding flickering in some browsers and make use of jinja2 template inheritance. (fc7dd2b)

  • Calling a HoloViews object without arguments now clears any associated custom styles. (9e8c343)

API Changes

  • Renamed key_dimensions and value_dimensions to kdims and vdims respectively, while providing backward compatibility for passing and accessing the long names (8feb7d2).

  • Combined x/y/zticker plot options into x/y/zticks parameters which now accept an explicit number of ticks, an explicit list of tick positions (and labels), and a Matplotlib tick locator.

  • Changed backend options in %output magic, nbagg and d3 are now modes of the Matplotlib backend and can be selected with backend-'matplotlib:nbagg' and backend-'matplotlib:mpld3' respectively. The ‘d3’ and ‘nbagg’ options remain supported but will be deprecated in future.

  • Customizations should no longer be applied directly to Store.options; the Store.options(backend-'matplotlib') object should be customized instead. There is no longer a need to call the deprecated Store.register_plots method.

Version 1.2

Version 1.2.0

Since the last release we closed over 20 issues and have made 334 commits, adding a ton of functionality and fixing a large range of bugs in the process.

In this release we received some excellent feedback from our users, which has been greatly appreciated and has helped us address a wide range of problems.


  • Added new ErrorBars Element (f2b276b)

  • Added Empty pseudo-Element to define empty placeholders in Layouts (35bac9f1d)

  • Added support for changing font sizes easily (0f54bea)

  • Support for holoviews.rc file (79076c8)

  • Many major speed optimizations for working with and plotting HoloViews data structures (fe87b4c, 7578c51, 5876fe6, 8863333)

  • Support for GridSpace with inner axes (93295c8)

  • New aspect_weight and tight Layout plot options for more customizability of Layout arrangements (4b1f03d, e6a76b7)

  • Added bgcolor plot option to easily set axis background color (92eb95c)

  • Improved widget layout (f51af02)

  • New OutputMagic css option to style html output (9d42dc2)

  • Experimental support for PDF output (1e8a59b)

  • Added support for 3D interactivity with nbagg (781bc25)

  • Added ability to support deprecated plot options in %%opts magic.

  • Added DrawPlot simplifying the implementation of custom plots (38e9d44)

API changes:

  • Path and Histogram support new constructors (7138ef4, 03b5d38)

  • New depth argument on the relabel method (f89b89f)

  • Interface to Pandas improved (1a7cd3d)

  • Removed xlim, ylim and zlim to eliminate redundancy.

  • Renaming of various plot and style options including:

    • figure_* to fig_*

    • vertical_spacing and horizontal_spacing to vspace and hspace respectively

    * Deprecation of confusing origin style option on RasterPlot

  • Overlay.__getitem__ no longer supports integer indexing (use get method instead)

Important bug fixes:

  • Important fixes to inheritance in the options system (d34a931, 71c1f3a7)

  • Fixes to the select method (df839bea5)

  • Fixes to normalization system (c3ef40b)

  • Fixes to Raster and Image extents, __getitem__ and sampling.

  • Fixed bug with disappearing adjoined plots (2360972)

  • Fixed plot ordering of overlaid elements across a HoloMap (c4f1685)

Version 1.1

Version 1.1.0


  • Support for nbagg as a backend (09eab4f1)

  • New .hvz file format for saving HoloViews objects (bfd5f7af)

  • New Polygon element type (d1ec8ec8)

  • Greatly improved Unicode support throughout, including support for unicode characters in Python 3 attribute names (609a8454)

  • Regular SelectionWidget now supports live rendering (eb5bf8b6)

  • Supports a list of objects in Layout and Overlay constructors (5ba1866e)

  • Polar projections now supported (3801b76e)

API changes (not backward compatible):

  • xlim, ylim, zlim, xlabel, ylabel and zlabel have been deprecated (081d4123)

  • Plotting options show_xaxis and show_yaxis renamed to xaxis and yaxis, respectively (13393f2a).

  • Deprecated IPySelectionWidget (f59c34c0)

In addition to the above improvements, many miscellaneous bug fixes were made.

Version 1.0

Version 1.0.1

Minor release addressing bugs and issues with 1.0.0.


  • New separate Pandas Tutorial (8455abc3)

  • Silenced warnings when loading the IPython extension in IPython 3 (aaa6861b)

  • Added more useful installation options via (72ece4db)

  • Improvements and bug-fixes for the %%opts magic tab-completion (e0ad7108)

  • DFrame now supports standard constructor for pandas dataframes (983825c5)

  • Tables are now correctly formatted using the appropriate Dimension formatter (588bc2a3)

  • Support for unlimited alphabetical subfigure labelling (e039d00b)

  • Miscellaneous bug fixes, including Python 3 compatibility improvements.

Version 1.0.0

First public release available on GitHub and PyPI.