アニメーショングラフを作成する方法はありますか?たとえば、異なるパラメータを使用して同じグラフを表示します。例えばipythonノートブックのアニメーショングラフ
はSAGEのノートブックで、1は書くことができます。
a = animate([circle((i,i), 1-1/(i+1), hue=i/10) for i in srange(0,2,0.2)],
xmin=0,ymin=0,xmax=2,ymax=2,figsize=[2,2])
a.show()
アニメーショングラフを作成する方法はありますか?たとえば、異なるパラメータを使用して同じグラフを表示します。例えばipythonノートブックのアニメーショングラフ
はSAGEのノートブックで、1は書くことができます。
a = animate([circle((i,i), 1-1/(i+1), hue=i/10) for i in srange(0,2,0.2)],
xmin=0,ymin=0,xmax=2,ymax=2,figsize=[2,2])
a.show()
更新:2014年1月
ジェイクVanderplasはhere利用可能matplotlibのアニメーションのためのJavaScriptベースのパッケージを作成しました。それを使用することと同じくらい簡単です:
# https://github.com/jakevdp/JSAnimation
from JSAnimation import examples
examples.basic_animation()
より完全な説明と例についてhis blog postを参照してください。 歴史的な答え(補正用gogerを参照)
はい、Javascriptの更新が正しくまだ画像フレームを保持していないので、ちらつきがあるが、あなたはこの技術を用いて、非常にシンプルな何かを行うことができます:
import time, sys
from IPython.display import clear_output
f, ax = plt.subplots()
for i in range(10):
y = i/10*sin(x)
ax.plot(x,y)
time.sleep(0.5)
clear_output()
display(f)
ax.cla() # turn this off if you'd like to "build up" plots
plt.close()
これは恐ろしいちらつきですが、少なくともこれは私のためにアニメーション化するプロットを作成します。これはAron'sに基づいていますが、Aron'sはそのまま動作しません。
import time, sys
from IPython.core.display import clear_output
f, ax = plt.subplots()
n = 30
x = array([i/10.0 for i in range(n)])
y = array([sin(i) for i in x])
for i in range(5,n):
ax.plot(x[:i],y[:i])
time.sleep(0.1)
clear_output()
display(f)
ax.cla() # turn this off if you'd like to "build up" plots
plt.close()
あなたはIPythonのノートブック、V2.0およびサポートinteractive widgetsの上を使用している場合。あなたは良い例のノートブックhereを見つけることができます(n.b.あなたは自分のマシンからスライダーを見るためにダウンロードして実行する必要があります)。
本質的には、interact
をインポートしてから、関数にパラメータの範囲を渡します。例えば、第2のリンクから:
In [8]:
def pltsin(f, a):
plot(x,a*sin(2*pi*x*f))
ylim(-10,10)
In [9]:
interact(pltsin, f=(1,10,0.1), a=(1,10,1));
これはf
とa
ために、2つのスライダとのプロットを生成します。
私はiPythonノートブックで別のものをアニメーションしようとしています、これは私がこれまでに見つけた最高のソリューションについてのようです。ユーザーがスライダを操作する必要がないように自動的にアニメーション化する方法はありますか? – Addem
私はこれを行うことは自明ではないと思います。しかし、「イベント」のページを見てください:プログラムでウィジェットを制御し、コールバックを使用する例があります。理論的には、ボタンをクリックするだけで、クリックするとスライダ/コントロールを調整する 'for'ループが実行され、その間に眠ります。それは、誰かが手動でコントロールをスライドさせるという効果があります。しかしそれは理想的ではありません。 – Luciano
IPython widgetsノートブックのGUIオブジェクトを使用してカーネル内のPythonオブジェクトを操作できます。 Sage hosted IPython Notebooksのようなものもあります。ノートブックでウィジェットやインタラクティブ機能を共有する際に起こりうる1つの問題は、他の誰かがIPythonを持っていないと自分の仕事を実行できないということです。これを解決するには、Lotus Dominoをshare Notebooksに、他の人が実行できるウィジェットを使用することができます。
以下は、パンダを使用してデータ、フラクタル、および3Dプロットのスライダをフィルタリングするノートブックで構築できるウィジェットの3つの例です。詳しくはコードとノートブックhereをご覧ください。
あなたは、データ・ストリームに暮らしたいか、またstream dataノートブックのプロットに、ループとして実行するためのシミュレーションをすることができます設定した場合。免責事項:私はPlotlyで働いています。
@ gogerの「恐ろしいちらつき」のコメントでは、clear_output(wait = True)を呼び出すと問題が解決されたことがわかりました。このフラグはclear_outputにレンダリングするのを待つように指示します。
これを行うには、bqplotが本当に良いオプションです。あなたは、3D散布図のアニメーションをしたい場合は、そのノートブック
でのpythonを通じて、具体的なアニメーションのために構築され、Ipyvolume Jupyterウィジェットは非常に印象的です。 http://ipyvolume.readthedocs.io/en/latest/animation.html#
matplotlib
は、これを行うモジュールがanimation
です。ただし、サイトで提供されている例は、ノートブックで実行されるものではありません。あなたはそれを動作させるためにいくつかの微調整をする必要があります。
以下は、ノートブックで動作するように修正されたページの例です(の太字は)。
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
from matplotlib import rc from IPython.display import HTML
fig, ax = plt.subplots()
xdata, ydata = [], []
ln, = plt.plot([], [], 'ro', animated=True)
def init():
ax.set_xlim(0, 2*np.pi)
ax.set_ylim(-1, 1)
return ln,
def update(frame):
xdata.append(frame)
ydata.append(np.sin(frame))
ln.set_data(xdata, ydata)
return ln,
ani = FuncAnimation(fig, update, frames=np.linspace(0, 2*np.pi, 128), init_func=init, blit=True) rc('animation', html='html5') ani # plt.show() # not needed anymore
ノートブックのアニメーションが映画を経由して、あなたはffmpegのがインストールされていると、それを使用するように設定さmatplotlibのために必要と判断されることに注意してください。
おそらく賢明なx値を追加できますか?単純な範囲(100)とnumpy.arange(0,2 * pi、0.01)であなたの例を試しましたが、どちらも素晴らしい出力を生成しません。また、このコードを実行するためにいくつかのインポートが欠落しているようです。 –
この発言は少し後であります。**ちらつきを避けるため** set clear_output(True) '(IPython 2.0.0) –
ありがとう@eldad!私はこれをもう一度更新する必要があります:) –