PyViz 仪表板示例

PyViz Dashboard Example

我正在尝试调整此处的示例: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())

如果我 运行 单独使用参数方法,我会得到我期望的下拉菜单,并按照我期望的方式填充。

但是如果我运行我这里的代码我得到:

name 'self' is not defined

与我创建的行有关Subset_Data。对于 类 等,这对我来说可能是一个更大的问题。但最好能得到一些反馈。

这里的 EventExplorer 是一个 class,你必须先创建一个 class 的实例,然后才能调用它的方法(因此 Python 抱怨 "self",classes 上不存在)。如果要调用该方法,请先创建 class 的实例,例如ee=EventExplorer(),然后就可以pp.Row(ee.param, ee.make_view())了。

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