web-dev-qa-db-ja.com

ipywidgetsを使用したインタラクティブなmatplotlib

Matplotlibipywidgetsを使用してインタラクティブプロットを実装したいIPython(python3)で。では、どうすればこれを効率的に行うことができますか(遅滞なくスムーズに変更できます)?

そして別の質問は、なぜこのコードが機能するのかということです。

from ipywidgets import *
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

x = np.linspace(0, 2 * np.pi)

def update(w = 1.0):
    fig = plt.figure()
    ax = fig.add_subplot(1, 1, 1)
    ax.plot(x, np.sin(w * x))

    fig.canvas.draw()

interact(update);

enter image description here

しかし、これは機能しませんか?!

from ipywidgets import *
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

x = np.linspace(0, 2 * np.pi)
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
line, = ax.plot(x, np.sin(x))

def update(w = 1.0):
    line.set_ydata(np.sin(w * x))
    fig.canvas.draw()

interact(update);

enter image description here

11
Yas

2番目のアプローチは、ノートブックバックエンドに適したアプローチです

%matplotlib notebook

またはipymplを使用します。

ただし、プロットを更新しないインラインバックエンドでは機能しません。

4
Quant