matplotlib 如何用python求多个极大值的x,y坐标?[副本]

xmq68pz9  于 2023-03-09  发布在  Python
关注(0)|答案(1)|浏览(199)
    • 此问题在此处已有答案**:

(13个答案)
Finding local maxima using find_peaks(1个答案)
Find all local Maxima and Minima when x and y values are given as numpy arrays(3个答案)
4天前关闭。
嗨,我正在寻找一个程序,以找到多个波段的最大值在一个图中,但我已经找到了只定位最大的最大值,我想确定第二个最大的坐标。

这是我剧本

`import numpy as np
import matplotlib.pyplot as plt

a2=np.loadtxt('O-25.txt') 
x2=a2[:,0]
y2=a2[:,1]
y2Max = max(y2)
print(y2Max)
zz = y2/y2Max



#plt.plot(x2,zz,linewidth=2,label="B3lyp")
fig, ax = plt.subplots()
ax.plot(x2,zz,linewidth=2,label="")

def annot_max(x2,zz, ax=None):
    xmax = x2[np.argmax(zz)]
    ymax = zz.max()
    text= "x={:.3f}, y={:.3f}".format(xmax, ymax)
    if not ax:
        ax=plt.gca()
    bbox_props = dict(boxstyle="square,pad=0.3", fc="w", ec="k", lw=0.72)
    arrowprops=dict(arrowstyle="->",connectionstyle="angle,angleA=0,angleB=60")
    kw = dict(xycoords='data',textcoords="axes fraction",
              arrowprops=arrowprops, bbox=bbox_props, ha="right", va="top")
    ax.annotate(text, xy=(xmax, ymax), xytext=(0.94,0.96), **kw)

annot_max(x2,zz)

plt.xlabel('wavelength(nm)' , fontname='arial', fontsize=14)
plt.ylabel('energy (cm-1)' , fontname='arial', fontsize=14)
plt.title("O-")
plt.legend()`
nkhmeac6

nkhmeac61#

可以使用scipy定位所有局部最大值:

from scipy.signal import argrelextrema
inds_local_max = argrelextrema(zz, np.greater)

相关问题