Matplotlib:如何在我的图表上绘制点而不是在按钮上绘制它们?
Posted
技术标签:
【中文标题】Matplotlib:如何在我的图表上绘制点而不是在按钮上绘制它们?【英文标题】:Matplotlib: How to plot points on my graph instead of painting them on a button? 【发布时间】:2021-02-26 04:51:45 【问题描述】:编辑:ax.scatter(event.xdata, event.ydata)
工作正常,IDK 我是怎么过去的。但是,按下按钮仍然是画点,我想知道过滤坐标是否是解决这个问题的好习惯。
这是我在轴上绘制一些点的最小代码。不幸的是,按钮代码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()
【问题讨论】:
赞成伟大的(虽然是无意的)效果。不过,让它ax.scatter(event.xdata, event.ydata)
。
@Mr.T 谢谢!!! IDK我是怎么过去的......然后我想我会通过坐标过滤点击以避免在点击按钮时绘画。
【参考方案1】:
要解决第一个问题,正如 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()
【讨论】:
以上是关于Matplotlib:如何在我的图表上绘制点而不是在按钮上绘制它们?的主要内容,如果未能解决你的问题,请参考以下文章
为什么索引显示图表而不是国家?使用Matplotlib水平条形图
Python/MatPlotLib:无法在 y 轴上打印正确的数据
如何在我的数组上使用 forEach 循环在我的图表上绘制 x 和 y 变量(Chart.js)