【发布时间】: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