python - 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()
请帮助
解决方案
以下应该有效:
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.where
Z
contourf
推荐阅读
- excel - 如何打开 .msg 文件?
- python - 我该如何解决这个特定的“TypeError:类型'NoneType'无法序列化。” 错误?
- drake - 我已经安装了 drake 并使用 Matlab 设置了 drake,现在该怎么办?
- javascript - 大范围输入的素数总和
- angular - 带有选择的属性的角度 i18n
- javascript - 单击链接时关闭移动设备上的菜单
- docker - 我是否在容器上运行?
- python - 如何解决“模型用作中间模型但它没有模型的外键”?
- big-o - How can i solve the recursion T(n) = 5T(n/7) + logn?
- android - 自定义 CardViews 以匹配模型