新增matplotlib的subplots的toolbar的坐标显示内容,如果鼠标悬停在bmp图片上所指的点为[0,255,0],则显示坐标➕Pass,否则显示为坐标➕fail
时间: 2024-12-06 08:33:04 浏览: 11
python Matplotlib底图中鼠标滑过显示隐藏内容的实例代码
在Matplotlib中,你可以通过添加一个自定义的工具提示或鼠标悬停事件来实现在subplot图中显示特定信息的功能。对于图片(如BMP或其他图像格式),你需要利用`~mpl_toolkits.axes_grid1.inset_locator`模块提供的功能,结合`imshow`的`extent`属性以及`Annotation`或`Text`对象。以下是一个简单的例子:
```python
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import inset_locator
def custom_tooltip(event):
if event.inaxes.get_label() == 'image':
x, y = event.xdata, event.ydata
data_point = [event.xdata, event.ydata, 0] # 假设BMP图片的颜色通道只有RGB的一个
color_status = 'Pass' if (x, y) == [0, 255, 0] else 'fail'
text = f"坐标:({x:.2f}, {y:.2f}) {color_status}"
axins.text(x, y, text, ha='center', va='center', color='red')
# 创建主图和子图
fig, axs = plt.subplots(nrows=1, ncols=2)
ax1, ax2 = axs.flat
im1 = ax1.imshow(np.random.rand(100, 100), extent=(0, 100, 0, 100))
im2 = ax2.imshow(np.zeros((100, 100)), extent=(0, 100, 0, 100)) # 用全黑图片展示颜色为[0, 255, 0]的点
# 添加子图的工具栏
axins1 = inset_locator.inset_axes(ax1, width="30%", height="30%", loc=1) # 第二张子图的工具栏
axins1.imshow(np.zeros((100, 100)), cmap='gray') # 显示一个空白区域作为目标
axins1.add_artist(inset_locator.AnchoredOffsetbox(loc=4, child=axins1,
pad=0., bbox_to_anchor=(0.5, 0.5),
bbox_transform=ax1.transAxes))
# 绑定鼠标移动事件到子图
fig.canvas.mpl_connect('motion_notify_event', custom_tooltip)
plt.show()
阅读全文