[matplotlib]:理解“set_ydata”方法

Ste*_*ele 6 python matplotlib

我试图了解如何使用“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()
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

现在,使用以下代码,我删除了在“ax”子图上绘制的线,我使用“set_ydata”来修改图,最后我想再次绘制线,但我没有找到任何做最后的东西步

line.remove()
j = 2
y = np.sin( np.pi*x*j ) / ( np.pi*x*j )
line.set_ydata(y)
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

不是“plt.draw()”也不是“plt.show()”绘制任何东西。你能建议我画一条新线吗?

Imp*_*est 9

如果删除设置数据的行,您什么也看不到也就不足为奇了。

作为函数的名称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()
Run Code Online (Sandbox Code Playgroud)

很明显,直接绘制会容易得多ax.plot(x, y2)。因此set_data,通常仅在有意义且您将其称为“大型且难以理解的代码”的情况下使用。