Matplotlib:如何在我的图表上绘制点而不是将它们绘制在按钮上?
Matplotlib: How to plot points on my graph instead of painting them on a button?
编辑:ax.scatter(event.xdata, event.ydata)
工作正常,不知道我是如何通过这个的。然而,按下按钮仍然是画点,我想知道过滤坐标是否是解决这个问题的好方法。
这是我在轴上绘制一些点的最少代码。不幸的是,按钮代码 plt.scatter()
停止正常工作(按钮顶部开始出现点)。对我有什么建议吗?
import matplotlib.pyplot as plt
from matplotlib.widgets import Button
fig = plt.figure()
ax = fig.add_subplot(111)
ax.set_xlim([0, 10])
ax.set_ylim([0, 10])
def onclick(event):
plt.scatter(event.xdata, event.ydata)
fig.canvas.draw()
cid = fig.canvas.mpl_connect('button_press_event', onclick)
def do(event):
print(1)
bprev = Button(plt.axes([0.7, 0.05, 0.1, 0.075]), 'Previous')
bprev.on_clicked(do)
plt.show()
要解决第一个问题,正如 T. 先生指出的那样,您可以使用 ax.scatter(event.xdata, event.ydata)
在主轴上绘图,而不是在按钮上绘图。
要解决单击按钮时绘制点的问题,可以使用event.inaxes
属性,它会告诉您鼠标单击的Axes 实例。因此,如果 event.inaxes
与 ax
相同,则绘制点;如果没有,那么它就在按钮中,所以什么都不做。
在你的函数中,它看起来像这样:
def onclick(event):
if event.inaxes == ax:
ax.scatter(event.xdata, event.ydata)
fig.canvas.draw()
编辑:ax.scatter(event.xdata, event.ydata)
工作正常,不知道我是如何通过这个的。然而,按下按钮仍然是画点,我想知道过滤坐标是否是解决这个问题的好方法。
这是我在轴上绘制一些点的最少代码。不幸的是,按钮代码 plt.scatter()
停止正常工作(按钮顶部开始出现点)。对我有什么建议吗?
import matplotlib.pyplot as plt
from matplotlib.widgets import Button
fig = plt.figure()
ax = fig.add_subplot(111)
ax.set_xlim([0, 10])
ax.set_ylim([0, 10])
def onclick(event):
plt.scatter(event.xdata, event.ydata)
fig.canvas.draw()
cid = fig.canvas.mpl_connect('button_press_event', onclick)
def do(event):
print(1)
bprev = Button(plt.axes([0.7, 0.05, 0.1, 0.075]), 'Previous')
bprev.on_clicked(do)
plt.show()
要解决第一个问题,正如 T. 先生指出的那样,您可以使用 ax.scatter(event.xdata, event.ydata)
在主轴上绘图,而不是在按钮上绘图。
要解决单击按钮时绘制点的问题,可以使用event.inaxes
属性,它会告诉您鼠标单击的Axes 实例。因此,如果 event.inaxes
与 ax
相同,则绘制点;如果没有,那么它就在按钮中,所以什么都不做。
在你的函数中,它看起来像这样:
def onclick(event):
if event.inaxes == ax:
ax.scatter(event.xdata, event.ydata)
fig.canvas.draw()