jupyter | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
This example shows how to fill the area enclosed by traces.
Plotly Express is the easy-to-use, high-level interface to Plotly, which operates on a variety of types of data and produces easy-to-style figures.
px.area
creates a stacked area plot. Each filled area corresponds to one value of the column given by the line_group
parameter.
import plotly.express as px
df = px.data.gapminder()
fig = px.area(df, x="year", y="pop", color="continent",
line_group="country")
fig.show()
import plotly.graph_objects as go
fig = go.Figure()
fig.add_trace(go.Scatter(x=[1, 2, 3, 4], y=[0, 2, 3, 5], fill='tozeroy')) # fill down to xaxis
fig.add_trace(go.Scatter(x=[1, 2, 3, 4], y=[3, 5, 1, 7], fill='tonexty')) # fill to trace0 y
fig.show()
import plotly.graph_objects as go
fig = go.Figure()
fig.add_trace(go.Scatter(x=[1, 2, 3, 4], y=[0, 2, 3, 5], fill='tozeroy',
mode='none' # override default markers+lines
))
fig.add_trace(go.Scatter(x=[1, 2, 3, 4], y=[3, 5, 1, 7], fill='tonexty',
mode= 'none'))
fig.show()
import plotly.graph_objects as go
fig = go.Figure()
fig.add_trace(go.Scatter(x=[1, 2, 3, 4], y=[3, 4, 8, 3],
fill=None,
mode='lines',
line_color='indigo',
))
fig.add_trace(go.Scatter(
x=[1, 2, 3, 4],
y=[1, 6, 2, 6],
fill='tonexty', # fill area between trace0 and trace1
mode='lines', line_color='indigo'))
fig.show()
The stackgroup
parameter is used to add the y
values of the different traces in the same group. Traces in the same group fill up to the next trace of the group.
import plotly.graph_objects as go
x=['Winter', 'Spring', 'Summer', 'Fall']
fig = go.Figure()
fig.add_trace(go.Scatter(
x=x, y=[40, 60, 40, 10],
hoverinfo='x+y',
mode='lines',
line=dict(width=0.5, color='rgb(131, 90, 241)'),
stackgroup='one' # define stack group
))
fig.add_trace(go.Scatter(
x=x, y=[20, 10, 10, 60],
hoverinfo='x+y',
mode='lines',
line=dict(width=0.5, color='rgb(111, 231, 219)'),
stackgroup='one'
))
fig.add_trace(go.Scatter(
x=x, y=[40, 30, 50, 30],
hoverinfo='x+y',
mode='lines',
line=dict(width=0.5, color='rgb(184, 247, 212)'),
stackgroup='one'
))
fig.update_layout(yaxis_range=(0, 100))
fig.show()
import plotly.graph_objects as go
x=['Winter', 'Spring', 'Summer', 'Fall']
fig = go.Figure()
fig.add_trace(go.Scatter(
x=x, y=[40, 20, 30, 40],
mode='lines',
line=dict(width=0.5, color='rgb(184, 247, 212)'),
stackgroup='one',
groupnorm='percent' # sets the normalization for the sum of the stackgroup
))
fig.add_trace(go.Scatter(
x=x, y=[50, 70, 40, 60],
mode='lines',
line=dict(width=0.5, color='rgb(111, 231, 219)'),
stackgroup='one'
))
fig.add_trace(go.Scatter(
x=x, y=[70, 80, 60, 70],
mode='lines',
line=dict(width=0.5, color='rgb(127, 166, 238)'),
stackgroup='one'
))
fig.add_trace(go.Scatter(
x=x, y=[100, 100, 100, 100],
mode='lines',
line=dict(width=0.5, color='rgb(131, 90, 241)'),
stackgroup='one'
))
fig.update_layout(
showlegend=True,
xaxis_type='category',
yaxis=dict(
type='linear',
range=[1, 100],
ticksuffix='%'))
fig.show()
import plotly.graph_objects as go
fig = go.Figure()
fig.add_trace(go.Scatter(x=[0,0.5,1,1.5,2], y=[0,1,2,1,0],
fill='toself', fillcolor='darkviolet',
hoveron = 'points+fills', # select where hover is active
line_color='darkviolet',
text="Points + Fills",
hoverinfo = 'text+x+y'))
fig.add_trace(go.Scatter(x=[3,3.5,4,4.5,5], y=[0,1,2,1,0],
fill='toself', fillcolor = 'violet',
hoveron='points',
line_color='violet',
text="Points only",
hoverinfo='text+x+y'))
fig.update_layout(
title = "hover on <i>points</i> or <i>fill</i>",
xaxis_range = [0,5.2],
yaxis_range = [0,3]
)
fig.show()
See https://plotly.com/python/reference/scatter/#scatter-line and https://plotly.com/python/reference/scatter/#scatter-fill for more information and attribute options!