In Plotly, a trace represents a single dataset or graphical element within a chart. Each trace is an object that defines how data is displayed—such as lines, bars, markers, or other shapes. You can use multiple traces to layer and customize complex plots.
What is a Trace?
A trace is essentially a dictionary-like object (or class instance) that holds both your data and styling. You can create different types of traces using Plotly classes like go.Scatter
, go.Bar
, go.Box
, etc.
Example: Single Trace (Line Plot)
import plotly.graph_objects as go
fig = go.Figure()
fig.add_trace(go.Scatter(
x=[1, 2, 3, 4],
y=[10, 11, 12, 13],
mode='lines+markers',
name='Line Trace'
))
fig.show()
This example creates a single trace using go.Scatter
, where x
and y
are the data points. The mode
defines the style of the plot.
Example: Multiple Traces
You can add multiple traces to the same figure to compare datasets.
fig = go.Figure()
fig.add_trace(go.Scatter(
x=[1, 2, 3, 4],
y=[10, 15, 13, 17],
mode='lines',
name='Dataset 1'
))
fig.add_trace(go.Scatter(
x=[1, 2, 3, 4],
y=[16, 5, 11, 9],
mode='markers',
name='Dataset 2'
))
fig.show()
In this chart, both traces are added to a single figure object. Each one can have its own style, data, and name.
Types of Traces
Common trace types include:
go.Scatter
– line and marker plotsgo.Bar
– bar chartsgo.Box
– box plotsgo.Heatmap
– heatmapsgo.Pie
– pie chartsgo.Histogram
– histograms
Using Traces with plotly.express
If you use plotly.express
, you don’t need to define traces manually—Plotly handles it for you internally. For example:
import plotly.express as px
df = px.data.gapminder().query("year == 2007")
fig = px.scatter(df, x="gdpPercap", y="lifeExp", color="continent",
size="pop", hover_name="country", log_x=True)
fig.show()
Even though you didn’t define a trace directly, Plotly Express is creating and managing multiple traces behind the scenes.
Traces are at the core of how Plotly structures and displays data. By understanding how to create and manipulate traces, you gain full control over your chart’s behavior and style. Whether you’re using plotly.graph_objects
for full control or plotly.express
for convenience, traces are always at work under the hood.