2016-12-18 13 views
1

"set_ydata"メソッドの使い方を理解しようとしていますが、matplotlibのWebページで多くの例が見つかりましたが、 "set_ydata"コードを理解する。[matplotlib]:理解 "set_ydata"メソッド

"set_ydata"の仕組みを理解するのに役立つ、わかりやすいコードがほしいと思います。今

import matplotlib.pyplot as plt 
import numpy as np 

x = np.arange(-3, 3, 0.01) 
j = 1 
y = np.sin(np.pi*x*j)/(np.pi*x*j) 
fig = plt.figure() 
ax = fig.add_subplot(111) 
line, = ax.plot(x, y) 
plt.show() 

enter image description here

の下のプロットを提供ここでは、短いコード、次のコードで、私はプロットを修正するために「set_ydata」を使用し、「斧」のサブプロットに描かれた行を削除し、最終的に私は再び線を描画したいと思いますが、私は最後のステップ

line.remove() 
j = 2 
y = np.sin(np.pi*x*j)/(np.pi*x*j) 
line.set_ydata(y) 

enter image description here

ない「plt.dを行う何かを見つけることはありませんraw() "どちらも" plt.show() "は何も描画しません。あなたは私に新しい行を描く何かを提案できますか?

答えて

3

データを設定した行を削除しても何も表示されないことは驚くことではありません。

set_dataという名前のとおり、Line2Dオブジェクトのデータポイントを設定します。 set_ydataは、yデータのみを設定する特殊なケースです。

set_dataの使用は、例のように(行を削除しないで)プロットを更新するときにほとんど意味があります。

import matplotlib.pyplot as plt 
import numpy as np 

x = np.arange(-3, 3, 0.01) 
j = 1 
y = np.sin(np.pi*x*j)/(np.pi*x*j) 
fig = plt.figure() 
ax = fig.add_subplot(111) 
#plot a line along points x,y 
line, = ax.plot(x, y) 
#update data 
j = 2 
y2 = np.sin(np.pi*x*j)/(np.pi*x*j) 
#update the line with the new data 
line.set_ydata(y2) 

plt.show() 

ax.plot(x, y2)を直接描画する方がはるかに簡単だったことは明らかです。したがって、set_dataは、一般に、意味があり、「大規模で難解なコード」と呼ばれる場合にのみ使用されます。

+0

私のコードで2つの問題があります。最初は、あなたが言っていることです: "line.remove()"プロットを削除し、あなたはもうそれを描画したい!もう1つは、私がjupyterノートブックを使用していて、スクリプトの最初に "%matplotlib notebook"という行を追加しなければならない場合です。そうしなければ、プロットを変更することはできません。 –

関連する問題