如何删除图中不必要的直线?

时间:2013-12-05 03:22:43

标签: python matplotlib

以下数组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()

enter image description here

1 个答案:

答案 0 :(得分:1)

如你所知,情节从峰值零点开始,然后向右移动,然后跳到最左边并向回中间运行。它不是一个简单的从左到右的时间序列(如果你认为它是这样的话)。

一种解决方法是将'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,你需要设置颜色以便匹配。