首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PyViz仪表板示例

PyViz仪表板示例
EN

Stack Overflow用户
提问于 2019-01-24 07:10:40
回答 1查看 576关注 0票数 0

我正在尝试修改这里的示例:Workflow.html,以适应我自己的数据和需求。

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

代码语言:javascript
复制
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方法,我就会得到我期望的下降,按我预期的方式填充。

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

代码语言:javascript
复制
name 'self' is not defined

与我创建Subset_Data的行相关。这很可能是我在课堂上的一个问题,但最好能得到一些反馈。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-25 14:43:18

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54341137

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档