Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python mplcursors:显示并突出显示附近局部极值的坐标_Python_Matplotlib - Fatal编程技术网

Python mplcursors:显示并突出显示附近局部极值的坐标

Python mplcursors:显示并突出显示附近局部极值的坐标,python,matplotlib,Python,Matplotlib,我的代码使用,类似于,显示matplotlib散点图中每个点的标签。我想知道如何,形成一个值列表,使某个点突出,就像我有一个点y=-x^2的图形一样。当我接近峰值时,它不应该显示0.001,而是显示0,而不需要麻烦找到顶部的确切鼠标位置。我无法为图中的每个点求解,因为我没有特定的函数。假设散点图中的点是有序的,我们可以研究附近窗口中的极值是否也是较大窗口中的极值。如果,那么我们可以用它的x和y坐标来报告这个极限 下面的代码仅在接近局部最大值或最小值时显示注释。它还临时显示一条水平和垂直线,以指示

我的代码使用,类似于,显示matplotlib散点图中每个点的标签。我想知道如何,形成一个值列表,使某个点突出,就像我有一个点y=-x^2的图形一样。当我接近峰值时,它不应该显示0.001,而是显示0,而不需要麻烦找到顶部的确切鼠标位置。我无法为图中的每个点求解,因为我没有特定的函数。

假设散点图中的点是有序的,我们可以研究附近窗口中的极值是否也是较大窗口中的极值。如果,那么我们可以用它的x和y坐标来报告这个极限

下面的代码仅在接近局部最大值或最小值时显示注释。它还临时显示一条水平和垂直线,以指示准确的点。代码可以是许多变体的起点

将matplotlib.pyplot作为plt导入 导入MPLS游标 将numpy作为np导入 近窗=近窗宽度的10 远窗=20远窗的宽度 def显示注释选择: ind=sel.target.index 近距离起始距离索引=max0,ind-近距离窗口 y_near=y[近距离开始索引:minN,ind+近距离窗口] y\u far=y[max0,ind-far\u窗口:minN,ind+far\u窗口] near_max=y_near.max far\u max=y\u far.max 注释\u str= 如果近最大值==远最大值: near_argmax=y_near.argmax 注释\u str=f'local max:\nx:{x[near\u start\u index+near\u argmax]:.3f}\ny:{near\u max:.3f}' maxline=plt.axhlinear_max,color='crimson',ls=':' maxline\u x=plt.axvlinex[近起始点\u索引+近argmax],颜色为灰色,ls=':' 选择附加附件MaxLine 选择附加附件MaxLine\u x 其他: near_min=y_near.min far\u min=y\u far.min 如果近距离=远距离: near_argmin=y_near.argmin 注释\u str=f'local min:\nx:{x[near\u start\u index+near\u argmin]:.3f}\ny:{near\u min:.3f}' minline=plt.axhlinear\u min,color='limegreen',ls=':' minline_x=plt.axvlinex[near_start_index+near_argmin],color='grey',ls=':' 附加选择 附加附件 如果Lenu str>0: sel.annotation.set_textannotation_str 其他: sel.annotation.set_visibleFalse隐藏注释 sel.annotation.set_textf'x:{sel.target[0]:.3f}\n y:{sel.target[1]:.3f}' N=500 x=np.linspace0100500 y=np.cumsumnp.random.normal 0,0.1,N 方框=np.ones20/20 y=np.convolvey,box,mode='same' scat=plt.scatterx,y,s=1 cursor=mplcursors.cursorscat,hover=True 光标。连接“添加”,显示注释 节目
谢谢,这很有帮助,但是在它显示的地方Max:0.295,在离鼠标距离很远的地方,它仍然显示值,我希望它只显示局部最大值的x和y,而不是实际的局部最大值,我会怎么做?如果这回答了你的问题,你可以把答案看作是被接受的。