目标是在每个子图中在x=1处获得垂直无限线。 在此示例中,我将在第一行,第一列中尝试单个plotly形状的type="line"。
from plotly.subplots import make_subplots
import plotly.graph_objects as go
import numpy as np
fig = make_subplots(
rows=2,
cols=2,
subplot_titles=list(map(str, range(4))),
shared_xaxes=True,
shared_yaxes=False,
)
time = np.linspace(-np.pi, np.pi, 1000)
for i in range(4):
data = np.sin((i+1) * time)
fig.add_trace(
go.Scatter(y=data,x=time, name=str(i)),
row=1 if i in [0, 1] else 2,
col=1 if i in [0, 2] else 2,
)
fig.add_shape(
go.layout.Shape(
type="line",
yref="paper",
xref="x",
x0=1,
y0=0,
x1=1,
y1=1,
line=dict(color="RoyalBlue", width=3),
),row=1,col=1)
fig.write_image("1.png",width=800, height=600, scale=1)
看起来是通过行和列添加形状覆盖了yref和xref属性,返回的是一条线段而不是无限线。在打印之前将yref强制设为"paper" ...
for shape in fig.layout.shapes:
shape["yref"]="paper"
我得到了这个:
![Plot2](https://istack.dev59.com/sGujw.webp)
这可能更糟,这是相对于整个图而不是子图y轴的线。有人遇到过这个问题吗?有什么想法吗?
yref="y domain", y0=0, y1=1
替换相应的键来获得“无限垂直线”吗? - Stefan Pinnow