Matplotlib事件onclick在变量中存储坐标?
Posted
技术标签:
【中文标题】Matplotlib事件onclick在变量中存储坐标?【英文标题】:Matplotlib event onclick store coordinates in variable? 【发布时间】:2022-01-10 12:05:30 【问题描述】:我希望能够使用我在图表中单击的点的坐标,以便稍后在我的脚本中使用。 我一直在尝试使用 onclick 函数中的全局变量,但这不起作用。为什么? 第二个问题:我该如何解决?
这是我尝试将 x 坐标存储在变量 x 中的简化代码。脚本完成后,x 变量的值为 -999,即初始值。我希望它获得鼠标在图形上单击的 x 坐标:
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(np.random.rand(10))
x = -999
def onclick(event):
print (event.xdata, event.ydata)
global x
x = event.xdata
print(x)
plt.close()
cid = fig.canvas.mpl_connect('button_press_event', onclick)
plt.show()
【问题讨论】:
【参考方案1】:您的代码有效。如果您在最后打印x
变量,在plt.show
之后,您将获得x
的正确值。
参见下面的代码和示例:
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(np.random.rand(10))
x = -999
def onclick(event):
print (event.xdata, event.ydata)
global x
x = event.xdata
plt.close()
cid = fig.canvas.mpl_connect('button_press_event', onclick)
plt.show()
print('x_pos '+str(x))
输出给出:
1.1866935483870962 0.6654995725561207
x_pos 1.1866935483870962
【讨论】:
您好,感谢您的回答。但是,如果我完全使用您的代码,我会得到:x_pos -999 4.87923387096774 0.5276053672087042
那就是在调用函数之前读取 x_pos 变量。我们有不同的设置吗?以上是关于Matplotlib事件onclick在变量中存储坐标?的主要内容,如果未能解决你的问题,请参考以下文章