Install & Compatibility
Where this runs
tested against v0.12.2 · pip install
no network on importno background threads
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
muslpy 3.10–3.95 runs
installs and imports cleanly · install 0.0s · import 16.276s · 391.8MB
glibcpy 3.10–3.95 runs
installs and imports cleanly · install 15.6s · import 14.746s · 381MB
390MB installed
● package 390MB
Code
Verified usage
Verified import paths — ran on the pinned version, not inferred.
.hvplot accessor
✓ import hvplot.pandas
# or hvplot.xarray, hvplot.dask, etc.
Imports the hvplot accessor onto the respective data structures, making the .hvplot method available. This also loads the Bokeh extension by default.
hvplot.extension
✓ import hvplot.pandas
hvplot.extension('matplotlib')
✗ import hvplot.matplotlib
Plotting extensions (backends) are loaded via `hvplot.extension()` after importing a data accessor, not directly as a top-level module.
hvplot.show
✓ from hvplot import show
# ... create plot ...
show(plot_object)
✗ plot_object.show()
While `.show()` might implicitly work in some environments, for explicit display outside of notebooks or for more control, `hvplot.show()` (or `bokeh.plotting.show(hv.render(plot_object))` from HoloViews/Bokeh) is the correct pattern.
This quickstart demonstrates how to import hvplot for Pandas DataFrames and create a basic interactive line plot using the familiar `.hvplot` accessor.
import pandas as pd
import numpy as np
import hvplot.pandas # noqa
df = pd.DataFrame(
np.random.randn(100, 4),
index=pd.date_range('1/1/2000', periods=100),
columns=list('ABCD')
).cumsum()
df.hvplot.line(y='A', title='Interactive Line Plot of Column A')
Debug
Known issues
deprecatedThe `hover_formatters` argument is deprecated in favor of `hover_tooltips`. Additionally, passing `DuckDB` objects directly to `hvplot.plotting.plot` is discouraged; users should instead `import hvplot.duckdb` to enable proper integration.fixReplace `hover_formatters` with `hover_tooltips`. For DuckDB objects, ensure you import `hvplot.duckdb` to enable the accessor: `import hvplot.duckdb`.
affects: 0.12.0+
gotchahvplot outputs, especially with Bokeh or Plotly backends, may not display immediately or at all in some IDEs (like PyCharm) or Jupyter environments (requiring a page refresh) due to their limited notebook integration or specific HoloViews/Bokeh version incompatibilities.fixEnsure Bokeh and HoloViews are up-to-date. In problematic Jupyter environments, a page refresh might resolve it. For external IDEs, consider rendering the plot to an HTML file or serving it explicitly using `hvplot.show()` (which wraps HoloViews/Bokeh rendering utilities).
affects: All versions, particularly with older HoloViews/Bokeh combinations (e.g., HoloViews 1.18.1 with Bokeh 3.3.2).
gotchaSome advanced plotting options, such as `subplots=True` for `hist` or `hexbin` plots, may have limited or no support with the Matplotlib backend. When plotting Dask DataFrames with Matplotlib, explicit computation (`.compute()`) might be necessary to avoid errors or blank plots.fixFor full interactivity and broader feature support, prefer the Bokeh or Plotly backends. If Matplotlib is required, consult the documentation for supported plot types and options, and `.compute()` Dask DataFrames before plotting.
affects: All versions
breakingFor geographic plots with `tiles=True`, `hvplot>=0.11.0` automatically converts latitude/longitude to Web Mercator. Prior to `v0.11.0`, manual projection using utilities like `holoviews.util.transform.lon_lat_to_easting_northing` was often required.fixIf upgrading from `<0.11.0`, be aware that existing code for manual projection with `tiles=True` might now be redundant or conflict with the new automatic behavior. Review and potentially remove manual projection steps for `tiles=True` plots.
affects: <0.11.0 (requires manual projection), 0.11.0+ (automatic projection)
gotchaLine plots of time series or sparse data with `NaN` values may exhibit 'disappearing lines' when zooming in, especially if single data points are surrounded by `NaN`s, as a line requires at least two points. This can sometimes be exacerbated by WebGL rendering in older Bokeh versions.fixConsider overlaying a scatter plot (`.hvplot.scatter()`) to show individual data points. Ensure Bokeh and HoloViews are up-to-date, as some rendering issues (e.g., with WebGL) might be fixed in newer versions. Filtering out `NaN` values or interpolating might also be options depending on data requirements.
affects: All versions, potentially worse with older Bokeh/HoloViews
Errors
Common errors & fixes
ModuleNotFoundError: No module named 'holoviews'
hvplot relies on HoloViews, and this error occurs when the 'holoviews' package is either not installed or its version is incompatible with the installed hvplot version.
fixEnsure HoloViews is installed and updated to a compatible version. It's often best to upgrade both hvplot and holoviews.
`pip install -U holoviews hvplot`
AttributeError: 'DataFrame' object has no attribute 'hvplot'
This error typically means that the `hvplot` accessors (like `.hvplot` for Pandas DataFrames) have not been correctly registered. This usually happens if `hvplot.pandas` (or the equivalent for other data types like `hvplot.xarray`) has not been imported.
fixImport the specific hvplot accessor for your data structure. For Pandas DataFrames, use:
`import hvplot.pandas`
TypeError: Bokeh is undefined Panel: ERROR: Unable to run Panel code because Bokeh or Panel library is missing.
This error, often seen in Jupyter environments, indicates a version incompatibility or missing components among Bokeh, HoloViews, Panel, and hvplot, which are all part of the HoloViz ecosystem.
fixEnsure all related HoloViz libraries (bokeh, holoviews, panel, hvplot) are updated to compatible versions, ideally by upgrading them together. Sometimes, disabling WebGL rendering in Bokeh can also resolve display issues.
`pip install -U bokeh holoviews panel hvplot`
`import holoviews as hv`
`hv.renderer('bokeh').webgl = False` WARNING:param.main: Calling the .opts method with options broken down by options group (i.e. separate plot, style and norm groups) is deprecated.
This is a deprecation warning indicating that the way options are being passed to the `.opts()` method is outdated. HoloViews (which hvplot builds upon) has a newer, simplified syntax for applying plot options.
fixUpdate your code to use the simplified `.opts()` syntax, or if separating options is necessary, use `hv.opts.apply_groups` for backward compatibility. Refer to the HoloViews documentation for the current recommended approach.
`# Old (deprecated) way:`
`df.hvplot.line().opts(plot=dict(width=400), norm=dict(axiswise=True))`
`# New way:`
`df.hvplot.line().opts(width=400, axiswise=True)`
Upgrade
Version history
0.12.2latest on PyPI · released Dec 18, 2025
Audit
Dependencies
holoviewsrequiredhvplot is built on HoloViews, requiring it as a core dependency for plot generation and backend management.
pandasrequiredWidely used as a primary data source for hvplot's DataFrame-like plotting API.
bokehrequiredThe default and most commonly used interactive plotting backend for hvplot.
xarrayoptionalProvides .hvplot accessors for working with labeled multi-dimensional arrays.
daskoptionalEnables plotting of larger-than-memory datasets by integrating with Dask DataFrames.
geopandasoptionalAdds geospatial plotting capabilities and accessors for GeoDataFrames.
matplotliboptionalOptional backend for generating static plots.
plotlyoptionalOptional backend for generating interactive plots with Plotly.
datashaderoptionalRecommended for efficiently visualizing large datasets, especially for rasterization.