首页 > 解决方案 > Python plt在for循环中绘图 - 不工作

问题描述

我正在尝试绘制一个简单的自定义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.pyplotpl是一个NumPy。我可以看到matplotlib带有轴和轴限制的框架在增加,但绘图根本没有绘制/绘制/打印/显示(如下图所示)

图片

标签: pythonmatplotlibplot

解决方案


我不确定您的问题是什么,无论是使用 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)

结果(稍等片刻)

在此处输入图像描述


推荐阅读