하위구 축 범위 설정 방법
두 번째 하위 플롯의 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
'sourcetip' 카테고리의 다른 글
Firebase 연결을 명확히 합니다. (0) | 2023.06.27 |
---|---|
$196 결과의 $일치 (0) | 2023.06.27 |
ModuleNotFoundError: 'sklearn'이라는 이름의 모듈이 없습니다. (0) | 2023.06.27 |
PHP에서 mysql 데이터베이스로 Excel 파일을 가져오는 방법 (0) | 2023.06.22 |
기본 인수 값을 포함한 함수의 서명을 읽으려면 어떻게 해야 합니까? (0) | 2023.06.22 |