为了账号安全,请及时绑定邮箱和手机立即绑定

PyViz 仪表板示例

PyViz 仪表板示例

红糖糍粑 2021-10-19 14:42:12
我正在尝试调整这里的示例:http : //pyviz.org/tutorial/A2_Dashboard_Workflow.html以适应我自己的数据和要求。作为一个简单的测试,我尝试了以下内容:import panel as ppimport paramdf = load_some_dataparameter_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 outputpp.Row(EventExplorer.param, EventExplorer.make_view())如果我单独运行 param 方法,我会得到我期望的下拉列表,以我期望的方式填充。但是如果我像这里一样运行代码,我会得到:name 'self' is not defined与我创建 Subset_Data 的行相关。这对我来说可能更像是课程等方面的问题。但最好能得到一些反馈。
查看完整描述

1 回答

?
胡子哥哥

TA贡献1825条经验 获得超6个赞

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

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


查看完整回答
反对 回复 2021-10-19
  • 1 回答
  • 0 关注
  • 203 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信