首页 > 解决方案 > python:如何通过鼠标事件删除部分等高线图(matplotlib)

问题描述

当鼠标单击地图时,我要删除(归零)单击下方的内容

from matplotlib import pyplot as plt
import numpy as np
fig = plt.figure()
ax = fig.add_subplot(111)
line = ax.plot([0],[-3])  # empty line

xlist = np.linspace(-3.0, 3.0, 100)
ylist = np.linspace(-3.0, 3.0, 100)
X, Y = np.meshgrid(xlist, ylist)
Z = np.sqrt(X**2 + Y**2)
cp = ax.contourf(X, Y, Z)
fig.colorbar(cp) # Add a colorbar to a plot
ax.set_title('Filled Contours Plot')
ax.set_ylabel('y (cm)')
def onclick(event):
    print('%  x=%d, y=%d, xdata=%f, ydata=%f' %
          ( event.button,
           event.x, event.y, event.xdata, event.ydata))
cid = fig.canvas.mpl_connect('button_press_event', onclick)


plt.show()

请帮助

标签: pythonnumpymatplotlib

解决方案


以下应该有效:

def onclick(event):
    print('%  x=%d, y=%d, xdata=%f, ydata=%f' %
          (event.button, event.x, event.y, event.xdata, event.ydata))
    Z[np.where(ylist>=event.ydata)[0][0],
      np.where(xlist>=event.xdata)[0][0]] = 0.
    ax.contourf(X, Y, Z)
    fig.canvas.draw_idle()

新行通过使用并将值设置为零来查找网格上event检测到鼠标的最近索引(由于插值) 。然后,再次调用并绘制。np.whereZcontourf


推荐阅读