두 번째 하위 플롯의 Y축 범위를 [0,1000]과 같이 설정하려면 어떻게 해야 하나요? 내 데이터(텍스트 파일의 열)의 FFT 플롯에서 (inf.?) 스파이크가 발생하여 실제 데이터가 표시되지 않습니다.
pylab.ylim([0,1000])
는 안타깝게도 아무런 효과가 없습니다. 이것이 전체 스크립트입니다:
# based on http://www.swharden.com/blog/2009-01-21-signal-filtering-with-python/
import numpy, scipy, pylab, random
xs = []
rawsignal = []
with open("test.dat", 'r') as f:
for line in f:
if line[0] != '#' and len(line) > 0:
xs.append( int( line.split()[0] ) )
rawsignal.append( int( line.split()[1] ) )
h, w = 3, 1
pylab.figure(figsize=(12,9))
pylab.subplots_adjust(hspace=.7)
pylab.subplot(h,w,1)
pylab.title("Signal")
pylab.plot(xs,rawsignal)
pylab.subplot(h,w,2)
pylab.title("FFT")
fft = scipy.fft(rawsignal)
#~ pylab.axis([None,None,0,1000])
pylab.ylim([0,1000])
pylab.plot(abs(fft))
pylab.savefig("SIG.png",dpi=200)
pylab.show()
다른 개선 사항도 환영합니다!
http://www.mofeel.net/582-comp-soft-sys-matlab/54166.aspx 에서 확인할 수 있습니다.
pylab.ylim([0,1000])
참고: 명령은 플롯 이후에 실행해야 합니다!
축 개체]1를 사용하는 것은 이를 위한 좋은 방법입니다. 여러 그림 및 하위 플롯과 상호 작용하려는 경우 유용합니다. 축 개체를 직접 추가하고 조작하려면 다음과 같이 하세요:
import matplotlib.pyplot as plt
fig = plt.figure(figsize=(12,9))
signal_axes = fig.add_subplot(211)
signal_axes.plot(xs,rawsignal)
fft_axes = fig.add_subplot(212)
fft_axes.set_title("FFT")
fft_axes.set_autoscaley_on(False)
fft_axes.set_ylim([0,1000])
fft = scipy.fft(rawsignal)
fft_axes.plot(abs(fft))
plt.show()
때로는 데이터를 플롯하기 전에 축 제한을 설정하고 싶을 때가 있습니다. 이 경우 '축' 또는 '축 하위 플롯' 개체의 '자동 크기 조정' 기능을 설정할 수 있습니다. 관심 있는 함수는 set_autoscale_on
, set_autoscalex_on
및 set_autoscaley_on
입니다.
귀하의 경우, Y축의 한계를 고정하고 싶지만 데이터를 수용하기 위해 X축을 확장할 수 있도록 허용하고 싶습니다. 따라서 autoscaley_on
속성을 False
로 변경하려고 합니다. 다음은 코드에서 FFT 하위 플롯 스니펫의 수정된 버전입니다:
fft_axes = pylab.subplot(h,w,2)
pylab.title("FFT")
fft = scipy.fft(rawsignal)
pylab.ylim([0,1000])
fft_axes.set_autoscaley_on(False)
pylab.plot(abs(fft))