Prerequisites: Python Plotly
In this article, we will explore how to set up multiple subplots with grouped legends using Plotly in Python.
It is a useful approach to demonstrate legend for a plot as it allows to reveal a large amount of information about complex information. A legend in the plotly library basically describes the graph elements. One of the most deceptively-powerful features of Plotly data visualization is the ability for a viewer to quickly analyze a sufficient amount of information about data when pointing the cursor over the point label appears.
Syntax: plotly.graph_objects.Scatter(x=data, y=data, legendgroup=str, showlegend=bool)
Parameters:
- x: data of x-axis
- y: data of y-axis
- legendgroup: name of the legend
- showlegend: True(default)/False
Example 1:
Here, Two stacked subplot with 3 grouped legends with the help of one of the parameters that are showlegend: True/False.
for row=1 , col=1 , showlegend: True
for row=1 , col=1, showlegend: True
for row=2 , col=1 , showlegend: False
for row=2 , col=1 , showlegend: True
So 3 different grouped legend is shown.
from plotly.subplots import make_subplots
import plotly.graph_objects as go
from plotly import offline
fig = make_subplots(rows = 2 , cols = 1 )
fig.add_trace(go.Scatter(x = [ 20 , 30 , 40 ], y = [ 50 , 60 , 70 ],
name = "2017" , legendgroup = "2017" ,
line = dict (color = 'blue' )),
row = 1 , col = 1 )
fig.add_trace(go.Scatter(x = [ 20 , 30 , 40 ], y = [ 50 , 60 , 60 ],
name = "2018" , legendgroup = "2018" ,
line = dict (color = 'red' )),
row = 1 , col = 1 )
fig.add_trace(go.Scatter(x = [ 10 , 20 , 30 ], y = [ 20 , 25 , 30 ],
name = "2017" , legendgroup = "2017" ,
line = dict (color = 'blue' ),
showlegend = False
),
row = 2 , col = 1 )
fig.append_trace(go.Scatter(x = [ 20 , 30 , 40 ], y = [ 50 , 60 , 70 ],
name = "2018" , legendgroup = "2018" ,
line = dict (color = 'green' ),
showlegend = True ),
row = 2 , col = 1 )
fig.update_layout(height = 600 , width = 600 ,
title_text = "Geeksforgeeks - Stacked Subplots" )
fig.show() |
Output:
Example 2:
Here, Four stacked subplot with 4 grouped legends.
for row=1 , col=1 , showlegend: True
for row=1 , col=1, showlegend: True
for row=1 , col=2, showlegend: False
for row=1 , col=2 , showlegend: True
for row=2 , col=1 , showlegend: False
for row=2 , col=2 , showlegend: True
So 4 different grouped legend is shown.
from plotly.subplots import make_subplots
import plotly.graph_objects as go
from plotly import offline
fig = make_subplots(rows = 2 , cols = 2 )
fig.add_trace(go.Scatter(x = [ 20 , 30 , 40 ], y = [ 50 , 60 , 70 ],
name = "2017" , legendgroup = "2017" ,
line = dict (color = 'blue' )),
row = 1 , col = 1 )
fig.add_trace(go.Scatter(x = [ 20 , 30 , 40 ], y = [ 50 , 60 , 60 ],
name = "2018" , legendgroup = "2018" ,
line = dict (color = 'red' )),
row = 1 , col = 1 )
fig.add_trace(go.Scatter(x = [ 10 , 20 , 30 ], y = [ 20 , 25 , 30 ],
name = "2017" , legendgroup = "2017" ,
line = dict (color = 'blue' ),
showlegend = False
),
row = 1 , col = 2 )
fig.append_trace(go.Scatter(x = [ 20 , 30 , 40 ], y = [ 50 , 60 , 70 ],
name = "2018" , legendgroup = "2018" ,
line = dict (color = 'yellow' ),
showlegend = True ),
row = 1 , col = 2 )
fig.append_trace(go.Scatter(x = [ 20 , 30 , 40 ], y = [ 50 , 60 , 70 ],
name = "2018" , legendgroup = "2018" ,
line = dict (color = 'red' ),
showlegend = False ),
row = 2 , col = 1 )
fig.add_trace(go.Scatter(x = [ 10 , 20 , 30 ], y = [ 20 , 25 , 30 ],
name = "2017" , legendgroup = "2017" ,
line = dict (color = 'pink' ),
showlegend = True
),
row = 2 , col = 2 )
fig.update_layout(height = 600 , width = 600 ,
title_text = "Stacked Subplots" )
fig.show() |
Output: