Python 使用Spyder IDE结束matplotlib中等高线的手动选择

Python 使用Spyder IDE结束matplotlib中等高线的手动选择,python,matplotlib,spyder,contour,Python,Matplotlib,Spyder,Contour,我正在尝试使用matplotlib.pyplot.clabel手动放置等高线标签,如下所示: import matplotlib.pyplot as plt import numpy as np # Make example contours N=20 X = np.linspace(0.0, 10.0, N) Y = np.linspace(0.0, 25.0, N) Z = np.ones((N,N)) i=0 j=0 for i in range(N): for j in ran

我正在尝试使用
matplotlib.pyplot.clabel
手动放置等高线标签,如下所示:

import matplotlib.pyplot as plt
import numpy as np

# Make example contours
N=20
X = np.linspace(0.0, 10.0, N)
Y = np.linspace(0.0, 25.0, N)
Z = np.ones((N,N))
i=0
j=0
for i in range(N):
    for j in range(N):
        Z[i][j] = i+j
        j += 1
    i += 1
Z = Z.transpose()

# Make subplots figure
fig, axes = plt.subplots(2, 1, sharex=True, figsize=(8,5))
im =  axes[0].contour(X, Y, Z, colors = 'k')
CLS = plt.clabel(im, colors = 'k', fmt = '%2.1f', fontsize=12, manual=True)
im2 =  axes[1].contourf(X, Y, Z)
fig.show()
此代码生成下图,在左键单击不同等高线时,将等高线标签添加到这些等高线:

python跟踪单击时控制台上的消息是:

使用第一个鼠标按钮手动选择标签位置。 使用第二个鼠标按钮结束手动选择

问题是,右键单击不会结束事件录制,并且我无法在运行时通过脚本中的这一点。我用Spyder在Windows和Mac上都试过了,但第二个鼠标按钮没有被录制下来

编辑1:@ImportanceOfBeingErnest指出,第二个鼠标按钮实际上是滚轮,而不是右键。我决定不提这个问题,因为我认为matplotlib的每个用户都不清楚这一点。

我想知道如何结束手动选择过程,以便程序继续,并且我能够检索到如下图:


当然是轮廓标签。我曾在Automatic、Tkinter和Qt5的数字绘图仪上尝试过这一过程,但没有成功。

这不是您期望的答案,但我自己也曾在
clabel
中遇到过类似的问题,并以不同的方式使用
手动
关键字找到了解决方法。您所要做的就是提供一个元组的元组,每个元组包含所需标签的坐标(这些坐标就像您正在使用x和y记号标签读取图形一样)。然后,算法会将标签添加到最近的轮廓。有一些尝试和错误,但至少我发现它比鼠标选择更可靠

ax.clabel(contourObject, colors='', fmt='', fontsize=,
          manual=((x1, y1), (x2, y2), (x3, y3)), inline=True,
          inline_spacing=)

我在PyCharm/Windows10上试用过

滚动按钮上的clic结束录制,当我在clabel函数中添加
inline=False
时,我可以删除最后添加的标签

您可以在matplotlib事件处理和拾取中找到解决方案
文档:

正如@ImportanceOfBeingErnest所说,第二个鼠标按钮实际上是滚轮,而不是右键。如果您有一个三个按钮都有的鼠标,那么这就是解决方案

对于使用神奇鼠标的Mac用户来说,解决方案并不那么简单。我能够使它与第三方应用程序一起工作。下载后,请转到系统首选项>>安全和隐私。在“允许以下应用程序控制计算机”部分下,启用BetterTouchTool

然后,打开应用程序,在下选择触发器选择1个手指中键。然后在右侧,在分配给所选触发器的操作部分下,选择中键单击。完成此操作后,按下魔术按钮的中间将完成以下操作:


右侧的鼠标按钮是“第三个”,请使用第二个按钮,即鼠标滚轮。我不知道只有两个按钮的鼠标会发生什么。谢谢@ImportanceOfBeingErnest。我能够通过这种洞察力使它工作。我已经让它在Windows和TouchPad环境下工作,在Mac和神奇鼠标环境下工作。谢谢@Patol75。我知道这个特性,但我想手动设置它们,以避免猜测我想要的位置的轴坐标。