PyViz仪表板Examp

2024-06-16 13:34:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试调整这里的示例: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方法,我会得到我期望的下拉列表,以我期望的方式填充。在

但如果我像这里一样运行代码,我会得到:

^{pr2}$

与我创建子集_数据的行相关。对于我来说,这可能是一个更大的问题,在课堂上等等,但最好能得到一些反馈。在


Tags: 数据方法importselfdfparameterparamcolumn
1条回答
网友
1楼 · 发布于 2024-06-16 13:34:02

这里的EventExplorer是一个类,在调用该类的方法之前,必须创建该类的一个实例(因此Python对“self”的抱怨在类中不存在)。如果你想调用这个方法,首先创建一个类的实例,例如ee=EventExplorer(),然后你可以做pp.Row(ee.param, ee.make_view())。在

也就是说,在本例中,您可能不想调用该方法;从代码中我猜您希望Panel在参数发生变化时调用该方法。如果这是您想要的,您必须向panel提供方法本身,而不是调用方法的结果:(pp.Row(ee.param, ee.make_view))。有时,如果使用其他方法(如HoloViews流)将参数连接到显示的对象,那么您确实希望像您所做的那样手动计算方法,以便获得返回值。如果没有可运行的代码很难判断,但是在这里其他的方法似乎并不相关,因为方法内部的代码直接依赖于参数,因此每次这些参数中的一个发生更改时,该方法都需要重新运行。在

相关问题 更多 >