Plotly

raw JSON →
6.6.0 verified Tue May 12 auth: no python install: verified quickstart: stale

Plotly is an interactive, open-source data visualization library for Python, built on top of the Plotly JavaScript library (plotly.js). It supports over 40 unique chart types, enabling users to create rich, interactive web-based visualizations that can be displayed in Jupyter notebooks, saved as standalone HTML files, or integrated into pure Python web applications using Dash. Currently at version 6.6.0, Plotly maintains an active development and release cadence.

pip install plotly
error ModuleNotFoundError: No module named 'plotly'
cause The Plotly library is not installed in the current Python environment where the code is being executed.
fix
Install Plotly using pip: pip install plotly
error AttributeError: 'Figure' object has no attribute 'show'
cause This error typically occurs when using an older version of Plotly (prior to v4.0) where the `.show()` method for displaying figures was not implemented or if the Figure object itself is `None` due to a previous error.
fix
Upgrade Plotly to the latest version using pip: pip install --upgrade plotly. Also ensure the Figure object is correctly instantiated and not None.
error NameError: name 'px' is not defined
cause The `plotly.express` module, commonly aliased as `px`, has not been imported before being used in the code.
fix
Add the import statement import plotly.express as px at the beginning of your script or notebook cell.
error AttributeError: module 'plotly.graph_objects' has no attribute 'Figure'
cause This error occurs due to incorrect capitalization. The class name for creating a figure from `plotly.graph_objects` is `Figure` (with a capital 'F'), not `figure` (lowercase 'f').
fix
Change go.figure() to go.Figure() when instantiating a graph object figure.
error Plotly charts not showing in Jupyter Notebook/Lab (empty space)
cause This can be caused by various factors, including an unresponsive kernel, outdated Plotly or Jupyter packages, browser compatibility issues, missing or incorrectly installed JupyterLab extensions (`jupyterlab-plotly` and `plotlywidget`), or an outdated `plotly.js` rendering engine.
fix
Ensure plotly and jupyterlab are up-to-date (pip install --upgrade plotly jupyterlab). Install JupyterLab extensions (jupyter labextension install jupyterlab-plotly @jupyter-widgets/jupyterlab-manager) and restart Jupyter Lab. For some versions, downgrading JupyterLab might be a temporary workaround.
breaking Plotly.py 6.0 dropped support for Jupyter Notebook versions prior to 7.0. Users on older Jupyter versions will need to upgrade.
fix Upgrade your Jupyter Notebook installation to version 7.0 or newer (e.g., `pip install --upgrade notebook`).
breaking Plotly.py 6.0 introduced a rewrite of dataframe performance using the Narwhals abstraction layer instead of solely relying on the Pandas API. While generally providing performance gains, this might subtly affect direct Pandas dataframe interactions for users upgrading from older versions.
fix Review code interacting directly with Pandas DataFrames if experiencing unexpected behavior or performance changes after upgrading. Consider adopting the dataframe interchange protocol for broader compatibility.
breaking Plotly.js 3.0 (which plotly.py 6.0 is built upon) removed support for several deprecated attributes (e.g., `titlefont`, `titleposition`, `titleside`, `titleoffset`) and specific trace types like `pointcloud` and `heatmapgl`.
fix Consult the Plotly.js 3.0 changelog for replacement attributes or alternative trace types if using any of the removed features.
gotcha For static image export of Plotly figures (e.g., to PNG, JPEG, SVG, PDF), the `kaleido` package is the recommended engine since Plotly 4.9. The older `orca` command-line utility is now considered legacy and may have compatibility issues.
fix Install `kaleido` (`pip install -U kaleido`) for reliable static image export. Remove any reliance on `orca`.
gotcha When creating figures, `plotly.express` automatically infers sensible defaults and is much more concise (5-100 times less code) than building figures directly with `plotly.graph_objects`. Using `go` requires explicit definition of traces and layout.
fix For most common plotting needs, start with `plotly.express`. Use `plotly.graph_objects` when `plotly.express` doesn't provide the necessary customization or for highly specialized plots (e.g., certain 3D trace types, complex subplots with different types).
pip install 'plotly[kaleido]' # For static image export pip install plotly-geo # For extended geographic features
python os / libc variant status wheel install import disk
3.10 alpine (musl) kaleido - - - -
3.10 alpine (musl) plotly - - - -
3.10 slim (glibc) kaleido - - - -
3.10 slim (glibc) plotly - - - -
3.11 alpine (musl) kaleido - - - -
3.11 alpine (musl) plotly - - - -
3.11 slim (glibc) kaleido - - - -
3.11 slim (glibc) plotly - - - -
3.12 alpine (musl) kaleido - - - -
3.12 alpine (musl) plotly - - - -
3.12 slim (glibc) kaleido - - - -
3.12 slim (glibc) plotly - - - -
3.13 alpine (musl) kaleido - - - -
3.13 alpine (musl) plotly - - - -
3.13 slim (glibc) kaleido - - - -
3.13 slim (glibc) plotly - - - -
3.9 alpine (musl) kaleido - - - -
3.9 alpine (musl) plotly - - - -
3.9 slim (glibc) kaleido - - - -
3.9 slim (glibc) plotly - - - -

This quickstart demonstrates creating a basic bar chart using `plotly.express`, the high-level API. The `fig.show()` method renders the interactive plot, typically in a browser or Jupyter environment.

import plotly.express as px

# Create a simple bar chart
fig = px.bar(x=["A", "B", "C"], y=[1, 3, 2], title="My First Plotly Chart")

# Display the figure (opens in browser/notebook)
fig.show()