본문 바로가기
파이썬

파이썬 Python find x value to corresponding max y value in plot

by º기록 2021. 2. 11.
반응형

약 300,000 개의 데이터 포인트에서 이동 평균을 플로팅했으며 신호의 피크에 대한 최대 y 값과 해당 주파수 인 해당 x 값을 찾아야합니다. 플롯 자체의 좌표를 제공하고 싶지만 적어도 인쇄 할 수 있다면 만족할 것입니다. 내 프로그래밍 기술이 가장 강하지 않기 때문에 실례합니다. 여기에 내가 작업중인 코드 섹션과 생성되는 플롯에 대한 링크가 있습니다. 이미지를 게시 할 포인트가 충분하지 않습니다.

def movingaverage(interval, window_size):
    window= np.ones(int(window_size))/float(window_size)
    return np.convolve(interval, window, 'same')

x = freq[0:300000]
y = fft
pylab.plot(x,y,"k.")
y_av = movingaverage(y, 30)
pylab.plot(x, y_av,"r")
pylab.xlim(0,10)
pylab.ylim(0,1500)
pylab.xlabel("Frequency")
pylab.ylabel("Moving Average Magnitude")
pylab.grid(True)
pylab.show() 


 

해결 방법

 

다음과 같이 할 수 있어야합니다.

max_y = max(y_av)  # Find the maximum y value
max_x = x[y_av.index(max_y)]  # Find the x value corresponding to the maximum y value
print max_x, max_y

수정

numpy 배열에는 인덱스 메소드가 없으므로 주석에서 지적한대로 argmax를 사용해야합니다.

max_y = max(y_av)  # Find the maximum y value
max_x = x[y_av.argmax()]  # Find the x value corresponding to the maximum y value
print max_x, max_y


pylab.text(max_x, max_y, str((max_x, max_y)))

 

참조 페이지 https://stackoverflow.com/questions/11871241

 

 

반응형

댓글