Python PyViz仪表板示例

Python PyViz仪表板示例,python,data-visualization,holoviews,Python,Data Visualization,Holoviews,我正在尝试调整这里的示例:以适应我自己的数据和需求 作为一个简单的测试,我尝试了以下方法: 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.

我正在尝试调整这里的示例:以适应我自己的数据和需求

作为一个简单的测试,我尝试了以下方法:

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
与我创建子集_数据的行相关。这可能更像是我在课堂上遇到的问题,但如果能得到一些反馈就好了


Ben

EventExplorer这里有一个类,在调用该类的方法之前,您必须创建该类的实例(因此Python抱怨“self”,它在类中不存在)。如果要调用该方法,请首先创建该类的实例,例如
ee=EventExplorer()
,然后执行
pp.Row(ee.param,ee.make_view())

也就是说,在这种情况下,您可能无论如何都不想调用该方法;我从代码中猜测,您希望面板在任何一个参数发生变化时调用该方法。如果这是您想要的,您必须将方法本身提供给面板,而不是调用方法的结果:(
pp.Row(ee.param,ee.make_view)
)。有时,如果您使用其他方式(如HoloViews streams)将参数连接到显示的对象,则确实希望手动计算该方法,以便获得返回值。没有可运行的代码很难判断,但在这里,这些其他方法似乎并不相关,因为方法中有直接依赖于参数的代码,因此每次这些参数中的一个发生变化时,都需要重新运行该方法