python - 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.pyplot
,pl
是一个NumPy
。我可以看到matplotlib
带有轴和轴限制的框架在增加,但绘图根本没有绘制/绘制/打印/显示(如下图所示)
解决方案
我不确定您的问题是什么,无论是使用 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)
结果(稍等片刻)
推荐阅读
- javascript - Github auth 在 jquery 上运行良好,但在 react.js 上不行
- sql - 如何在sql中获取平均时间
- python - 如何根据连续性拆分时间序列索引
- latex - 手动乳胶部分 IEEE 标准
- python - 使用美丽的汤打印反应文本
- azure - 如何通过控制台应用程序更新 Azure Devops 上的文件
- javascript - 如何清除 document.write()
- arrays - 如何在numpy的4D数组中更改通道内的顺序
- javascript - “this”引用如何绑定箭头符号?
- amazon-web-services - Boto3 使用现有资源创建堆栈