Skip to content
Related Articles

Related Articles

How to set up multiple subplots with grouped legends using Plotly in Python?

View Discussion
Improve Article
Save Article
  • Last Updated : 06 Jul, 2022
View Discussion
Improve Article
Save Article

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.

Python3




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.

Python3




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:


My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!