我试图绘制一个简单的自定义sinc
函数,定义如下(改编自Oliphant关于Python for Scientific Computing的旧论文):
from math import sin, pi
import NumPy as np
def sinc(x):
'''Compute the sinc function: sin(pi*x)/pi*x'''
try:
return sin(x)/x
except ZeroDivisionError:
return 1.0
output = [sinc(x) for x in input]
要绘制它(逐点,在每个新计算的sinc值之后重新绘制/更新),我尝试了以下代码:
pl = np.zeros(1001)
for x in range(1,1001,1):
pl[x]=sinc(x)
plt.plot(pl[x],c='blue')
plt.pause(0.05)
plt.show()
其中plt
通常是matplotlib.pyplot
,pl
是NumPy
。我可以看到matplotlib
框架的轴和轴限制增加但是图表根本没有绘制/绘制/打印/显示(如下图所示)
答案 0 :(得分:0)
我不确定你的问题是什么,无论是使用plt.plot而不是fig.plot,还是在范围(0,1000)上进行绘图而不是更小的例如。 (0,2 * pi)。也可能是您正在初始化pl
。也许你需要设置plt.ion()
。我设法让这个工作,但
import numpy as np
import matplotlib.pyplot as plt
plt.ion()
fig, ax = plt.subplots()
x = np.linspace(0, 2*np.pi, 1000)
y = np.zeros(1000)
for index, xi in enumerate(x):
y[index] = np.sinc(xi)
ax.plot(x, y, color='b')
plt.pause(0.01)
结果(等待一段时间后)
答案 1 :(得分:0)
现在,您要在每次迭代中创建一个包含单个点的图。要查看点添加,请在图中添加标记(https://matplotlib.org/api/markers_api.html#module-matplotlib.markers)。
plt.plot(pl[x],c='blue', marker='o')
如果您打算将绘图创建为所有点的曲线,那么您可以在循环之后使用列表 pl 作为第一个参数创建绘图:
for x in range(1,1001,1):
pl[x]=sinc(x)
plt.plot(pl[x],c='blue')
plt.show()