Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 实时绘制动态光谱图_Python_Numpy_Matplotlib_Spectrogram_Vispy - Fatal编程技术网

Python 实时绘制动态光谱图

Python 实时绘制动态光谱图,python,numpy,matplotlib,spectrogram,vispy,Python,Numpy,Matplotlib,Spectrogram,Vispy,我基本上有三个数据点在三个单独的numpy数组中,我想沿着x轴绘制时间,沿着y轴绘制频率,幅度应该代表颜色。但这一切都是实时发生的,所以当数据更新时,光谱图应该看起来像是在画自己 我对代码进行了简化,以显示我正在运行一个最多需要10 ms才能运行的循环,在此期间,我从函数中获取新数据 import numpy as np import random from time import sleep def new_val_freq(): return random.randint(0,22)

我基本上有三个数据点在三个单独的numpy数组中,我想沿着x轴绘制时间,沿着y轴绘制频率,幅度应该代表颜色。但这一切都是实时发生的,所以当数据更新时,光谱图应该看起来像是在画自己

我对代码进行了简化,以显示我正在运行一个最多需要10 ms才能运行的循环,在此期间,我从函数中获取新数据

import numpy as np
import random
from time import sleep

def new_val_freq():
   return random.randint(0,22)

def new_val_mag():
   return random.randint(100,220)

x_axis_time = np.array([1])
y_axis_frequency = np.array([10])
z_axis_magnitude = np.array([100])

t = 1
while True:
   x_axis_time = np.append (x_axis_time , [t+1])
   t+=1

   y_axis_frequency = np.append (y_axis_frequency , [new_val_freq()])
   z_axis_magnitude = np.append (z_axis_magnitude, [new_val_mag()])
   
   time.sleep(0.01)
   #Trying to figure out how Create/Update spectrogram plot with above additional 
   #data in real time without lag

理想情况下,我希望这是尽可能快,而不是必须重新绘制整个光谱图。matplolib似乎不适合绘制动态光谱图,我还没有遇到任何动态光谱图示例,因此我想知道如何才能做到这一点?

您可以用您正在使用的代码填写“创建光谱图”部分吗?简而言之,如果您使用的是imshow,那么您应该使用
set\u data
方法。这在使用pcolormesh时也是可能的,但我认为制作pcolormesh动画要困难得多,这就是我一直试图弄明白的。如何在没有任何延迟的情况下实时绘制光谱图。我使用了matplotlib动画概念,它可以绘制从麦克风获得的声音的频谱图。但是,无论我如何减少
interval
参数,这也很慢。即使是创建静态光谱图的代码也会很有帮助