You are viewing a free preview of this lesson.
Subscribe to unlock all 10 lessons in this course and every other course on LearningBro.
Plotly is a Python library for creating interactive, publication-quality visualisations that can be displayed in Jupyter notebooks, embedded in web applications, or exported as standalone HTML files. Unlike Matplotlib and Seaborn (which produce static images), Plotly charts support hover tooltips, zoom, pan, click events, and animations out of the box.
pip install plotly
Plotly has two main APIs:
| API | Description | Code Complexity |
|---|---|---|
Plotly Express (px) | High-level, concise, DataFrame-friendly | Low |
Graph Objects (go) | Low-level, maximum customisation | Higher |
Tip: Start with Plotly Express for most charts. Drop down to Graph Objects only when you need advanced customisation.
import plotly.express as px
df = px.data.iris()
fig = px.scatter(df, x="sepal_width", y="sepal_length",
color="species", size="petal_length",
hover_data=["petal_width"],
title="Iris Dataset — Sepal Dimensions")
fig.show()
import plotly.express as px
df = px.data.gapminder()
df_uk = df[df["country"] == "United Kingdom"]
fig = px.line(df_uk, x="year", y="gdpPercap",
title="UK GDP Per Capita Over Time",
labels={"gdpPercap": "GDP Per Capita (USD)",
"year": "Year"})
fig.show()
import plotly.express as px
df = px.data.tips()
fig = px.bar(df, x="day", y="total_bill", color="sex",
barmode="group",
title="Total Bill by Day and Sex",
labels={"total_bill": "Total Bill (USD)"})
fig.show()
import plotly.express as px
df = px.data.tips()
fig = px.histogram(df, x="total_bill", nbins=30,
color="time", barmode="overlay",
opacity=0.7,
title="Distribution of Total Bill")
fig.show()
import plotly.express as px
df = px.data.tips()
fig = px.box(df, x="day", y="total_bill", color="smoker",
title="Total Bill Distribution by Day",
points="outliers")
fig.show()
import plotly.express as px
import pandas as pd
import numpy as np
np.random.seed(42)
data = np.random.randn(10, 10)
labels = [f"Var {i}" for i in range(10)]
fig = px.imshow(data, x=labels, y=labels,
color_continuous_scale="RdBu_r",
title="Heatmap Example")
fig.show()
For advanced customisation, use the plotly.graph_objects module.
import plotly.graph_objects as go
import numpy as np
x = np.linspace(0, 10, 100)
fig = go.Figure()
fig.add_trace(go.Scatter(x=x, y=np.sin(x),
mode="lines", name="sin(x)",
line=dict(color="#4C72B0", width=2)))
fig.add_trace(go.Scatter(x=x, y=np.cos(x),
mode="lines+markers", name="cos(x)",
line=dict(color="#DD8452", width=2, dash="dash"),
marker=dict(size=4)))
fig.update_layout(
title="Trigonometric Functions",
xaxis_title="x",
yaxis_title="y",
template="plotly_white",
legend=dict(x=0.01, y=0.99)
)
fig.show()
from plotly.subplots import make_subplots
import plotly.graph_objects as go
import numpy as np
fig = make_subplots(rows=1, cols=2,
subplot_titles=("Sine", "Cosine"))
x = np.linspace(0, 10, 100)
Subscribe to continue reading
Get full access to this lesson and all 10 lessons in this course.