您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Plotly:如何在子图中制作无界垂直线?

Plotly:如何在子图中制作无界垂直线?

如果是这种情况,则必须为 positions定义的每个子图插入一个形状row=i,col=j。以下代码段将为您做到这一点。如果 更改子图的总数,则只需要对 网格的行数和 列数进行监督即可。

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,
    )

colors = ['blue', 'firebrick', 'green', 'purple']
rows = 2
cols = 2

# add traces
counter=0 # for colors
for i in range(1,3):
    for j in range(1,3):
        fig.add_shape(go.layout.Shape(type="line",
                                        yref="paper",
                                        xref="x",
                                        x0=1,
                                        y0=-2,
                                        x1=1,
                                        y1=2,
                                        #line=dict(color="RoyalBlue", width=3),),
                                        line=dict(color=colors[counter], width=3),),
                      row=i,
                      col=j)
        counter = counter + 1

fig.show()

评论后编辑:

据我所知,您不能直接定义无界。但是,只要您定义的轴限制 远超出您要可视化的数据,那么您要 完成的工作就可以很好地工作 。因为与您的评论相反, 您可以这样设置每个子图的轴限制:

# Set y ranges for each subplot
for i in range(1,3):
    for j in range(1,3):
        fig.update_yaxes(range=[-4, 4], row=i, col=j)

除了预定义的限制,您还可以 从数据集中找到合适的最大值和最小值。

其他 2022/1/1 18:37:57 有448人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶