Python 如何在单个浏览器窗口中获取在for循环显示中创建的所有绘图?

Python 如何在单个浏览器窗口中获取在for循环显示中创建的所有绘图?,python,plotly,Python,Plotly,我正在尝试使用plotly在for循环中创建几个绘图。当前,所有图表都显示在浏览器的单独选项卡中。我希望所有图表都显示在同一浏览器窗口中 在我的数据框df中,对于Tool_MeasurementSet列中的每个唯一元素(保存为列表测量集的唯一元素),X-BAR和SIGMA分别有16个数据点。我能够使用子图函数来组合meas_集合中每个元素的X-BAR和SIGMA图。目前,代码正在浏览器的单独选项卡中为meas_集合列表中的每个元素创建绘图。但我想让所有的绘图都显示在同一个浏览器窗口中,并带有一个

我正在尝试使用plotly在for循环中创建几个绘图。当前,所有图表都显示在浏览器的单独选项卡中。我希望所有图表都显示在同一浏览器窗口中

在我的数据框df中,对于Tool_MeasurementSet列中的每个唯一元素(保存为列表测量集的唯一元素),X-BAR和SIGMA分别有16个数据点。我能够使用子图函数来组合meas_集合中每个元素的X-BAR和SIGMA图。目前,代码正在浏览器的单独选项卡中为meas_集合列表中的每个元素创建绘图。但我想让所有的绘图都显示在同一个浏览器窗口中,并带有一个垂直滚动条,而不必从一个选项卡移动到另一个选项卡来查看绘图

from plotly import tools
import plotly.plotly as py
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import plotly.offline as pyo
import plotly.graph_objs as go

df = pd.read_csv("C:\\DATA_REPORT_subset.csv")
meas_set = df['Tool_MeasurementSet'].unique()

## params are the column labels in the df dataframe
params = ['Data','UCL','LCL','CL']

for i in meas_set:
    fig = tools.make_subplots(rows=2, cols=1,subplot_titles=('X-BAR Subplot','SIGMA Subplot'))
    for j in range(0,len(params)):
        y_xbar = df[(df['Tool_MeasurementSet']== i) & (df['Chart Type']== 'X-BAR')][params[j]]
        x_xbar = df[(df['Tool_MeasurementSet']== i) & (df['Chart Type']== 'X-BAR')]['Date']
        y_sigma = df[(df['Tool_MeasurementSet']== i) & (df['Chart Type']== 'SIGMA')][params[j]]
        x_sigma = df[(df['Tool_MeasurementSet']== i) & (df['Chart Type']== 'SIGMA')]['Date']
        trace1 = go.Scatter(x=x_xbar,y=y_xbar,mode='lines',name=params[j])
        trace2 = go.Scatter(x=x_sigma,y=y_sigma,mode='lines',name=params[j])

        fig.append_trace(trace1,1,1)
        fig.append_trace(trace2,2,1)

    fig['layout'].update(title= i)
    pyo.plot(fig)


我希望所有绘图都显示在一个带有滚动条的浏览器窗口中。

您可以将声明图形的点移动到循环之外,并为其提供更多的行或列。 例如,使一个图形具有与数据点一样多的列。然后将绘图放在第i列中。比如:

# use len(meas_set) as number of columns
fig = tools.make_subplots(rows=2, cols=len(meas_set), subplot_titles=('X-BAR Subplot','SIGMA Subplot'))

for i in meas_set:
    for j in range(0,len(params)):
        # your logic here
        trace1 = go.Scatter(x=x_xbar,y=y_xbar,mode='lines',name=params[j])
        trace2 = go.Scatter(x=x_sigma,y=y_sigma,mode='lines',name=params[j])

        # use i for column position
        fig.append_trace(trace1,1,i)
        fig.append_trace(trace2,2,i)

非常感谢。通过执行您的建议,我可以使所有图表显示在同一浏览器窗口中。现在的问题是,并没有滚动条和图形重叠,以适应窗口。我现在尝试在绘图之间添加行间距。