Plotly - 在创建的痕迹之后更新子图标题

问题描述 投票:0回答:4

我有一个由子图组成的情节 -

fig = make_subplots(
        rows=3, cols=1)

fig.add_trace(go.Scatter(x=[1, 2, 3], y=[4, 5, 6]), row=1, col=1)
fig.add_trace(go.Scatter(x=[1, 2, 3], y=[4, 5, 6]), row=2, col=1)
fig.add_trace(go.Scatter(x=[1, 2, 3], y=[4, 5, 6]), row=3, col=1)

我要为每个子图添加标题,但只有在创建图形并添加痕迹之后。也就是说,当我创建图形时不是 -

fig = make_subplots(
            rows=3, cols=1, subplot_titles=['a', 'b', 'c']

我可以通过

fig.update_layout
或类似的方式做到这一点吗?

python plotly
4个回答
8
投票

当使用

make_subplots
时,它会创建(正确放置)注释。因此,这可以“大部分”使用注释方法来复制。一般来说,对于第一个: fig.add_annotation(xref="x domain",yref="y domain",x=0.5, y=1.2, showarrow=False, text="a", row=1, col=1)

缺点是您可能需要根据您的条件/口味调整 
x

y
完整示例,使用粗体文本:

import plotly.graph_objects as go from plotly.subplots import make_subplots fig = make_subplots(rows=3, cols=1) fig.add_trace(go.Scatter(x=[1, 2, 3], y=[4, 5, 6]), row=1, col=1) fig.add_annotation(xref="x domain",yref="y domain",x=0.5, y=1.2, showarrow=False, text="<b>Hey</b>", row=1, col=1) fig.add_trace(go.Scatter(x=[1, 2, 3], y=[4, 5, 6]), row=2, col=1) fig.add_annotation(xref="x domain",yref="y domain",x=0.5, y=1.2, showarrow=False, text="<b>Bee</b>", row=2, col=1) fig.add_trace(go.Scatter(x=[1, 2, 3], y=[4, 5, 6]), row=3, col=1) fig.add_annotation(xref="x domain",yref="y domain",x=0.5, y=1.2, showarrow=False, text="<b>See</b>", row=3, col=1) fig.show()


0
投票

for i in range(3): fig['layout'][f'xaxis{i+1}'].update(title=f'Title {i+1}')

各轴相关问题设置
showgrid

对所有子图设置 showgrid = False 


0
投票

您只需稍后在适合您的情况下更改标题文本即可。

子图的标题实际上是注释

“文本”

。以防万一您在任何地方都没有看到单词标题。 :-) import plotly.graph_objects as go from plotly.subplots import make_subplots fig = make_subplots(rows=3, cols=1, subplot_titles=[" ", " ", " "]) fig.add_trace(go.Scatter(x=[1, 2, 3], y=[4, 5, 6]), row=1, col=1) fig.layout.annotations[0].update(text="My Title 1") fig.add_trace(go.Scatter(x=[1, 2, 3], y=[4, 5, 6]), row=2, col=1) fig.layout.annotations[1].update(text="My Title 2") fig.add_trace(go.Scatter(x=[1, 2, 3], y=[4, 5, 6]), row=3, col=1) fig.layout.annotations[2].update(text="My Title 3") fig.show()


-1
投票

fig.update_layout(margin=dict(l=20, r=20, t=20, b=20), paper_bgcolor="LightSteelBlue", xaxis_title='X Label Name', yaxis_title="Y Label Name")

© www.soinside.com 2019 - 2024. All rights reserved.