With Holoviews, your data visualizes itself.

Overview

PyPI Conda Downloads BuildStatus DocBuildStatus Coveralls Gitter Binder

HoloViews logo HoloViews

Stop plotting your data - annotate your data and let it visualize itself.

HoloViews is an open-source Python library designed to make data analysis and visualization seamless and simple. With HoloViews, you can usually express what you want to do in very few lines of code, letting you focus on what you are trying to explore and convey, not on the process of plotting.

Check out the HoloViews web site for extensive examples and documentation.

Installation

HoloViews works with Python 2.7 and Python 3 on Linux, Windows, or Mac, and works seamlessly with Jupyter Notebook and JupyterLab.

The recommended way to install HoloViews is using the conda command provided by Anaconda or Miniconda:

conda install -c pyviz holoviews bokeh

This command will install the typical packages most useful with HoloViews, though HoloViews itself depends only on Numpy [Pandas](https:// and Param. Additional installation and configuration options are described in the user guide.

You can also clone holoviews directly from GitHub and install it with:

git clone git://github.com/holoviz/holoviews.git
cd holoviews
pip install -e .

Usage

Once you've installed HoloViews, you can get a copy of all the examples shown on this website:

holoviews --install-examples
cd holoviews-examples

Now you can launch Jupyter Notebook or JupyterLab to explore them:

jupyter notebook

jupyter lab

If you are working with a JupyterLab version <2.0 you will also need the PyViz JupyterLab extension:

jupyter labextension install @pyviz/jupyterlab_pyviz

For more details on setup and configuration see our website.

For general discussion, we have a gitter channel. If you find any bugs or have any feature suggestions please file a GitHub issue or submit a pull request.

Comments
  • holoviews (fresh) jupyterlab extension problem

    holoviews (fresh) jupyterlab extension problem

    not sure if it's me or holoviews:

    • this type of example doesn't seem work (yet) in Jupyterlab:
    # Holoviews
    # for more example, see http://holoviews.org/Tutorials/index.html
    import numpy as np
    import holoviews as hv
    hv.extension('matplotlib')
    dots = np.linspace(-0.45, 0.45, 11)
    fractal = hv.Image(image)
    
    layouts = {y: (fractal * hv.Points(fractal.sample([(i,y) for i in dots])) +
                   fractal.sample(y=y) )
                for y in np.linspace(0, 0.45,11)}
    
    hv.HoloMap(layouts, kdims=['Y']).collate().cols(2)
    

    giving: holoju01

    but the ultra-tricky one ... does ???

    holoju02

    type: bug 
    opened by stonebig 66
  • Add crossfilter mode to link_selections

    Add crossfilter mode to link_selections

    Overview

    This PR introduces a new mode argument to the link_selections function that was added in https://github.com/holoviz/holoviews/pull/4044.

    The default value, "overwrite", matches the existing behavior where each selection replaces the prior selection across all elements.

    In the new "crossfilter" mode, each selection replaces any existing selection on the current element, and selections across all elements are combined with an intersection operation.

    To make the crossfilter state easier to interpret, the selected region for each element on which a selection has been performed is displayed in a lighter shade of the selection color. For box-select on scatter-like 2D elements, the selection region is displayed as a Bounds element. For histogram elements, the selected region is displayed as an overlayed histogram indicating which bars have been selected.

    See the GIFs below for examples of what this looks like. Do these selection region indicators make sense to others?

    Additionally, this PR uses the PlotReset stream to reset all selections when the plot is reset. This works for the bokeh backend, but the PlotReset stream is not yet implemented for the Plotly backend.

    Examples

    Example notebook at https://anaconda.org/jonmmease/cross_filter_link_selections_pr

    Bokeh scatter/histogram example

    crossfilter1

    Plotly scatter/histogram/scatter3d/table example

    crossfilter2

    Bokeh violin/bivariate/distribution/histogram example

    crossfilter3

    Bokeh datashader example

    crossfilter4

    Glaciers Example

    Note: I believe this functionality is enough to rewrite the glaciers app once https://github.com/holoviz/holoviews/issues/4116 is fixed.

    opened by jonmmease 58
  • Support for streaming data

    Support for streaming data

    This PR builds on #2007 adding a StreamDataFrame Stream, which lets you subscribe to updates from a streamz.StreamingDataFrame. The dependency is entirely optional and with a bit of glue it's very easy to subscribe to generate a streaming plot this way. For now I have just monkey-patched streamz using this code:

    from streamz.dataframe import StreamingDataFrame, StreamingSeries, Random
    from holoviews.streams import StreamDataFrame
    
    def to_hv(self, function, backlog=2000):
        return hv.DynamicMap(function, streams=[StreamDataFrame(self, backlog=backlog)])
    
    StreamingDataFrame.to_hv = to_hv
    StreamingSeries.to_hv = to_hv
    

    The individual chunks emitted by the StreamingDataFrame are fed through a user supplied callback and are then used to update the bokeh plot using the CDS.stream method, which sends just the most recent samples. It may also be worth considering an option where StreamingDataFrame itself accumulates data rather than just emitting chunks, which can also be very useful. The current approach makes something like this possible:

    streamz

    type: feature 
    opened by philippjfr 54
  • Add height_index, width_index, alpha_index, and marker_index to Points/Scatter?

    Add height_index, width_index, alpha_index, and marker_index to Points/Scatter?

    Right now, one can decide how to map a dimension into the color and size of a Points object, using color_index and size_index, but there's no way to do similarly for alpha, and no way to specify the height and width independently. For a concrete example where this functionality would be useful, see cell 21 of http://nbviewer.jupyter.org/github/jbednar/bokeh-notebooks/blob/master/tutorial/12%20-%20holoviews.ipynb :

    image

    image

    Here the plot is collapsing over the sepal_width and sepal_length values, but instead it would be great if that data could be mapped onto the height and width of the dots.

    Similarly, one could easily imagine wanting to use the opacity to show a data value, hence alpha_index.

    It would also be useful to have a marker_index, where one of the values is mapped onto one of a finite number of different marker shapes (circle, square, diamond, star, etc.).

    type: feature 
    opened by jbednar 54
  • Doc cleanup

    Doc cleanup

    Partial cleanup, ready for comments (and merging if appropriate) but not yet including edits to the main tutorials. It would be very good if Philipp or Jean-Luc could inspect my changes carefully, looking especially at:

    1. I changed the tagline in the main site to match the one on Github.
    2. Is the tone and level of detail right on Homepage.ipynb? I tried to make it more explicit about the difference in philosophy between HoloViews and other libraries, but it's always hard to explain that.
    3. I added links to the new Bokeh tutorials from the Tutorials index, and references to Bokeh throughout, but there are probably other places to mention it and guide people towards which backend is appropriate for their purposes.
    4. Is the Pandas tutorial out of date? It talks about converting Pandas dataframes, but I thought we were now supporting using them as-is, not copying or converting. Does this need to be clarified somewhere?
    5. Can we simplify the GitHub README.rst? Right now it has a redundant copy of features.rst, which I vote should just be replaced with a link, but in any case at least needs to be updated from features.rst.
    6. There were a few locations, e.g. in the FAQ, where I wanted to document something (e.g. the aliases system), but the only documentation I could find was in a pull request, so I put in a link to the pull request. We can either leave in such links as a pragmatic measure, or pull the information out of the pull request into something we can maintain over time.
    7. I added "bokeh" to the conda install command, so that the result would be more like what happens for matplotlib (things just work). But the right approach is presumably to make the conda package be completely independent of matplotlib (with the default backend falling back to bokeh when mpl is not installed), and then tell people to choose whichever command they wish:
      • conda install holoviews # no plotting backend
      • conda install holoviews matplotlib # default backend is mpl
      • conda install holoviews bokeh # default backend is bokeh
      • conda install holoviews matplotlib bokeh # default backend is mpl
    8. I've run the tutorials, but don't know how to build the web site locally (which is a big pain and really discourages updating the web site!), so I can't tell if everything's still formatted properly.
    9. It needs links to the SciPy paper in appropriate locations, because that has more philosophical discussion that makes good background reading.
    10. I still need to go through the other tutorials, but won't be able to do that today or tomorrow.
    opened by jbednar 54
  • Adding a plot API to HoloViews

    Adding a plot API to HoloViews

    Over the past few months I have been working on HoloViews based plotting APIs for a number of libraries including intake, streamz and pandas. In general I have borrowed heavily from the pandas DataFrame plotting API while mostly staying consistent with the HoloViews plot options. The API defines a plot namespace on the dataset objects of the respective libraries, which defines a wide array of plot types: including .area, .bars, .box, .heatmap, .histogram, .kde, .line, .scatter, .table and.violin. A fully fleshed out example for the intake library can be seen here.

    All of these APIs are almost identical and maintaining them separately does not make much sense, since any divergences will become quite annoying. Therefore I've been wondering whether it might not make more sense to introduce the API to HoloViews instead, providing an easy, and familiar introduction to HoloViews and a powerful companion to the .to interface.

    The .to interface is very powerful when dealing with tidy data, however we have long struggled to deal with wide data, where observations along some dimensions are grouped by column rather than row (see https://github.com/ioam/holoviews/issues/2341, https://github.com/ioam/holoviews/issues/2015, https://github.com/ioam/holoviews/issues/2162). The plot interface provides a clean solution to this problem, automatically grouping and overlaying each column/variable. Adding this API to Dataset would I think be a good option, providing an easy, more familiar and consistent API to specify plots (while still constructing declarative HoloViews objects), which I think could be made highly consistent with the HoloViews API.

    As a brief summary I'll outline the two main ways of using the API:

    • Declaring explicit x/y columns and optional an optional by kwarg to group the data by another variable (this spelling is very similar to the .to method)
    • Declaring use_index or an explicit index column and optionally a list of columns to plot, which will overlay the different columns (useful for wide datasets).

    So far the interfaces I've designed only work with pandas/dask datasets but I'll soon be working on extending it to also cover xarray and geopandas types.

    I think this API would compliment the explicit declarative approach to constructing HoloViews objects and would therefore be a very valuable addition to the core library. However we could also consider creating a new library for this interface, which other libraries could use, but this way we would not get the benefit of adding the plot interface to our Datasets (by default at least).

    type: feature type: discussion 
    opened by philippjfr 42
  • Feature radial heatmap

    Feature radial heatmap

    This PR is not meant to be finished but is rather a work in progress for discussion purposes.

    I implemented a first version of a radial heatmap which still has several limitations:

    Issues

    • Plotting order: In order to enhance readability, one can define separation lines to distinguish groups of annular wedges more clearly via plot option separate_nth_segment. However, sometimes they show up, sometimes they don't. I guess this is due to the z-order in which glyphs are plotted. I added the _draw_order class attribute without any effect.

    • Match aspect: Coordinates of annular wedges, lines and text do not result in corresponding alignments (same coordinates differ in visual field). This is a known issue in bokeh, see here #7218. One workaround I've found is to completely remove any range and axis definition from a bokeh figure and set match_aspect to True in order to get the correct aspect ratio (however one has to overwrite many inherited methods...). Another way is to manually adjust the width and height to match the aspect ratio but this depends on toolbar location, colobar and other elements and hence is not really meaningful. Therefore, I guess we have to wait until a bokeh site of fix.

    • Colobar does not show up if selected

    • Input key dimension differ to output dimension: The key dimensions of the input data are categorical. However, the plot is based on numerical values a in interval scaled coordinate system. As far as I can understand the class design, holoviews expects input key dimension to map on the actual x and y ranges. I've thought about creating a custom holoviews.Operation to convert the categorical input into numerical radii and radiants just like histogram.

    Still missing:

    • Add labels for second key dimension: At the moment, labels are only available for the first key dimension.

    Open question:

    • Separate RadialHeatMap class: As discussed in #2139, I decided to create its own element class representation instead of using the HeatMap element class because the radial heatmaps also require custom layout options which are very different from the rectular heatmap requirements. WIthout the extra class, I wasn't able to set the visualization defaults in the bokeh/init.py properly.

    Overall, the plain example works in examples/gallery/demos/bokeh/radial_heatmap.ipynb.

    I'm very happy for every feedback.

    type: feature 
    opened by mansenfranzen 42
  • Collapsing an NdOverlay or HoloMap into a stream plot or error bars

    Collapsing an NdOverlay or HoloMap into a stream plot or error bars

    The recent addition of error bars is great, but they currently have to be constructed explicitly, which can be error prone (no pun intended). Since we encourage people to collect stacks of data into containers like NdOverlays and HoloMaps, it would be great if we could very easily tell HoloViews to create a summary plot by collapsing those data structures along a certain dimension by calculating the mean (or median?) value along with error bars (or stream widths, once stream plots are supported). This should be a nice way to move back and forth between the full data and reduced versions thereof, so that people can get a nice intuition about how well the summary statistics represent the underlying data.

    type: feature 
    opened by jbednar 42
  • Add support for batching NdOverlay plots

    Add support for batching NdOverlay plots

    Following the proposal in #716 I've prototyped an initial implementation of batched plots for NdOverlays. The idea behind this is that creating a lot of individual plot instances for very similar plot elements is expensive and results in the creation of a huge number of artists and glyphs. Hooking into HoloViews to create plot classes, which plot a bunch of Elements at once is pretty straightforward and can provide considerable speed benefits. To test this I've prototyped a BatchedCurvePlot class, which can plot large NdOverlays of Curves very quickly in the bokeh backend.

    I've tested this with this simple example:

    hv.HoloMap({j: hv.NdOverlay({i: hv.Curve(np.random.rand(10,2)) for i in range(50)}) for j in range(10)})
    

    After quick testing the batched plot renders this in 0.25 seconds vs the regular implementation which takes about 1.25 seconds to generate. More importantly however the generated bokeh output no longer freezes the browser temporarily, because it renders all the curves at once rather than as separate glyphs. Visually the two plots are identical except in bokeh the batched plot is coming out a lot crisper for me for some reason (I think this has been fixed in bokeh master).

    There's still a few fixes to make and we need to decide on a general place for specialized plot registries such as for the batched plots here and for adjoined plots in other cases.

    opened by philippjfr 40
  • Added option for dimension range padding

    Added option for dimension range padding

    Adds support for dimension range padding as suggested in https://github.com/ioam/holoviews/issues/1090. Was reasonably straightforward, for backward compatibility no padding is added by default. Logic for computing padding on Overlays not yet quite correct.

    All changes should for now be backward compatible and tests should pass.

    type: feature tag: component: plotting 
    opened by philippjfr 37
  • Element Tutorial fixes

    Element Tutorial fixes

    This PR addresses the issues raised in #516 regarding the Element tutorial, namely:

    • Confusing bounds for Image.
    • Incorrect names for x and y generated with np.mgrid

    I've made the changes in such a way that I believe that most of the tests will continue to pass though Image will probably fail given the change of bounds.

    opened by jlstevens 37
  • Enable rendering colorbars on bokeh GraphPlots

    Enable rendering colorbars on bokeh GraphPlots

    Seeming oversight that Graph plots were not able to render colorbars. Fixes user issue: https://discourse.holoviz.org/t/show-color-map-or-edge-labels-in-hvnx-draw/4808

    G = nx.Graph()
    
    G.add_edge('a', 'b', weight=0.6)
    G.add_edge('a', 'c', weight=0.2)
    G.add_edge('c', 'd', weight=0.1)
    G.add_edge('c', 'e', weight=0.7)
    G.add_edge('c', 'f', weight=0.9)
    G.add_edge('a', 'd', weight=0.3)
    
    G.add_node('a', size=20)
    G.add_node('b', size=10)
    G.add_node('c', size=12)
    G.add_node('d', size=5)
    G.add_node('e', size=8)
    G.add_node('f', size=3)
    
    pos = nx.spring_layout(G)  # positions for all nodes
    
    hvnx.draw(G, pos, edge_color='weight', edge_cmap='viridis',
              edge_width=hv.dim('weight')*10, node_size=hv.dim('size')*20, colorbar=True)
    
    Screen Shot 2023-01-08 at 12 51 45
    opened by philippjfr 1
  • Fix empty plot

    Fix empty plot

    Fixes #5559

    import holoviews as hv
    import numpy as np
    
    hv.extension("bokeh")
    
    scatter = hv.Scatter(np.random.rand(100, 2))
    scatter << hv.Empty() << scatter.hist(adjoin=False)
    
    

    image

    opened by Hoxbro 1
  • docs -

    docs - "roadmap as of 3/2019" is out of date

    Thanks for contacting us! Please read and follow these instructions carefully, then delete this introductory text to keep your issue easy to read. Note that the issue tracker is NOT the place for usage questions and technical assistance; post those at Discourse instead. Issues without the required information below may be closed immediately.

    ALL software version info

    website accessed 12/28/2022: https://holoviews.org/roadmap.htmlshows the state of the project and future plans as of 3/2019

    Description of expected behavior and the observed behavior

    Would like more current information about the state of this project

    Complete, minimal, self-contained example code that reproduces the issue

    Not applicable

    opened by j-carson 0
  • Stream updates to do not propagate to datashader ranges

    Stream updates to do not propagate to datashader ranges

    Description of expected behavior and the observed behavior

    In this example I am using a Stream to interactively change/select the dataframe column that should be renderered. In general it seems to work as intended however the datashader ranges do not perform an autorange update and remain the same.

    Complete, minimal, self-contained example code that reproduces the issue

    import pandas as pd
    import numpy as np
    import datashader as ds
    import holoviews as hv
    from bokeh.layouts import row, column
    from bokeh.models import Button, ColumnDataSource, CDSView, DataTable, IndexFilter, TableColumn, FileInput, Select, \
        PreText, Div
    from bokeh.plotting import curdoc, figure
    from bokeh.layouts import layout
    from holoviews.operation.datashader import datashade, shade, dynspread, spread, rasterize
    from holoviews.streams import Pipe, Stream
    from dask import dataframe as dd
    import multiprocessing as mp
    from functools import reduce
    
    hv.extension('bokeh')
    renderer = hv.renderer('bokeh').instance(mode='server')
    
    doc = curdoc()
    
    x = np.linspace(1, 1000, 10000)
    y1 = np.sin(x / 10)
    y2 = np.sin(x / 10) + 1
    
    df = pd.DataFrame({"x": x, "y1": y1, "y2": y2})
    
    pipe = Pipe(data=[])
    pipe.send(df)
    
    ColX = Stream.define('ColX', col_name_x="")
    ColY = Stream.define('ColY', col_name_y="")
    
    x_col_stream = ColX(col_name_x="x")
    y1_col_stream = ColY(col_name_y="y1")
    y2_col_stream = ColY(col_name_y="y2")
    
    
    def get_curve(data, col_name_x, col_name_y):
        return hv.Curve(data, col_name_x, col_name_y)
    
    
    def get_shaded_dmap(pipe, x_col_stream, y_col_stream):
        dmap = hv.DynamicMap(get_curve, streams=[pipe, x_col_stream, y_col_stream])
        return datashade(dmap, cnorm='eq_hist', aggregator=ds.count(), min_alpha=100).opts(width=1000, height=150)
    
    
    def generate_data_figures():
        ts_shade = [get_shaded_dmap(pipe, x_col_stream, y1_col_stream), get_shaded_dmap(pipe, x_col_stream, y2_col_stream)]
    
        def link(a, b):
            return a + b
    
        return renderer.get_plot((reduce(link, ts_shade)).cols(1)).state
    
    
    button_col_replace = Button(label="Replace ColX", button_type="primary", width=150)
    data_placeholder = column()
    
    data_figures = generate_data_figures()
    data_placeholder.children.append(data_figures)
    
    
    def replace_col():
        # replace y1 data with y2 data by updating the respective stream
        y1_col_stream.event(col_name_y="y2")
    
    
    button_col_replace.on_click(replace_col)
    
    layout = layout(row(column(button_col_replace), data_placeholder))
    doc.add_root(layout)
    
    

    Screenshots or screencasts of the bug in action

    image

    type: bug 
    opened by muendlein 3
  • Support markers on line traces (curve) as an option.

    Support markers on line traces (curve) as an option.

    Markers are currently supported as overlays from what I have seen in a user doc. The problem is enabling /disabling traces by clicking on legend means now there are 2 trace elements - a Curve and a Scatter so to enable and disable a single trace you have to click on 2 legends.

    Is your feature request related to a problem? Please describe.

    Yes, see above

    Describe the solution you'd like

    An option such as markers=True as available in plotly line plots would be useful for all plotting backends

    Describe alternatives you've considered

    Alternatives are lot of unneccessary coding for a common use case

    Additional context

    Add any other context or screenshots about the feature request here.

    opened by suley1212 0
Releases(v1.15.3)
  • v1.15.3(Dec 13, 2022)

    This release contains a small number of important bug fixes and adds support for Python 3.11. Many thanks to our maintainers @Hoxbro, @maximlt and @jlstevens.

    Bug Fixes:

    • Fix for empty opts warning and incorrect clearing semantics (#5496)
    • Fix potential race condition in the Options system (#5535)

    Enhancements:

    • Add support to Python 3.11 (#5513)
    • Cleanup the top __init__ module (#5516)

    Documentation:

    • Fixes to release notes and CHANGELOG (#5506)
    Source code(tar.gz)
    Source code(zip)
  • v1.15.2(Nov 3, 2022)

    This release contains a small number of important bug fixes. Many thanks to @stanwest for his contribution and thank you to our maintainers @Hoxbro, @maximlt, @jlstevens, @jbednar, and @philippjfr.

    Bug fixes:

    • Fix support for jupyterlite (#5502)
    • Improve error message for hv.opts without a plotting backend (#5494)
    • Fix warnings exposed in CI logs (#5470)
    • Thanks to @maximlt for various CI fixes (#5484, #5498, #5485)

    Enhancement:

    • Allow Dimension objects to accept a dictionary specification (#5333)
    • Refactor to remove iterrows for loop from connect_edges_pd (#5473)

    Deprecations:

    Promoted DeprecationWarning to FutureWarning when using pandas DataFrames with non-string column names. This will not change any functionality but will start warning users about functionality that will be deprecated in future.

    • Upgrade warning for invalid dataframe column names (#5472)
    Source code(tar.gz)
    Source code(zip)
  • v1.15.1(Oct 7, 2022)

    This release contains a small number of important bug fixes. Many thanks to all our new contributors @MarcSkovMadsen, @j-svensmark, @ceball, @droumis, @ddrinka, @Jhsmit and @stanwest as well as a special thanks to @Hoxbro for his many bug fixes. An additional thank you goes out to @maximlt, @philippjfr, @jbednar and @jlstevens for ongoing maintenance and support.

    Enhancements:

    • Sort output of decimate operation so that it can be used with connected Elements (Curve, Area, etc.) (#5452)
    • Ensure HoloViews is importable from a pyodide webworker (#5410)
    • Add support for stepwise Area plots (#5390)
    • Better error message for hv.Cycle when incompatible backend activated (#5379)
    • Improvements to VSCode notebook support (#5398)
    • Protect matplotlib tests from global styles (#5311)
    • Faster hashing for arrays and pandas objects (#5455)
    • Add pre-commit hooks to CI actions and fixes to pytest configuration (#5385, #5440)

    Bug Fixes:

    • Allow import of numpy 1.12 (#5367)
    • Fixes handling of iterables in Overlays (#5320)
    • Always return a string when using hv.Dimension.pprint_value (#5383)
    • Support widgets in slices for loc and iloc (#5352)
    • Take account of labeled dimension in Bokeh plotting classes (#5404)
    • Fix handling of pandas Period ranges (#5393)
    • Fixed declaration of Scatter to Selection1DExpr (#5413)
    • Ensure rangesupdate event fires on all plots with linked axes (#5465)
    • Fixed fallback to shapely spatial select (#5468)
    • Many thanks to @Hoxbro for many miscellaneous plotting fixes, including fixes to plotting of BoxWhisker, VectorField elements (#5397, #5450, #5400, #5409, #5460))
    • Fixes to documentation building GitHub Action (#5320, (#5320))

    Documentation:

    • Introduced module documentation (#5362)
    • Remove Python 2 references from README (#5365)
    • Update call to panel add_periodic_callback in Bokeh gallery example (#5436)
    • Added reference to example in RangeToolLink (#5435)

    API:

    In future, HoloViews will not allow non-string values for pandas DataFrame column names. This deprecation cycle starts by issuing a DeprecationWarning that should not be visible to users.

    • Issue DeprecationWarning for invalid DataFrame column types (#5457)
    Source code(tar.gz)
    Source code(zip)
  • v1.15.0(Jul 11, 2022)

    This is a major release with a large number of new features and bug fixes, as well as updates to Python and Panel compatibility.

    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 @ablythed @ahuang11 @douglas-raillard-arm @FloLangenfeld @HoxBro @ianthomas23 @jenssss @pepijndevos @peterroelants @stas-sl @Yura52 for their contributions. In addition, thanks to the maintainers @jbednar, @maximlt, @jlstevens and @philippjfr for contributing to this release.

    Compatibility:

    • Python 2 support has finally been dropped with 1.14.9 as the last release supporting Python 2
    • HoloViews now requires panel >0.13.1 (https://github.com/holoviz/holoviews/pull/4329)
    • Colormaps for the output of the datashade operation have changed to address https://github.com/holoviz/datashader/issues/357; see rescale_discrete_levels below. To revert to the old colorbar behavior, set ColorbarPlot.rescale_discrete_levels = False in the bokeh or mpl plotting modules as appropriate.
    • Updated Sankey algorithm means that some users may need to update the node_padding parameter for plots generated with earlier releases.

    Major features:

    After a long period of hotfix releases for the 1.14.9 series, many new features on the master branch have been released. Features relating to datashader support, linked selection and improvements to the Bokeh plotting backend are called out in their own sections.

    • Support constructor interface from a spatialpandas GeometryArray (https://github.com/holoviz/holoviews/pull/5281)
    • Allow plotting anonymous pandas.Series (https://github.com/holoviz/holoviews/pull/5015)
    • Add support for rendering in pyodide/pyscript (https://github.com/holoviz/holoviews/pull/5338, https://github.com/holoviz/holoviews/pull/5321, https://github.com/holoviz/holoviews/pull/5275)

    Datashader features:

    The following new features have been added to the datashader support in HoloViews, mainly focused on Datashader's new support for antialiasing lines as well as the new rescale_discrete_levels colormapping option.

    • Add automatic categorical legend for datashaded plots (https://github.com/holoviz/holoviews/pull/4806)
    • Implement line_width support when rasterizing spatialpandas paths (https://github.com/holoviz/holoviews/pull/5280)
    • Expose rescale_discrete_levels in the Bokeh backend (https://github.com/holoviz/holoviews/pull/5312)
    • Set rescale_discrete_levels=True by default (https://github.com/holoviz/holoviews/pull/5268)

    New linked selection features:

    • Implement linked_selection.filter method (https://github.com/holoviz/holoviews/pull/4999)
    • Allow passing custom selection_expr to linked selections filter (https://github.com/holoviz/holoviews/pull/5012)
    • Fix AdjointLayout in link_selections (https://github.com/holoviz/holoviews/pull/5030)

    New features for the Bokeh plotting backend:

    • Add legend_labels option to allow overriding legend labels (https://github.com/holoviz/holoviews/pull/5342)
    • Updated sankey algorithm to d3-sankey-v0.12.3 (https://github.com/holoviz/holoviews/pull/4707)

    Other enhancements:

    • Optimize and clean up options system (https://github.com/holoviz/holoviews/pull/4954)
    • Optimize lasso selection by applying box-select first (https://github.com/holoviz/holoviews/pull/5061) https://github.com/holoviz/holoviews/pull/5061
    • Support ibis-framework version 3 (https://github.com/holoviz/holoviews/pull/5292)
    • Add OpenTopoMap as a tile source (https://github.com/holoviz/holoviews/pull/5052)
    • Show all histograms of an Overlay (https://github.com/holoviz/holoviews/pull/5031)

    Bug fixes:

    • Fix batch watching and linking of parameters in Params stream (https://github.com/holoviz/holoviews/pull/4960, https://github.com/holoviz/holoviews/pull/4956)
    • Ensure Plot.refresh is dispatched immediately if possible (https://github.com/holoviz/holoviews/pull/5348)
    • Fix datashader empty overlay aggregation (https://github.com/holoviz/holoviews/pull/5334)
    • Fixed missing handling of nodata for count aggregator with column (https://github.com/holoviz/holoviews/pull/4951)
    • Handle pd.NA as missing data in dtype=object column (https://github.com/holoviz/holoviews/pull/5323)
    • Forward DynamicMap.hist dimension parameter to histogram creation (https://github.com/holoviz/holoviews/pull/5037)
    • Remove numpy pin from examples (https://github.com/holoviz/holoviews/pull/5285)
    • Fix vmin/vmax deprecation on matplotlib HeatMapPlot (https://github.com/holoviz/holoviews/pull/5300)
    • Don't skip each renderer's load_nb call when multiple extension calls are made in a single cell (https://github.com/holoviz/holoviews/pull/5302)
    • Set plotly range correctly for log axis (https://github.com/holoviz/holoviews/pull/5272)
    • Sanitize uses of contextlib.contextmanager (https://github.com/holoviz/holoviews/pull/5018)
    • Ensure overlay_aggregate is not applied for anti-aliased lines (https://github.com/holoviz/holoviews/pull/5266)
    • Switch to using bokeh rangesupdate event for Range streams (https://github.com/holoviz/holoviews/pull/5265)
    • Fixes for bokeh Callbacks (https://github.com/holoviz/holoviews/pull/5040)
    • Fix for attribute error in matplotlib CompositePlot (https://github.com/holoviz/holoviews/pull/4969)
    • Silenced inappropriate deprecation warnings and updated deprecation settings in options system (https://github.com/holoviz/holoviews/pull/5345, https://github.com/holoviz/holoviews/pull/5346)

    Documentation:

    The following improvements to the documentation have been made:

    • Fix hv.help when pattern is set (https://github.com/holoviz/holoviews/pull/5330)
    • Added release dates to changelog and releases (https://github.com/holoviz/holoviews/pull/5027, https://github.com/holoviz/holoviews/pull/5035)
    • Removed unneeded list from dynamic map example (https://github.com/holoviz/holoviews/pull/4953)
    • Added FAQ about sharing only a single axis (https://github.com/holoviz/holoviews/pull/5278)
    • Miscellaneous fixes to Heatmap reference notebook and Continuous Coordinates user guide (https://github.com/holoviz/holoviews/pull/5262)
    • Added example of multiple RGB images as glyphs (https://github.com/holoviz/holoviews/pull/5172)
    • Trim trailing whitespaces (https://github.com/holoviz/holoviews/pull/5019)
    • Update outdated IOAM references (https://github.com/holoviz/holoviews/pull/4985)

    Testing infrastructure:

    Many thanks to @maximlt for his work maintaining and fixing the testing infrastructure across too many PRs to list here.

    • Switch to pytest (https://github.com/holoviz/holoviews/pull/4949)
    • Test suite clean up and fix for the pip build (https://github.com/holoviz/holoviews/pull/5326)
    • Test updates following release of datashader 0.14.1 (https://github.com/holoviz/holoviews/pull/5344)
    Source code(tar.gz)
    Source code(zip)
  • v1.14.9(May 9, 2022)

    This release contains a small number of important bug fixes as well as support for the newly added antialiasing option for line rendering in datashader. Many thanks to @andriyot, @Hoxbro, @pepijndevos, @stas-sl, @TheoMathurin, @maximlt, @jlstevens, @jbednar, and @philippjfr.

    Enhancements:

    • Improvements to extension loading, improving visual appearance in JupyterLab when no logo is used and a check to avoid loading unnecessary JavaScript (#5216, #5249)
    • Add support for setting antialiased line_width on datashader line aggregation as well as pixel_ratio setting (#5264, #5288)
    • Added options to customize hover line_width|cap|dash properties (#5211)
    • Restored Python 2 compatibility that lapsed due to lack of CI testing since 1.14.3. This is expected to be the last release with Python 2 support. (#5298)

    Bug fixes:

    • Fix to respect series order in stacked area plot (#5236)
    • Support buffer streams of unspecified length (#5247)
    • Fixed log axis lower bound when data minimum is <= 0 (#5246)
    • Declared GitHub project URL in setup.py (#5227)
    • Fixed streaming Psutil example application (#5243)
    • Respecting Renderer’s center property for HoloViews pane (#5197)
    • Fix vmin/vmax deprecation in HeatMap plot for matplotlib > 3.3 (#5300)

    Documentation:

    • Updated Large data guide to reflect changes in Datashader and antialiasing support (#5267, #5290)
    Source code(tar.gz)
    Source code(zip)
  • v1.14.8(Feb 16, 2022)

    February 15, 2022

    This release contains a small number of important bug fixes as well as fixes required for Python 3.9 and 3.10 support. Many thanks to @Hoxbro, @maximlt, @jlstevens, @jbednar, and @philippjfr.

    Bug fixes:

    • Fixed xarray validation for aliased coordinate (#5169)
    • Fixed xaxis/yaxis options with Matplotlib (#5200)
    • Fixed nested widgets by handling list or tuple values in resolve_dependent_value utility (#5184)
    • Fixed issue handling multiple widgets without names (#5185)
    • Fix overlay of two-level categorical plots and HLine (#5203)
    • Added support for Ibis > 2.0 (#5204)
    • Allow lower dimensional views on arbitrary dimensioned elements (#5208)
    • Fix escaping of HTML on Div element (#5209)
    • Miscellaneous fixes to unit tests, including cudf test fixes as well as addition of Python 3.9 and 3.10 to the test matrix (#5166, #5199, #5201, #5206)
    Source code(tar.gz)
    Source code(zip)
  • v1.14.7(Dec 16, 2021)

    This release contains a small number of important bug fixes. Many thanks to @douglas-raillard-arm, @jenssss, @w31t1, @Hoxbro, @martinfleis, @maximlt, @jlstevens, @jbednar, and @philippjfr.

    Bug fixes:

    • Support xyzservices.TileProvider as hv.Tiles input (#5062)
    • Allow reversed layout/overlay binary operators for + and * to be used with custom objects (#5073)
    • Fix internal numpy.round usage (#5095)
    • Remove dependency on recent Panel release by importing bokeh version from util module (#5103)
    • Add missing bounds for the cache_size Parameter (#5105)
    • Add current_key property to DynamicMap (#5106)
    • Pin freetype on Windows to avoid matplotlib error (#5109)
    • Handle the empty string as a group name (#5131)
    • Do not merge partially overlapping Stream callbacks (#5133)
    • Fix Violin matplotlib rendering with non-finite values (#5135)
    • Fix matplotlib colorbar labeling for dim expressions (#5137)
    • Fix datetime clipping on RangeXY stream (#5138)
    • Ensure FreehandDraw renders when styles are set (#5139)
    • Validate dimensionality of xarray interface data (#5140)
    • Preserve cols when overlaying on layout (#5141)
    • Fix Bars legend error when overlaid with annotation (#5142)
    • Fix plotly Bar plots containing NaNs (#5143)
    • Do not raise deprecated .opts warning for empty groups (#5144)
    • Handle unsigned integer dtype in datashader aggregate operation (#5149)
    • Delay projection comparison to optimize geoviews (#5152)
    • Utility to convert datetime64 to int64 and test suite maintenance (#5157)
    • Fix for Contours consistent of empty and nonempty paths (#5162)
    • Fixed docs:
      • Fix fig_bounds description in Plotting_with_Matplotlib.ipynb (#4983)
      • Fix broken link in Gridded user guide (#5098)
    • Improved docs:
      • Switch to the Pydata Sphinx theme (#5163)
    Source code(tar.gz)
    Source code(zip)
  • v1.14.6(Sep 30, 2021)

    This is a hotfix release with a number of important bug fixes. Most importantly, this version supports the recent Bokeh 2.4.0 release. Many thanks to @geronimos, @peterroelants, @douglas-raillard-arm, @philippjfr, and @jlstevens for contributing the fixes in this release.

    Bug fixes:

    • Compatibility for bokeh 2.4 and fixes to processing of falsey properties and visible style property (#5059, #5063)
    • Stricter validation of data.interface before calling subclass (#5050)
    • Fix to prevent options being ignored in some cases (#5016)
    • Improvements to linked selections including support for linked selection lasso for cudf and improved warnings (#5044, #5051)
    • Respect apply_ranges at range computation level (#5081)
    • Keep ordering of kdim when stacking Areas (#4971)
    • Apply hover postprocessor on updates (#5039)
    Source code(tar.gz)
    Source code(zip)
  • v1.14.5(Jul 19, 2021)

    This is a hotfix release with a number of important bug fixes. Most importantly, this version supports for the recent pandas 1.3.0 release. Many thanks to @kgullikson88, @philippjfr and @jlstevens for contributing the fixes in this release.

    Bug fixes:

    • Support for pandas>=1.3 (#5013)
    • Various bug fixes relating to dim transforms including the use of parameters in slices and the use of getattribute (#4993, #5001, #5005)
    Source code(tar.gz)
    Source code(zip)
  • v1.14.4(May 20, 2021)

    This release primarily focuses on a number of bug fixes. Many thanks to @Hoxbro, @nitrocalcite, @brl0, @hyamanieu, @rafiyr, @jbednar, @jlstevens and @philippjfr for contributing.

    Enhancements:

    • Reenable SaveTool for plots with Tiles (#4922)
    • Enable dask TriMesh rasterization using datashader (#4935)
    • Use dataframe index for TriMesh node indices (#4936)

    Bug fixes:

    • Fix hover for stacked Bars (#4892)
    • Check before dereferencing Bokeh colormappers (#4902)
    • Fix multiple parameterized inputs to dim (#4903)
    • Fix floating point error when generating bokeh Palettes (#4911)
    • Fix bug using dimensions with label on Bars (#4929)
    • Do not reverse colormaps with '_r' suffix a second time (#4931)
    • Fix remapping of Params stream parameter names (#4932)
    • Ensure Area.stack keeps labels (#4937)

    Documentation:

    • Updated Dashboards user guide to show pn.bind first (#4907)
    • Updated docs to correctly declare Scatter kdims (#4914)

    Compatibility:

    Unfortunately a number of tile sources are no longer publicly available. Attempting to use these tile sources will now issue warnings unless hv.config.raise_deprecated_tilesource_exception is set to True in which case exceptions will be raised instead.

    • The Wikipedia tile source is no longer available as it is no longer being served outside the wikimedia domain. As one of the most frequently used tile sources, HoloViews now issues a warning and switches to the OpenStreetMap (OSM) tile source instead.
    • The CartoMidnight and CartoEco tile sources are no longer publicly available. Attempting to use these tile sources will result in a deprecation warning.
    Source code(tar.gz)
    Source code(zip)
  • v1.14.3(Apr 26, 2021)

    This release contains a small number of bug fixes, enhancements and compatibility for the latest release of matplotlib. Many thanks to @stonebig, @Hoxbro, @jlstevens, @jbednar and @philippjfr.

    Enhancements:

    • Allow applying linked selections to chained DynamicMap (#4870)
    • Issuing improved error message when radd called with an integer (#4868)
    • Implement MultiInterface.assign (#4880)
    • Handle tuple unit on xarray attribute (#4881)
    • Support selection masks and expressions on gridded data (#4882)

    Bug fixes:

    • Handle empty renderers when merging HoverTool.renderers (#4856)

    Compatibility:

    • Support matplotlib versions >=3.4 (#4878)
    Source code(tar.gz)
    Source code(zip)
  • v1.14.2(Mar 4, 2021)

    This release adds support for Bokeh 2.3, introduces a number of minor enhancements, miscellaneous documentation improvements, and a good number of bug fixes.

    Many thanks to the many contributors to this release, whether directly by submitting PRs or by reporting issues and making suggestions. Specifically, we would like to thank @philippjfr for the Bokeh 2.3 compatibility updates, @kcpevey, @timgates42, and @scottstanie for documentation improvements as well as @Hoxbro and @LunarLanding for various bug fixes. In addition, thanks to the maintainers @jbednar, @jlstevens, and @philippjfr for contributing to this release.

    Enhancements:

    • Bokeh 2.3 compatibility (#4805, #4809)
    • Supporting dictionary streams parameter in DynamicMaps and operations (#4787, #4818, #4822)
    • Support spatialpandas DaskGeoDataFrame (#4792)
    • Disable zoom on axis for geographic plots (#4812
    • Add support for non-aligned data in Area stack classmethod (#4836)
    • Handle arrays and datetime ticks (#4831)
    • Support single-value numpy array as input to HLine and VLine (#4798)

    Bug fixes:

    • Ensure link_inputs parameter on operations is passed to apply (#4795)
    • Fix for muted option on overlaid Bokeh plots (#4830)
    • Check for nested dim dependencies (#4785)
    • Fixed np.nanmax call when computing ranges (#4847)
    • Fix for Dimension pickling (#4843)
    • Fixes for dask backed elements in plotting (#4813)
    • Handle isfinite for NumPy and Pandas masked arrays (#4817)
    • Fix plotting Graph on top of Tiles/Annotation (#4828)
    • Miscellaneous fixes for the Bokeh plotting extension (#4814, #4839)
    • Miscellaneous fixes for index based linked selections (#4776)

    Documentation:

    • Expanded on Tap Stream example in Reference Gallery (#4782)
    • Miscellaneous typo and broken link fixes (#4783, #4827, #4844, #4811)
    Source code(tar.gz)
    Source code(zip)
  • v1.14.1(Jan 27, 2021)

    This release contains a small number of bug fixes addressing regressions. Many thanks to the contributors to this release including @csachs, @GilShoshan94 and the maintainers @jlstevens, @jbednar and @philippjfr.

    Bug fixes:

    • Fix issues with linked selections on tables (#4758)
    • Fix Heatmap alpha dimension transform (#4757)
    • Do not drop tools in linked selections (#4756)
    • Fixed access to possibly non-existant key (#4742)

    Documentation:

    • Warn about disabled interactive features on website (#4762)
    Source code(tar.gz)
    Source code(zip)
  • v1.14.0(Dec 3, 2020)

    This release brings a number of major features including a new IbisInterface, new Plotly Dash support and greatly improved Plotly support, and greatly improved interaction and integration with Datashader. Many thanks to the many contributors to this release, whether directly by submitting PRs or by reporting issues and making suggestions. Specifically, we would like to thank @philippjfr, @jonmmease, and @tonyfast for their work on the IbisInterface and @jonmmease for improving Plotly support, as well as @kcpevey, @Hoxbro, @marckassay, @mcepl, and @ceball for various other enhancements, improvements to documentation and testing infrastructure. In addition, thanks to the maintainers @jbednar, @jlstevens and @philippjfr for contributing to this release. This version includes a large number of new features, enhancements, and bug fixes.

    It is important to note that version 1.14 will be the last HoloViews release supporting Python 2.

    Major features:

    • New Plotly Dash support (#4605)
    • New Plotly support for Tiles element (#4686)
    • New IbisInterface (#4517)
    • Greatly improved Datashader rasterize() (#4567). Previously, many of the features of Datashader were available only through datashade, which rendered data all the way to RGB pixels and thus prevented many client-side Bokeh features like hover, colorbars, dynamic colormaps, etc. rasterize now supports all these Bokeh features along with nearly all the Datashader features previously only available through datashade, including (now client-side) histogram equalization with cnorm='eq_hist' and easy control of transparency via a new Dimension.nodata parameter. See the Large Data User Guide for more information.

    Enhancements:

    • Implemented datashader aggregation of Rectangles (#4701)
    • New support for robust color limits (clim_percentile) (#4712)
    • Support for dynamic overlays in link_selections (#4683)
    • Allow clashing Param stream contents (#4677)
    • Ensured pandas does not convert times to UTC (#4711)
    • Removed all use of cyordereddict (#4620)
    • Testing infrastructure moved to GH Actions (#4592)

    Bug fixes:

    • Ensure RangeXY returns x/y ranges in correct order (#4665) (#4665)
    • Fix datashader instability with Plotly by disabling padding for RGB elements (#4705)
    • Various Dask and cuDF histogram fixes (#4691)
    • Fix handling of custom matplotlib and bokeh colormaps (#4693)
    • Fix cuDF values implementation (#4687)
    • Fixed range calculation on HexTiles (#4689)
    • Use PIL for RGB.load_image (#4639)

    Documentation:

    • Clarified data types accepted by Points (#4430)
    • Updated Introduction notebook (#4682)
    • Fixed releases urls (#4672)

    Compatibility:

    • Warning when there are multiple kdims on Chart elements (#4710)
    • Set histogram normed option to False by default (#4258)
    • The default colormap in holoviews is now 'kbc_r' instead of 'fire'; see issue #3500 for details. This change was made mainly because the highest value of the fire colormap is white, which meant data was often not visible against a white background. To restore the old behavior you can set hv.config.default_cmap='fire', which you can do via the extension e.g. hv.extension('bokeh', config=dict(default_cmap='fire')). There is also hv.config.default_gridded_cmap which you can set to 'fire' if you wish to use the old colormap for the Raster, Image and QuadMesh element types. The default HeatMap colormap has also been set to 'kbc_r' for consistency and can be set back to the old value of 'RdYlBu_r' via hv.config.default_heatmap_cmap.
    Source code(tar.gz)
    Source code(zip)
  • v1.13.5(Oct 28, 2020)

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

    Bug fixes:

    • Improvements to iteration over Series in CuDF data backend (#4624)
    • Added .values_host calls needed for iteraction in CuDF backend (#4646)
    • Fixed bug resetting ranges (#4654)
    • Fix bug matching elements to subplots in DynamicMap (#4649)
    • Ensure consistent split Violin color assignment (#4650)
    • Ensure PolyDrawCallback always has vdim data (#4644)
    • Set default align in bokeh correctly (#4637)
    • Fixed deserialization of polygon/multi_line CDS data in bokeh backend (#4631)

    Enhancements:

    • Refactor of link selections streams (#4572)
    • Add ability to listen to dataset linked_selection (#4547)
    • Added selected parameter to Bokeh PathPlot (#4641)

    Documentation:

    • Improved Bars reference example, demonstrating the dataframe constructor (#4656)
    • Various documentation fixes (#4628)
    Source code(tar.gz)
    Source code(zip)
  • v1.13.4(Oct 23, 2020)

    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 AdjointLayouts (#4586)
    • Fixed color-ranging after box select on side histogram (#4587)
    • Use HTTPS throughout on homepage (#4588)

    Compatibility:

    • Compatibility with bokeh 2.2 for CDSCallback (#4568)
    • Handle rcParam deprecations in matplotlib 3.3 (#4583)

    Enhancements:

    • 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 callback (#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)
    Source code(tar.gz)
    Source code(zip)
  • v1.13.3(Jun 23, 2020)

    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.

    Enhancements:

    • 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)

    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)
    • 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)
    Source code(tar.gz)
    Source code(zip)
  • v1.13.2(Apr 2, 2020)

    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.

    Enhancements:

    • 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)
    Source code(tar.gz)
    Source code(zip)
  • v1.13.1(Mar 25, 2020)

    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.

    Enhancements:

    • Add option to set Plotly plots to responsive (#4319)
    • Unified datetime formatting in bokeh hover info (#4318)
    • Allow using dim expressions as accessors (#4311)
    • Add explicit .df and .xr namespaces to dim expressions to allow using dataframe and xarray APIs (#4320)
    • 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)

    Compatibility:

    • Fix compatibility with Bokeh 2.0.1 (#4308)

    Documentation:

    • Update API reference manual (#4316)
    Source code(tar.gz)
    Source code(zip)
  • v1.13.0(Mar 21, 2020)

    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 Dataset.select (#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 stream (#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)

    Enhancements:

    • 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; usedimension_values (#3985)
    • Element.collapse_data is deprecated; use the container's .collapse method instead (#3985)
    • hv.output filename argument is deprecated; use hv.save instead (#3985)
    Source code(tar.gz)
    Source code(zip)
  • v1.12.7(Nov 23, 2019)

    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.

    Enhancements:

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

    Bug fixes:

    • Fixed shared_axes/axiswise regression (#4097)
    Source code(tar.gz)
    Source code(zip)
  • v1.12.6(Oct 8, 2019)

    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.

    Enhancements:

    • 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)

    Compatibility:

    • 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)
    Source code(tar.gz)
    Source code(zip)
  • v1.12.5(Aug 14, 2019)

    This is a very minor release primarily for compatibility with the latest version of dask (v2.2.0).

    Compatibility:

    • The DaskInterface no longer attempts to import dask.dataframe unless it is already imported (#3900)
    • Scatter3D matplotlib rendering no longer errors with matplotlib >= 3.1 (#3898)

    Bug fixes:

    • Fixed bug converting datetime64 to datetime for dates <1970 (#3879)
    Source code(tar.gz)
    Source code(zip)
  • v1.12.4(Aug 5, 2019)

    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.

    Enhancements:

    • 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)
    • Fixed bug in decimate operation (#3875)

    Compatibility:

    • 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.
    Source code(tar.gz)
    Source code(zip)
  • v1.12.3(May 20, 2019)

    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 hv.help 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)
    Source code(tar.gz)
    Source code(zip)
  • v1.12.2(May 1, 2019)

    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.

    Enhancements:

    • Add styles argument to draw tool streams to allow cycling colors and other styling when drawing glyphs (#3612)
    • Add ability to define alpha on (data)shade operation (#3611)
    • Ensure that categorical plots respect Dimension.values order (#3675)

    Compatibility:

    • 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)
    Source code(tar.gz)
    Source code(zip)
  • v1.12.1(Apr 18, 2019)

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

    Enhancements:

    • Add support for passing in parameter instances as streams (#3616)
    Source code(tar.gz)
    Source code(zip)
  • v1.12.0(Apr 8, 2019)

    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.

    Features:

    • 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)

    Enhancements:

    • 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:

    Source code(tar.gz)
    Source code(zip)
  • v1.11.3(Feb 26, 2019)

    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)

    Enhancements:

    • 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)
    Source code(tar.gz)
    Source code(zip)
  • v1.11.2(Jan 28, 2019)

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

    Bug fixes:

    • Compatibility with pandas 0.24.0 release (#3433)
    • Fixed timestamp selections on streams (#3427)
    • Fixed persisting options during clone on Overlay (#3435)
    • Ensure cftime datetimes are displayed as a slider (#3413)

    Enhancements:

    • Allow defining hook on backend load (#3429)
    • Improvements for handling graph attributes in Graph.from_networkx (#3432)
    Source code(tar.gz)
    Source code(zip)
Owner
HoloViz
High-level tools to simplify visualization in Python
HoloViz
erdantic is a simple tool for drawing entity relationship diagrams (ERDs) for Python data model classes

erdantic is a simple tool for drawing entity relationship diagrams (ERDs) for Python data model classes. Diagrams are rendered using the venerable Graphviz library.

DrivenData 129 Jan 04, 2023
Type-safe YAML parser and validator.

StrictYAML StrictYAML is a type-safe YAML parser that parses and validates a restricted subset of the YAML specification. Priorities: Beautiful API Re

Colm O'Connor 1.2k Jan 04, 2023
Sparkling Pandas

SparklingPandas SparklingPandas aims to make it easy to use the distributed computing power of PySpark to scale your data analysis with Pandas. Sparkl

366 Oct 27, 2022
a plottling library for python, based on D3

Hello August 2013 Hello! Maybe you're looking for a nice Python interface to build interactive, javascript based plots that look as nice as all those

Mike Dewar 1.4k Dec 28, 2022
Jupyter notebook and datasets from the pandas Q&A video series

Python pandas Q&A video series Read about the series, and view all of the videos on one page: Easier data analysis in Python with pandas. Jupyter Note

Kevin Markham 2k Jan 05, 2023
Make sankey, alluvial and sankey bump plots in ggplot

The goal of ggsankey is to make beautiful sankey, alluvial and sankey bump plots in ggplot2

David Sjoberg 156 Jan 03, 2023
Generate a roam research like Network Graph view from your Notion pages.

Notion Graph View Export Notion pages to a Roam Research like graph view.

Steve Sun 214 Jan 07, 2023
100 data puzzles for pandas, ranging from short and simple to super tricky (60% complete)

100 pandas puzzles Puzzles notebook Solutions notebook Inspired by 100 Numpy exerises, here are 100* short puzzles for testing your knowledge of panda

Alex Riley 1.9k Jan 08, 2023
nvitop, an interactive NVIDIA-GPU process viewer, the one-stop solution for GPU process management

An interactive NVIDIA-GPU process viewer, the one-stop solution for GPU process management.

Xuehai Pan 1.3k Jan 02, 2023
The repository is my code for various types of data visualization cases based on the Matplotlib library.

ScienceGallery The repository is my code for various types of data visualization cases based on the Matplotlib library. It summarizes the code and cas

Warrick Xu 2 Apr 20, 2022
A tool for creating SVG timelines from simple JSON input.

A tool for creating SVG timelines from simple JSON input.

Jason Reisman 432 Dec 30, 2022
Some method of processing point cloud

Point-Cloud Some method of processing point cloud inversion the completion pointcloud to incomplete point cloud Some model of encoding point cloud to

Tan 1 Nov 19, 2021
A Python library for plotting hockey rinks with Matplotlib.

Hockey Rink A Python library for plotting hockey rinks with Matplotlib. Installation pip install hockey_rink Current Rinks The following shows the cus

24 Jan 02, 2023
A customized interface for single cell track visualisation based on pcnaDeep and napari.

pcnaDeep-napari A customized interface for single cell track visualisation based on pcnaDeep and napari. 👀 Under construction You can get test image

ChanLab 2 Nov 07, 2021
This is a Cross-Platform Plot Manager for Chia Plotting that is simple, easy-to-use, and reliable.

Swar's Chia Plot Manager A plot manager for Chia plotting: https://www.chia.net/ Development Version: v0.0.1 This is a cross-platform Chia Plot Manage

Swar Patel 1.3k Dec 13, 2022
Insert SVGs into matplotlib

Insert SVGs into matplotlib

Andrew White 35 Dec 29, 2022
Log visualizer for whirl-framework

Lumberjack Log visualizer for whirl-framework Установка pip install -r requirements.txt Как пользоваться python3 lumberjack.py -l путь до лога -o

Vladimir Malinovskii 2 Dec 19, 2022
HiPlot makes understanding high dimensional data easy

HiPlot - High dimensional Interactive Plotting HiPlot is a lightweight interactive visualization tool to help AI researchers discover correlations and

Facebook Research 2.4k Jan 04, 2023
Some examples with MatPlotLib library in Python

MatPlotLib Example Some examples with MatPlotLib library in Python Point: Run files only in project's directory About me Full name: Matin Ardestani Ag

Matin Ardestani 4 Mar 29, 2022
By default, networkx has problems with drawing self-loops in graphs.

By default, networkx has problems with drawing self-loops in graphs. It makes it hard to draw a graph with self-loops or to make a nicely looking chord diagram. This repository provides some code to

Vladimir Shitov 5 Jan 06, 2022