hvPlot: high-level plotting for the PyData ecosystem
A high-level plotting API for pandas, dask, xarray, and networkx built on HoloViews
At a glance
- What is it?
- hvPlot gives pandas, Dask, xarray, Polars, GeoPandas, and NetworkX objects a concise plotting interface backed by HoloViews, Bokeh, Matplotlib, or Plotly. It fits exploratory analysis and HoloViz applications, but adds a dependency stack beyond what a direct plotting call requires.
- Who is it for?
- hvPlot is appropriate for Python users who want concise plots backed by the HoloViz ecosystem, especially when interactive exploration or Panel integration matters. It is a weaker fit for a small static report that only needs pandas or Matplotlib.
- Can I use it commercially?
- Yes. BSD-3-Clause is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository received new commits within the last day.
- What is it written in?
- Mainly Python, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.
Editorial analysis
Where hvPlot fits in a pandas and PyData workflow
hvPlot addresses a specific gap between familiar dataframe plotting and the lower-level HoloViews object model. Its API is based on the pandas `.plot` interface and an `.interactive` interface, so its main audience is Python users already working with data structures such as pandas DataFrames. The README also lists support for Polars, xarray, Dask, GeoPandas, and NetworkX. That range makes hvPlot relevant to exploratory analysis, reporting, and data applications rather than only conventional notebook charts.
The project is not a new rendering engine. According to `pyproject.toml`, hvPlot is built on HoloViews and depends on Bokeh, HoloViews, NumPy, pandas, Panel, Param, colorcet, and packaging. It also supports Matplotlib and Plotly as plotting backends. This distinction matters during evaluation: choosing hvPlot means adopting a conversion and interaction layer around established plotting tools, not replacing the numerical data model.
For a team that publishes a static figure through Matplotlib and has no interest in interactive controls or Panel applications, that extra abstraction may be unnecessary. A direct pandas or Matplotlib call is the narrower path. hvPlot becomes more defensible when the same plotting vocabulary must serve multiple supported data libraries or when an exploratory chart is expected to become an interactive object later.
How hvPlot converts data into HoloViews objects
The documented architecture is a high-level plotting API in the `hvplot` package, with HoloViews providing the underlying representation. The README describes the interface as familiar because it follows pandas `.plot` conventions while adding `.interactive`. A user can therefore request a plot through a concise method rather than assemble every plot element at the HoloViews level.
The package metadata reinforces this structure. `hvplot` depends directly on `holoviews >=1.19.0`, `panel >=1.0`, and `bokeh >=3.1`, while also declaring pandas, NumPy, Param, and colorcet. The dependency on Panel connects hvPlot to the application side of the HoloViz stack, and the README lists dashboards and data apps among its use cases. The repository description likewise identifies HoloViews as the foundation.
Backend support is described as Bokeh, Matplotlib, and Plotly. hvPlot therefore provides one high-level surface over more than one rendering route. The README does not document how a particular backend is selected, which keyword controls that selection, or how conversion errors are reported. It would therefore be unsafe to claim that changing a backend requires no changes in output, dependencies, or feature support. The project centralizes plotting syntax, but exact backend compatibility still needs checking in the reference documentation.
Data-library support crosses different object models
The README's list of supported sources is broad: pandas, Polars, xarray, Dask, GeoPandas, and NetworkX. These libraries do not share one object model. A DataFrame plot generally associates columns with roles such as horizontal value, vertical value, and grouping. These libraries expose different object models, so chart and argument support may vary by library.
hvPlot's value here is a common entry point, not evidence that every chart type behaves identically across all six libraries. The README does not publish a compatibility matrix for combinations of source, plot kind, backend, or data size. It also does not explain the boundary between eager pandas data and lazy Dask computation. Before selecting a plot function for a production notebook, check the hvPlot reference for that exact object type and combination of arguments.
The repository topics include `datashader`, which is relevant to dense visualizations in the HoloViz ecosystem. However, `pyproject.toml` does not declare Datashader as a required dependency, and the README does not give a Datashader installation or configuration example. It would be incorrect to assume that installing hvPlot automatically installs every optional visualization dependency. The basic package metadata names only the direct dependencies declared there, with additional packages grouped under optional or development configurations.
Installing hvPlot and beginning a first chart
The README links to the official installation instructions at `https://hvplot.holoviz.org` and to a separate getting-started guide. It does not include an exact installation command, and `pyproject.toml` contains package metadata rather than user-facing installation commands. To avoid inventing a package-manager command or version constraint, follow the installation instructions in the official documentation.
Before installation, the package metadata establishes a concrete compatibility boundary. `requires-python` is `>=3.10`, and classifiers list Python 3.10 through 3.14. hvPlot requires Bokeh 3.1 or later, HoloViews 1.19.0 or later, NumPy 1.21 or later, pandas 1.3 or later, Panel 1.0 or later, and Param 1.12.0 or later but below 3.0. Existing environments may therefore require coordinated dependency resolution rather than adding hvPlot in isolation.
For a first use, begin with the pandas `.plot` and `.interactive` interfaces documented in the README. The expected starting point is an existing pandas DataFrame and the plotting call documented for the chart you need. The README does not include a complete DataFrame definition or executable plotting example, so it would be misleading to fabricate column names, chart kinds, or expected output. The getting-started guide is the appropriate place to copy a complete first plot. Once created, determine whether the resulting chart should remain a static report or become a Panel application.
Interactive charts and Panel application integration
hvPlot is most differentiated when a plot serves as an interactive object rather than a one-time image. The README's `.interactive` API exposes HoloViz capabilities through a method that remains close to familiar dataframe plotting. This is the clearest reason to accept hvPlot's larger dependency set. A user who expects linked exploration can remain in the high-level interface instead of manually constructing and linking HoloViews elements.
The README names exploration, reporting, and data apps as supported scenarios. It also points to Panel when describing an interactive dashboard. The package metadata confirms that Panel is a direct dependency, so this is an architectural relationship rather than an unrelated suggestion. That coupling is useful if the chart will be embedded in the wider HoloViz stack. It becomes a cost when application serving and interaction machinery are not part of the intended deliverable.
The README does not document widget choices, layout composition, callback behavior, server deployment, or browser compatibility. It also does not give a command for launching a Panel application. Those details should be taken from hvPlot's tutorials and Panel documentation rather than inferred from the existence of `.interactive`. For reporting, the same caution applies: an interactive HoloViews object may require an HTML-capable renderer or embedding workflow that a static Matplotlib image does not.
hvPlot versus direct pandas, Matplotlib, or Bokeh code
The real alternative is direct plotting through pandas, Matplotlib, or Bokeh. Direct pandas plotting starts from the same familiar `.plot` convention but requires fewer HoloViz-specific layers. Matplotlib and Bokeh may be more direct choices for a fixed output format. These approaches can be simpler when the chart has a fixed output format and the project does not use HoloViews or Panel.
hvPlot changes the approach by translating a concise high-level request into the HoloViz ecosystem and presenting Bokeh, Matplotlib, or Plotly as backend choices. That abstraction is useful when one interface must cover several data libraries or when interactive exploration is a core requirement. The cost is a larger dependency graph and an additional object layer between application code and the backend.
The alternative is not always lower-level in every sense. Users who need exact control over annotations, custom transforms, event handling, or rendering internals may need to leave hvPlot and work with HoloViews, Bokeh, Matplotlib, or Plotly directly. The README does not state exactly when hvPlot defers to those lower-level APIs. Evaluate the getting-started chart and reference documentation for the intended source and chart type before committing an entire visualization layer to hvPlot.
Release history, upgrades, and BSD licensing
The repository is not archived. Its last push was on 2026-09-30. Releases include v0.12.2 on 2025-12-18, v0.12.1 on 2025-08-29, and v0.12.0 on 2025-08-01. These dates establish a recent development history, but they do not say whether any particular release will be compatible with an existing notebook or application.
Upgrade planning should account for the broad package graph. hvPlot directly constrains Bokeh, HoloViews, Panel, pandas, NumPy, Param, and colorcet. Moving to a new hvPlot release can therefore coincide with changes elsewhere in a scientific Python environment. The repository contains `CHANGELOG.md` and `pyproject.toml`, which are the concrete files to inspect for release-specific notes and dependency requirements before changing a pinned environment.
The repository identifies `BSD-3-Clause` as the license, while `pyproject.toml` declares `license = { text = "BSD" }` and classifies the package under the OSI-approved BSD license. This identifies the project's advertised license terms. It does not answer questions about compatibility with bundled dependencies, internal organization policy, or obligations in a particular distribution, and this review does not provide legal advice.
Editorial conclusion
hvPlot is appropriate for Python users who want concise plots backed by the HoloViz ecosystem, especially when interactive exploration or Panel integration matters. It is a weaker fit for a small static report that only needs pandas or Matplotlib. Before adoption, verify compatibility with the exact data-library and plotting-backend versions in the application environment, then confirm that the additional HoloViews, Panel, Bokeh, NumPy, and Param dependencies are acceptable.
Frequently asked questions
Which Python versions does hvPlot support?
The package metadata sets `requires-python = ">=3.10"` and lists classifiers for Python 3.10 through 3.14.
Which data libraries can hvPlot plot?
The README lists pandas, Polars, xarray, Dask, GeoPandas, and NetworkX. It does not provide a chart-by-chart compatibility matrix.
Which plotting backends does hvPlot support?
The README names Bokeh, Matplotlib, and Plotly. The package metadata directly requires Bokeh, while the README does not explain backend selection.
What license does hvPlot use?
The repository identifies the license as `BSD-3-Clause`, and `pyproject.toml` declares it as a BSD license under the OSI-approved license classifier.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/holoviz-hvplot)Was this useful?