剧情离线和下拉小部件

时间:2018-12-18 13:30:11

标签: python plot widget plotly jupyter

我必须创建具有各种曲线的图形以进行绘制。我的目标是创建一个下拉窗口小部件,在其中可以选择要绘制的曲线,即选择我的iplot将要绘制的数据。

我正在使用Jupyter Notebook。我导入了iplot并初始化了笔记本模式。

from plotly.offline import iplot, init_notebook_mode

我的x轴始终相同:X = [1,2,3,4,5,6,7,8,9,10,11,12]

我的y数据是我希望能够通过小部件更改的内容:我有一个列表列表,并且我希望能够选择要绘制的列表的索引。

到目前为止,我有一个图形在其中绘制所有数据,还有一个不执行任何操作的下拉小部件:

k=len(Y)

updatemenus = [
    {
        'buttons': [
            {
                'method': 'restyle',
                'label': str(i),
                'args': [
                    {},
                ]
            } for i in range(k)
        ],
        'direction': 'down',
        'showactive': True,
    }
]


iplot({
      'data':
           [{'x': [1,2,3,4,5,6,7,8,9,10,11,12],
             'y': Y[i],
             'name': str(i)
           } for i in range(k)],
      'layout': {'title': 'Title',
                'updatemenus': updatemenus}
  })

我觉得我必须在updatemenus的'args'中写一些东西,但是我找不到它。我已经尝试过类似'y': Y[i]之类的事情,但是它只是绘制一条直线,好像iplot中没有指示“ y”轴一样。

1 个答案:

答案 0 :(得分:0)

所以我找到了一个解决方案,尽管它可能并不理想:在updatemenus的args选项中,我现在写了{'visible': [False]*i+[True]+[False]*(k-i-1)}

为了使图形仅在执行程序时绘制第一条曲线,我已经修改了iplot命令,如下所示:

iplot({
      'data':
           [{'x': [1,2,3,4,5,6,7,8,9,10,11,12],
             'y': Y[i],
             'name': str(i),
             'visible': i==0
           } for i in range(k)],
      'layout': {'title': 'Title',
                'updatemenus': updatemenus}
  })