假设我有一个绘制正弦和余弦函数的程序。 我希望能够选择由图形创建的子区间或区域,例如π/ 4&lt; x&lt; 5π/ 4或-3π/ 4 < x&lt; π/ 4。
所以,如果我有这个:
import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure()
ax = plt.axes(xlim=(-10, 10), ylim=(-10, 10))
ax.set_aspect("equal")
x = np.array((np.linspace(-10,10,500)))
y = np.sin(x)
plt.plot(x,y)
y2 = np.cos(x)
plt.plot(x,y2)
plt.show()
我已经能够打印鼠标点击的坐标,但至于远远超过那个,我被卡住了。
def onclick(event):
print('x=%f, y=%f'%(event.xdata, event.ydata))
fig.canvas.mpl_connect('button_press_event', onclick)
我怎么做: 1.存储鼠标点击的点 2.检查该点的间隔
感谢任何帮助。
答案 0 :(得分:1)
有一些内置工具可以提供阻止鼠标输入(参见plt.ginput
)。
另一种选择是自己动手。最简单的方法是创建一个帮助类来存储单击的值:
class ClickKeeper(object):
def __init__(self):
self.last_point = None
def on_click(self, event):
self.last_point = (event.xdata, event.ydata)
ck = ClickKeeper()
fig.canvas.mpl_connect('button_press_event', ck.onclick)
另一个选项(如果你嵌入一个大的GUI应用程序就是连接GUI的回调堆栈。
请参阅matplotlib.widgets
(doc)和(examples)了解一些内置工具,image_inspector项目(尽管名称通常是有用的gui工具),mpldatacursor
和本书Interactive Applications in matplotlib(由其中一位核心开发人员撰写)。