Interactive charts for Python and JavaScript.
The open-source graphing libraries that the data visualization world is built on.
10M+
developers
50M+
monthly PyPI + npm
downloads
70K+
GitHub stars across libraries
#1
most popular interactive
charting library for Python
See them in action
Interactive charts. Try them right here.
Open source by default
One charting engine. 70+ chart types. Used by hundreds of thousands of developers, engineers, scientists and analysts across finance, healthcare & life sciences, energy & utilities, retail and manufacturing.
Part-to-whole
Used by every tool in the modern data stack
plotly.py and plotly.js are the engine behind interactive data visualization across the modern data stack
Python Frameworks
Dash, Plotly Studio, Plotly Express, Streamlit, Voila
Notebooks
Jupyter Notebook, Google Colab, Databricks Notebook, Azure Notebooks, Hex, Deepnote
AI Coding Tools & App Builders
Claude, ChatGPT, Cursor, Lovable, Bold, Replit, Retool
Languages
One API. Every language your team uses.
chart.py
Python
import plotly.express as px
df = px.data.gapminder()
fig = px.scatter(
df.query("year == 2007"),
x="gdpPercap",
y="lifeExp",
size="pop",
color="continent",
hover_name="country",
log_x=True,
size_max=60,
)
fig.show()chart.js
JavaScript
import Plotly from 'plotly.js-dist-min';
const trace = {
x: gdpPercap,
y: lifeExp,
mode: 'markers',
marker: {
size: pop,
color: continentColor,
},
text: countries,
type: 'scatter',
};
Plotly.newPlot('chart', [trace], {
xaxis: { type: 'log', title: 'GDP per capita' },
yaxis: { title: 'Life expectancy' },
});plotly.py
The most-downloaded interactive charting library in Python. Pip install, fig.show(), done.
plotly.js
The pure-JavaScript engine underneath every Plotly figure. Embed in any web app - no Python required.
One spec, every language
The same JSON figure spec drives R, Julia, MATLAB, ggplot2, and F#. Author anywhere; render identically everywhere plotly.js runs.
Interactive charts tell a story
Hover, zoom, pan, animate.
Every chart works in the browser. No JavaScript required.
Zoom, pan, and select
Every chart is explorable. Users can zoom into regions of interest, pan across datasets, and box-select data points — no extra code required.
Hover tooltips
Hovering reveals the data behind any point. Fully customizable templates let you show exactly the context your audience needs.
Client-side rendering
Charts render in the browser using WebGL and SVG. No server round-trips for interactions — everything is instant, even with millions of points.
Export anywhere
One click to download as PNG, SVG, or PDF. Every chart is presentation-ready and publication-quality without extra tooling.
Responsive and embeddable
Charts resize automatically. Embed them in Dash apps, notebooks, web pages, dashboards. Or export them as static images in PDF reports or Slack messages.
Themeable
Built-in templates for Plotly, Seaborn, ggplot2, and more. Create custom themes to match your brand and reuse them across every chart.
THE JOURNEY
From one chart to a production platform
Explore
Start with a chart
You have the data and you need to visualize it. Create a graph in Python, JavaScript, or Plotly Studio and share it as a screenshot.
Build
Turn it into an app with Dash
Your chart is useful. Now your team wants filters, dropdowns, a login page, and a URL they can bookmark. Dash wraps your Plotly charts in a real web application — still pure Python, still the same chart API.
Deploy
Ship it with Plotly Cloud or Dash Enterprise
You've used Plotly to build a chart and/or Dash to build a web application, now you need to share it. The easiest and fastest way to share it is with one click deployment to Plotly Cloud for instant hosting or Dash Enterprise on your own infrastructure.
Tech Specs
License
MIT (open source)Form factor
Python and JavaScript librariesInstall
pip install plotlynpm i plotly.js-dist