[matplotlib]:理解" set_ydata"方法

时间:2016-12-18 13:14:07

标签: python matplotlib

我试图了解如何使用" set_ydata"方法,我在matplotlib网页上找到了很多例子,但我发现只有代码中有" set_ydata"被淹死了#34;在大而难以理解的代码中。

我想要一个简短易懂的代码,帮助我理解" 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

现在,使用以下代码,我删除" ax"上绘制的线条。 subplot,我用" 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

not" plt.draw()"不是" plt.show()"画任何东西。你可以建议我画一条新线吗?

1 个答案:

答案 0 :(得分:4)

如果删除将数据设置为的行,则不会发现任何内容。

正如函数set_data建议的名称,它设置Line2D对象的数据点。 set_ydata是一个特殊情况,它只设置ydata。

在更新绘图时,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通常仅用于有意义的情况,并且您将其称为“大而难以理解的代码”。