Python Plotly: используйте кнопки для обновления наборов вспомогательных участков и произвольного назначения трасс - PullRequest
0 голосов
/ 20 декабря 2018

Допустим, у меня есть 6 наборов данных:

X = [i for i in range(100)]
Y1 = [2*i for i in range(100)]
Y2 = [3*i for i in range(100)]
Y3 = [4*i for i in range(100)]
Y4 = [5*i for i in range(100)]
Y5 = [6*i for i in range(100)]
Y6 = [7*i for i in range(100)]

Используя приведенный здесь пример (https://plot.ly/python/custom-buttons/),), я могу создать кнопки, которые позволят мне переключаться между отображением этих шести наборов данных наодин график. Однако я хотел бы разделить данные на наборы вспомогательных участков и иметь кнопки для переключения между наборами вспомогательных участков.

Например, мне бы хотелось два набора вспомогательных участков, состоящих из двух вспомогательных участков каждый (итого, 4 сюжета, 2 комплекта по 2 субплота). На первом наборе субпланов я хотел бы разместить Y1 и Y2 на первом графике и Y3 на втором. На втором наборе субплотов я хотел быРазместите Y4 на первом и Y5 и Y6 на втором. Затем я хотел бы две кнопки, которые позволили бы мне переключаться между первым набором вспомогательных участков (Y1 / Y2 и Y3) и вторым набором вспомогательных участков (Y4, Y5/Y6).

Другим примером может быть наличие двух наборов вспомогательных участков, состоящих из 2 и 3 вспомогательных участков, соответственно (в отличие от 2 вспомогательных участков в каждом наборе). В первом наборе вспомогательных участков(2 участка), поместив Y1 на первом и Y2 на втором.Во втором наборе вспомогательных участков (3 вспомогательных участка) размещение Y3 и Y4 на первом вспомогательном участке, Y5 на втором и Y6 на третьем.Две кнопки будут обновляться между первым и вторым набором вспомогательных участков.

Конечная цель состоит в том, чтобы иметь основу для наличия произвольного числа наборов вспомогательных участков с произвольным числом вспомогательных участков, назначенных каждому поднабору (не то же самое).), а затем произвольно назначить любое количество трасс для каждого субплота в каждом наборе субплотов и использовать кнопки для переключения между наборами субплотов.

Если бы не кнопки, можно ли это сделать с помощью меню?Кроме того, есть ли виджет меню, позволяющий использовать кнопки «вверх» и «вниз» для пошагового перехода по наборам подплотов?

Здесь можно найти другую похожую ссылку (но не ту, которая касается этого конкретного вопроса): Python Plotly - несколько выпадающих графиков, каждый из которых имеет под-участки

Ниже приведен код, над которым я работал, чтобы попытаться разработать его (он, конечно, неполон, но может послужить основойдля решения.)

Большое спасибо за ваши ответы!

import pandas as pd
import numpy as np
import plotly.offline as offline
import plotly.graph_objs as go
from plotly.offline import init_notebook_mode, iplot, plot
from plotly import tools
init_notebook_mode(connected=True)

# 6 sets of data
X = [i for i in range(100)]
Y1 = [2*i for i in range(100)]
Y2 = [3*i for i in range(100)]
Y3 = [4*i for i in range(100)]
Y4 = [5*i for i in range(100)]
Y5 = [6*i for i in range(100)]
Y6 = [7*i for i in range(100)]
labels = ["One", "Two"]

# 2 subplots
fig = tools.make_subplots(rows=1, cols=2)

trace1 = go.Scatter(
                x=X,
                y=Y1, 
                showlegend=False
            )
trace2 = go.Scatter(
                x=X,
                y=Y2, 
                showlegend=False
            )
trace3 = go.Scatter(
                x=X,
                y=Y3, 
                showlegend=False
            )
trace4 = go.Scatter(
                x=X,
                y=Y4, 
                showlegend=False
            )
trace5 = go.Scatter(
                x=X,
                y=Y5, 
                showlegend=False
            )
trace6 = go.Scatter(
                x=X,
                y=Y6, 
                showlegend=False
            )

data = [trace1,trace2]

updatemenus = list([
    dict(type="buttons",
         active=-1,
         buttons = list([
             dict(label = 'first',
                  method = 'update',
                  args = [{'visible':[True,False]},
                           {'title': 'first'}]),
             dict(label = 'second',
                  method = 'update',
                  args = [{'visible':[False,True]},
                           {'title': 'second'}])
        ])
    )])

layout = dict(title = 'test', showlegend=False,
              updatemenus=updatemenus)

fig = dict(data=data,layout=layout)

offline.plot(fig, filename='tmp.html')

1 Ответ

0 голосов
/ 20 декабря 2018

Пожалуйста, проверьте документацию ( эта ссылка )

В документации пример, который они добавляют для добавления, - это использование fig.append_trace() с первым аргументом, трасса, которую вы уже сгенерировали, ивторой и третий позиции подзаговора.

fig = tools.make_subplots(rows=1, cols=2)

fig.append_trace(trace1, 1, 1)
fig.append_trace(trace2, 1, 2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...