PyViz仪表板示例

时间:2019-01-24 07:10:40

标签: python data-visualization holoviews

我正在尝试在此处修改示例: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的行有关。对于我来说,在类等方面,这可能是一个更大的问题。但是,获得一些反馈会很好。

1 个答案:

答案 0 :(得分:1)

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

也就是说,在这种情况下,您可能根本不想调用该方法。我从代码中猜测,您希望面板在参数之一更改时会调用该方法。如果您要这样做,则必须将方法本身提供给面板,而不是调用方法(<pp.Row(ee.param, ee.make_view))的 result 。有时,您确实希望像您一样手动评估该方法,以便在使用HoloViews流等其他方法将参数连接到显示的对象时获得返回值。没有可运行的代码很难说,但是在这里其他方法似乎并不相关,因为方法内部有直接依赖于参数的代码,因此每次这些参数之一更改时,该方法都需要重新运行。 >