Skip to main content
 首页 » 编程设计

python之如何去除情节中不必要的直线

2025年05月04日9lyj

下面数组freq中的数据没有排序。

有什么方便的方法可以删除我的图中从左到右不必要的直线吗?

import pylab as pl 
import numpy as np 
timepoints=np.loadtxt("timesequence",usecols=(1,),unpack=True,delimiter=",") 
t=np.histogram(timepoints,bins=500)[0] 
sp = np.fft.fft(t) 
freq = np.fft.fftfreq(t.shape[-1],d=0.0005) 
print freq 
pl.plot(freq*2*np.pi, np.sqrt(sp.real**2+sp.imag**2)) 
pl.show() 

请您参考如下方法:

如您所见,绘图从峰值零点开始,然后向右移动,然后跳到最左侧并返回中间。它不是一种简单的从左到右的时间序列(如果您认为它是这样的话)。

一种解决方法是将“freq”中的正点与“freq”中的负点分开绘制。将您的 pl.plot 代码行替换为以下内容:

mask = freq>=0 
pl.plot(freq[mask]*2*np.pi, np.sqrt(sp[mask].real**2+sp[mask].imag**2)) 
pl.plot(freq[~mask]*2*np.pi, np.sqrt(sp[~mask].real**2+sp[~mask].imag**2)) 

ps,您需要设置颜色以使其匹配。