Как получить все графики Plotly, созданные в цикле for в одном окне браузера? - PullRequest
0 голосов
/ 25 апреля 2019

Я пытаюсь создать несколько графиков внутри цикла for, используя plotly.В настоящее время все графики отображаются в отдельных вкладках браузера.Я хочу, чтобы все диаграммы отображались в одном и том же окне браузера.

В моем фрейме данных df для каждого уникального элемента в столбце Tool_MeasurementSet (уникальные элементы, сохраненные в виде списка measure_set) имеется 16 точек данных для X-BAR и16 для SIGMA.Мне удалось использовать функцию subplot для объединения графиков X-BAR и SIGMA для каждого элемента в measure_set.В настоящее время код создает графики для каждого элемента в списке measure_set на отдельной вкладке браузера.Но я хочу, чтобы все графики отображались в одном и том же окне браузера с вертикальной полосой прокрутки вместо того, чтобы переходить с одной вкладки на другую для просмотра графиков.

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)

Я хочу, чтобы все графики отображалисьв одном окне браузера с полосой прокрутки.

1 Ответ

1 голос
/ 25 апреля 2019

Вы можете просто переместить точку, где вы объявляете фигуру, вне цикла и дать ей больше строк или столбцов.Например, создайте фигуру с таким количеством столбцов, сколько имеется точек данных.Затем поместите графики в 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...