Пример PyViz Dashboard - PullRequest
       22

Пример PyViz Dashboard

0 голосов
/ 24 января 2019

Я пытаюсь адаптировать пример здесь: http://pyviz.org/tutorial/A2_Dashboard_Workflow.html к моим собственным данным и требованиям.

В качестве простого теста я попробовал следующее:

import panel as pp
import param

df = load_some_data

parameter_1_list = df.parameter1.unique()
parameter_2_list = df.parameter2.unique()

class EventExplorer(param.Parameterized):
    parameter1 = param.ObjectSelector(default=parameter1_list[0], objects=parameter1_list)
    parameter2 = param.ObjectSelector(default=parameter2_list[0], objects=parameter2_run_list)


    def make_view(self, **kwargs):

        Subset_Data = df.loc[(df['a_column']==self.parameter1[:2])&(df['a_column']==self.parameter1[2:])&(df['a_column']==self.parameter2)]      

        output = DATA.hvplot.line(x='a_channel', y=self.parameter1)

        return output

pp.Row(EventExplorer.param, EventExplorer.make_view())

Если я запускаю метод param в одиночку, я получаю выпадающие списки, которые я ожидаю, заполненные так, как я ожидаю.

Но если я запускаю код, как здесь, я получаю:

name 'self' is not defined

Относится к строке, в которой я создаю Subset_Data. Скорее всего, это будет моей проблемой с классами и т. Д. Но было бы неплохо получить некоторую обратную связь.

Ben

1 Ответ

0 голосов
/ 25 января 2019

EventExplorer - это класс, и вам нужно создать экземпляр класса, прежде чем вы сможете вызывать для него метод (отсюда и жалоба Python о «себе», которого нет в классах).Если вы хотите вызвать метод, сначала создайте экземпляр класса, например, ee=EventExplorer(), а затем вы можете сделать pp.Row(ee.param, ee.make_view()).

Тем не менее, в этом случае вы, вероятно, не хотите вызывать метод в любом случае;Я думаю, из кода, который вы надеялись, Panel будет вызывать метод всякий раз, когда изменяется один из параметров.Если это то, что вам нужно, вы должны указать сам метод для панели, а не результат вызова метода: (pp.Row(ee.param, ee.make_view)).Иногда вы хотите оценить метод вручную, как вы это сделали, чтобы получить возвращаемое значение, если вы используете другие способы, такие как потоки HoloViews, для подключения параметров к отображаемому объекту.Трудно сказать без запускаемого кода, но здесь эти другие подходы не кажутся уместными, потому что у вас есть код внутри метода, который напрямую зависит от параметров, и поэтому метод должен перезапускаться каждый раз, когда изменяется один из этих параметров.

...