在for循环中Python plt打印不工作

2024-06-12 23:01:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图绘制一个简单的自定义sinc函数,定义如下(改编自Oliphant关于科学计算的Python的一篇旧论文):

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值之后重新绘制/更新),我尝试了以下代码:

^{pr2}$

其中plt是通常的matplotlib.pyplotplNumPy。我可以看到matplotlib框,轴和轴的限制都在增加,但绘图根本没有被打印/绘制/打印/显示(如下图所示)

Image


Tags: 函数fromimportnumpyreturn定义matplotlibas
2条回答

我不知道你的问题是什么,它是否在使用plt.绘图而不是图,或在范围(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)

结果(等待一段时间后)

enter image description here

现在,您将在每个迭代中创建一个单点绘图。要查看点,请在绘图中添加一个标记(https://matplotlib.org/api/markers_api.html#module-matplotlib.markers)。在

plt.plot(pl[x],c='blue', marker='o')

如果您的目的是创建所有点的曲线图,那么可以在循环之后创建绘图,并将listpl作为第一个参数:

^{pr2}$

相关问题 更多 >