在 jupyter notebook 中 plotly 使用 ipywidgets

Using ipywidgets with plotly in jupyter notebook

我想在 jupyter notebook 中使用 plotly 的离线绘图,并想通过使用 ipywidgets 中的小部件来操作或重绘绘图。 不幸的是,我没有设法适当地更新情节:

from ipywidgets import widgets, HBox, Output
import plotly as py
from plotly.offline import iplot
from IPython.display import display

%matplotlib inline
ip_widget = widgets.FloatSlider(
    value=6,
    min=3,
    max=10,
    step=1,
    description='num',
    continuous_update = True
)

ow = Output()
def response(change):
    with ow:
        iplot([{'x':list(range(int(ip_widget.value))), 'y': list(range(int(ip_widget.value)))}])
ip_widget.observe(response)
display(ip_widget)

提供的代码有两个缺点: 它多次绘制图表。 如果使用滑块,该图只会显示。 我怎样才能克服这两个问题?请注意,我不想使用 plotly 的在线绘图功能,也不想使用 interact 来解决这个问题。

非常感谢您的回答。

您尝试过使用 interact 吗?这是一个非常清楚的例子: http://nbviewer.jupyter.org/github/yankev/test/blob/master/plotlywidget_working2.ipynb

顺便说一下,interact 函数存在于 ipywidgets 中(不再是 IPython.html.widgets)。除此之外,这个例子几乎是 up-to-date.