sourcetip

하위구 축 범위 설정 방법

fileupload 2023. 6. 27. 22:29
반응형

하위구 축 범위 설정 방법

두 번째 하위 플롯의 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()

다른 개선 사항도 감사드립니다!

다음이 있습니다.

pylab.ylim([0,1000])

참고: 명령은 플롯 후에 실행해야 합니다!

2021년 업데이트
이제 matplotlib에서는 pylab을 사용하는 것이 권장되지 않으므로 pyplot을 대신 사용해야 합니다.

from matplotlib import pyplot as plt
plt.ylim(0, 100) 
#corresponding function for the x-axis
plt.xlim(1, 1000)

를 위해 축 객체를 사용하는 것이 좋습니다.여러 그림 및 하위 그림과 상호 작용하려는 경우 유용합니다.축 객체를 직접 추가 및 조작하려면 다음과 같이 하십시오.

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()

데이터를 표시하기 전에 축 한계를 설정해야 하는 경우가 있습니다.이 경우 다음과 같이 자동 스케일링 기능을 설정할 수 있습니다.Axes또는AxesSubplot물건.관심의 기능은 다음과 같습니다.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))

여러 개의 하위 플롯이 있는 경우, 즉

fig, ax = plt.subplots(4, 2)

모든 항목에 대해 동일한 y 한계를 사용할 수 있습니다.첫 번째 그래프에서 Yax 한계를 얻습니다.

plt.setp(ax, ylim=ax[0,0].get_ylim())

당신이 원하는 정확한 축을 안다면,

pylab.ylim([0,1000])

이전에 답변한 대로 작동합니다.하지만 제가 이 질문을 발견했을 때처럼 정확한 데이터에 맞는 보다 유연한 축을 원한다면 축 제한을 데이터 집합의 길이로 설정하십시오.데이터 집합이 다음과 같은 경우fft질문과 같이 플롯 명령 뒤에 다음을 추가합니다.

length = (len(fft)) pylab.ylim([0,length])

언급URL : https://stackoverflow.com/questions/2849286/how-to-set-the-subplot-axis-range

반응형