回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>在Windows10上使用Anaconda安装中的Jupyter;也安装了<code>conda install -c plotly plotly</code>,显然得到了精心设计的v4。在</p>
<p>我只想从一个简单的例子开始-使用ipywidget滑块而不是绘声绘色的滑块。所以,我发现:</p>
<p><a href="https://moderndata.plot.ly/widgets-in-ipython-notebook-and-plotly/" rel="nofollow noreferrer">https://moderndata.plot.ly/widgets-in-ipython-notebook-and-plotly/</a></p>
<blockquote>
<p>EXAMPLE 3: interact</p>
<p>A simple example of using the interact decorator from ipywidgets to create a simple set of widgets to control the parameters of a plot.</p>
<p><a href="https://github.com/jonmmease/plotly_ipywidget_notebooks/blob/master/notebooks/Interact.ipynb" rel="nofollow noreferrer">Link to IPython notebook</a></p>
</blockquote>
<p>对-所以我去了那个链接,把代码重新组织成这样:</p>
<pre><code>import plotly.graph_objs as go
import numpy as np
from ipywidgets import interact
fig = go.FigureWidget()
scatt = fig.add_scatter()
xs=np.linspace(0, 6, 100)
fig.show()
@interact(a=(1.0, 4.0, 0.01), b=(0, 10.0, 0.01), color=['red', 'green', 'blue'])
def update(a=3.6, b=4.3, color='blue'):
with fig.batch_update():
scatt.x=xs
scatt.y=np.sin(a*xs-b)
scatt.line.color=color
</code></pre>
<p>。。。当我运行这个单元格时,它会画出一个空白图:</p>
<p><a href="https://i.stack.imgur.com/hKKEW.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/hKKEW.png" alt="jupyter_plotly_fail.png"/></a></p>
<p>。。。失败的原因是:</p>
^{pr2}$
<p>显然,这是因为Plotly v4中有足够多的更改来保证<a href="https://plot.ly/python/v4-migration/" rel="nofollow noreferrer">Version 4 migration guide | plotly</a>;浏览这些内容,我尝试修改代码如下:</p>
<pre><code>import plotly.graph_objs as go
import numpy as np
from ipywidgets import interact
fig = go.FigureWidget()
scattf = fig.add_scatter()
scatt = scattf.data[-1]
xs=np.linspace(0, 6, 100)
scattf.show()
@interact(a=(1.0, 4.0, 0.01), b=(0, 10.0, 0.01), color=['red', 'green', 'blue'])
def update(a=3.6, b=4.3, color='blue'):
with fig.batch_update():
scatt.x=xs
scatt.y=np.sin(a*xs-b)
scatt.line.color=color
</code></pre>
<p>。。。现在我再也看不到错误了,但是绘图仍然是空的,当我拖动滑块时,它不会更新。在</p>
<p>有人能告诉我,如何让这个例子工作,以便绘图,并更新/重画时,我拖动滑块?在</p>
<hr/>
<p>编辑:再乱一点,现在我有了这个代码:</p>
<pre><code>import plotly.graph_objs as go
import numpy as np
from ipywidgets import interact
fig = go.FigureWidget()
scattf = fig.add_scatter()
scatt = scattf.data[-1]
xs=np.linspace(0, 6, 100)
#scattf.show() # adds extra plot, if there is scattf.show() in update()!
@interact(a=(1.0, 4.0, 0.01), b=(0, 10.0, 0.01), color=['red', 'green', 'blue'])
def update(a=3.6, b=4.3, color='blue'):
with fig.batch_update():
scatt.x=xs
scatt.y=np.sin(a*xs-b)
scatt.line.color=color
scattf.show()
update() # update once; so we don't get empty plot at start? not really - still getting empty plot at start, and another one after which is updated
</code></pre>
<p>这里有两个问题:</p>
<ul>
<li>运行单元格后,第一个绘图为空,而另一个绘图为已打印-如何才能使它仅用默认值绘制一个绘图?(没有最后一个<code>update()</code>,只有一个绘图,但在开始时是空的-必须拖动滑块才能开始绘制)</li>
<li>当拖动滑块时,绘图现在会改变-但是它会闪烁很多;有什么方法可以减少闪烁?在</li>
</ul>