我有一个由子图组成的绘图 -
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
或类似的东西?
可以使用
fig.update_layout
更新子图标题,但需要使用
annotations
属性而不是
subplot_titles
。以下是一个示例:
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_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)
# 使用 annotations 更新子图标题
fig.update_layout(
annotations=[
dict(text="Title A", x=0.5, y=1.0, xref="x1 domain", yref="y1 domain", showarrow=False),
dict(text="Title B", x=0.5, y=1.0, xref="x2 domain", yref="y2 domain", showarrow=False),
dict(text="Title C", x=0.5, y=1.0, xref="x3 domain", yref="y3 domain", showarrow=False)
]
)
fig.show()
说明:
-
fig.update_layout(annotations=[...])
: 我们使用annotations
属性来添加标题。 -
dict(text="...", x=..., y=..., xref=..., yref=..., showarrow=...)
: 每个标题都是一个字典,包含以下参数:-
text
: 标题文本。 -
x
,y
: 标题在子图中的相对位置 (0 到 1)。-
x=0.5
,y=1.0
表示标题位于子图区域的顶部中央。
-
-
xref
,yref
: 指定标题参考的坐标系。-
xref="x1 domain"
,yref="y1 domain"
表示参考第一个子图的坐标系。
-
-
showarrow
: 设置为False
以隐藏指向标题的箭头。
-
通过修改
text
,
x
,
y
的值,可以自定义每个子图标题的内容和位置。