通过鼠标单击获取 matplotlib 绘图图 python 的坐标

Posted

技术标签:

【中文标题】通过鼠标单击获取 matplotlib 绘图图 python 的坐标【英文标题】:get Coordinates of matplotlib plot figure python with mouse click 【发布时间】:2017-07-14 11:00:00 【问题描述】:

我一直在尝试根据 matplotlib 绘图比例而不是像素将鼠标 x,y 坐标转换为变量,但它只返回整数分量,如 0.0 或 1.0 我想返回准确的数字,例如 0.1245 这是我的代码

import matplotlib
import Tkinter as tk
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2TkAgg
from matplotlib.figure import Figure
import numpy as np
import matplotlib.pyplot as plt


def onclick(self,event):
    ix, iy = float(event.xdata), float(event.ydata)

    print 'x = %d, y = %d' % (
        ix, iy)



root = tk.Tk()
circle1 = plt.Circle((0, 0), 1, color='blue')

f = plt.figure()
a = f.add_subplot(111)
f, a = plt.subplots()
a.add_artist(circle1)
a.set_xlim(-1.1, +1.1)
a.set_ylim(-1.1, +1.1)

#a.plot(circle1)
canvas = FigureCanvasTkAgg(f, master=root)
canvas.show()
canvas.get_tk_widget().pack(side=tk.TOP, fill=tk.BOTH, expand=1)

canvas.mpl_connect('button_press_event', onclick)

canvas._tkcanvas.pack(side=tk.TOP, fill=tk.BOTH, expand=1)

root.mainloop()

【问题讨论】:

这很有趣。我正在 Python 3 中尝试这个,除了细微的变化(Tkinter -> tkinter、字符串格式和def onclick(self, event) -> def onclick(event)),它给了我非常准确的结果。 实际上是的,python 3 与 python 不同,有一些细微的变化,谢谢回复:) 【参考方案1】:

正在获得准确的结果,ixiy 是具有您想要的准确度的浮点数。问题是格式在

print 'x = %d, y = %d' % (ix, iy)

%d 表示该数字应显示为整数,而这正是这里发生的情况。如果您尝试使用 %f 进行浮点表示:

print 'x = %f, y = %f' % (ix, iy)

你会看到你得到了准确的结果。

【讨论】:

以上是关于通过鼠标单击获取 matplotlib 绘图图 python 的坐标的主要内容,如果未能解决你的问题,请参考以下文章

数据分析与展示——Matplotlib基础绘图函数示例

鼠标悬停时使用matplotlib注释绘图线[重复]

python绘图之matplotlib

Matlab:如何通过鼠标单击(使用'ButtonDownFcn')将多个变量点从绘图保存到工作区?

十matplotlib统计图

Matplotlib常用绘图示例入门