Reputation: 1971
Given this example from plotly documentation
from plotly.subplots import make_subplots
import plotly.graph_objects as go
fig = make_subplots(
rows=2, cols=2,
specs=[[{}, {}],
[{"colspan": 2}, None]],
subplot_titles=("First Subplot","Second Subplot", "Third Subplot"))
fig.add_trace(go.Scatter(x=[1, 2], y=[1, 2]),
row=1, col=1)
fig.add_trace(go.Scatter(x=[1, 2], y=[1, 2]),
row=1, col=2)
fig.add_trace(go.Scatter(x=[1, 2, 3], y=[2, 1, 2]),
row=2, col=1)
fig.update_layout(showlegend=False, title_text="Specs with Subplot Title")
fig.show()
Which is displayed as
How to change it so the subtitle is shown at the bottom?
Upvotes: 1
Views: 2850
Reputation: 35135
As far as I know, there is no direct setting, so you can check the actual annotation position in fig.layout and adjust it.
from plotly.subplots import make_subplots
import plotly.graph_objects as go
fig = make_subplots(
rows=2, cols=2,
specs=[[{}, {}],
[{"colspan": 2}, None]],
subplot_titles=("First Subplot","Second Subplot", "Third Subplot"))
fig.add_trace(go.Scatter(x=[1, 2], y=[1, 2]),
row=1, col=1)
fig.add_trace(go.Scatter(x=[1, 2], y=[1, 2]),
row=1, col=2)
fig.add_trace(go.Scatter(x=[1, 2, 3], y=[2, 1, 2]),
row=2, col=1)
fig.update_layout(showlegend=False, title_text="Specs with Subplot Title")
fig.layout.annotations[0].update(y=0.40)
fig.layout.annotations[1].update(y=0.40)
fig.layout.annotations[2].update(y=-0.2)
fig.show()
fig.layout
Layout({
'annotations': [{'font': {'size': 16},
'showarrow': False,
'text': 'First Subplot',
'x': 0.225,
'xanchor': 'center',
'xref': 'paper',
'y': 1.0,
'yanchor': 'bottom',
'yref': 'paper'},
{'font': {'size': 16},
'showarrow': False,
'text': 'Second Subplot',
'x': 0.775,
'xanchor': 'center',
'xref': 'paper',
'y': 1.0,
'yanchor': 'bottom',
'yref': 'paper'},
{'font': {'size': 16},
'showarrow': False,
'text': 'Third Subplot',
'x': 0.5,
'xanchor': 'center',
'xref': 'paper',
'y': 0.375,
'yanchor': 'bottom',
'yref': 'paper'}],
'showlegend': False,
'template': '...',
'title': {'text': 'Specs with Subplot Title'},
'xaxis': {'anchor': 'y', 'domain': [0.0, 0.45]},
'xaxis2': {'anchor': 'y2', 'domain': [0.55, 1.0]},
'xaxis3': {'anchor': 'y3', 'domain': [0.0, 1.0]},
'yaxis': {'anchor': 'x', 'domain': [0.625, 1.0]},
'yaxis2': {'anchor': 'x2', 'domain': [0.625, 1.0]},
'yaxis3': {'anchor': 'x3', 'domain': [0.0, 0.375]}
})
Upvotes: 2