【问题标题】:Ending manual selection of contours in matplotlib using Spyder IDE使用 Spyder IDE 在 matplotlib 中结束手动选择轮廓
【发布时间】:2020-03-28 22:13:16
【问题描述】:

我正在尝试使用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 跟踪点击时控制台上的消息是:

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

问题是右键单击并没有结束事件记录,在运行时我无法在脚本中越过这一点。我已经在 Windows 和 Mac 上使用 Spyder 进行了尝试,并且 第二个鼠标按钮 没有被记录。

编辑 1:正如@ImportanceOfBeingErnest 指出的那样,第二个鼠标按钮 实际上是滚轮,而不是右键。我决定保留这个问题,因为我认为这对 matplotlib 的每个用户来说都不是很清楚。

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

当然是带有轮廓标签。我已经在 Automatic、Tkinter 和 Qt5 中使用图形绘图仪尝试过这个过程,但没有成功。

【问题讨论】:

  • 鼠标右键是“第三个”,用第二个代替,应该是鼠标滚轮。我不知道只有两个按钮的鼠标会发生什么。
  • 谢谢@ImportanceOfBeingErnest。我能够通过这种洞察力让它发挥作用。我已经让它在带有 TouchPad 的 Windows 和带有 Magic Mouse 的 Mac 中工作。

标签: python matplotlib spyder contour


【解决方案1】:

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

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

【讨论】:

  • 谢谢@Patol75。我知道这个功能,但我想手动设置它们以避免不得不猜测我想要的位置的轴坐标。
【解决方案2】:

我在 PyCharm/windows 10 上试过。

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

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

【讨论】:

    【解决方案3】:

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

    对于使用 Magic Mouse 的 Mac 用户,解决方案并不那么简单。我能够使其与第 3 方应用程序 BetterTouchTool 一起工作。下载后,转到系统偏好设置>>安全和隐私。在允许下面的应用程序控制您的计算机。部分下,启用 BetterTouchTool。

    然后,打开应用并在选择触发器下选择一指中键。然后在右侧的 Actions Assigned to Selected Trigger 部分下,选择 Middle Click。完成此操作后,按下魔法按钮的中间即可:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-07
      • 2016-06-29
      • 1970-01-01
      • 2023-03-24
      • 1970-01-01
      • 2016-02-24
      相关资源
      最近更新 更多