plt figure中加入键盘鼠标互动

如何在 Python 中使用 Matplotlib 创建一个空的 Figure? Matplotlib是一个功能强大的Python库,用于数据可视化和创建2D绘图。它提供了用于创建静态、动画和交互式图的各种工具,包括线图、散点图、条形图、直方图等。Matplotlib 是高度可定制的,允许用户调整颜色、字体和其他视觉元素来创建高质量的可视化效果。它广泛用于数据科学、工程和科学研究,被认为是 Python 最受欢迎的数据可视化库之一。Matplotlib是开源的,并且正在积极开发,拥有庞大的用户和贡献者社区,他们提供支持和维护库。 阅读详情

如果想在plt.figure的图像上点击以获取图片中某点的坐标,
或者同时显示了几个subplot, 想通过键盘输入数字以选择第几个subplot,

这时就需要加入互动。

下面就以上case来说明如何互动。

1.鼠标点击获取坐标

定义一个onclick函数作为event触发。
这里假设最多可选3个坐标。
在close掉figure的时刻选点互动结束,点击的坐标就作为list的元素保存到coords里。

coords = []

def onclick(event):
    global ix, iy
    ix, iy = int(event.xdata), int(event.ydata)
    print(f'x = {ix}, y = {iy}')
    print("If finished, please close the figure.")

    global coords
    coords.append((ix, iy))

    if len(coords) == 3:
        fig.canvas.mpl_disconnect(cid)
        print("finished! please close the figure.")

    return coords
    
fig = plt.figure()
plt.title("please click the targer, you can click at most 3 points.")
plt.axis("off")
ax = fig.add_subplot(111)
ax.imshow(img)
cid = fig.canvas.mpl_connect("button_press_event", onclick)
plt.show()

input_point = np.array(coords) #list转np array

2.键盘输入

比如现在figure 中subplot 3张图片,想用键盘输入0,1,2,来选择到底用哪张图片。
这时定义onkey event。
close figure时选择结束。键盘输入会保存在select_id变量中。

def onkey(event):
    print('you selected id: ', event.key)
    global select_id
    select_id = int(event.key)
    #fig.canvas.mpl_disconnect(cid)
    print("if finished, please close the figure.")
    return select_id

fig = plt.figure()
plt.title("please select id, key input: 0/ 1/ 2")
plt.axis("off")
ax = fig.add_subplot(131)
ax.imshow(imgs[0])
ax = fig.add_subplot(132)
ax.imshow(imgs[1])
ax = fig.add_subplot(133)
ax.imshow(imgs[2])
cid = fig.canvas.mpl_connect('key_press_event', onkey)
plt.show()
优化:如何避免 plt.show() 阻塞程序执行,提升自动化脚本效率 本文深入解析了matplotlib中plt.show()函数阻塞程序执行的底层原因,并提供了多种优化方案以提升自动化脚本效率。核心解决方案包括切换至非交互式后端(如‘Agg’)、使用plt.savefig()保存后立即调用plt.close()释放资源,以及利用交互模式配合plt.pause()实现短暂显示。这些方法能有效避免脚本在生成图表时被阻塞,确保自动化任务流畅运行。 阅读详情

相关推荐

Matplotlib绘图窗口秒关?除了input()和plt.show(),这3种‘保活’方法更优雅(Python 3.8+实测)

本文探讨了Matplotlib绘图窗口快速关闭的问题,并提供了三种优雅的解决方案:使用`plt.pause()`定时窗口、事件循环控制以及异步协程方案(Python 3.8+)。这些方法适用于不同开发环境,帮助开发者更灵活地控制图表显示时长,提升数据可视化体验。

weixin_30387423的博客 451

matplotlib可以设置鼠标或者按键事件

matplotlib可以设置鼠标或者按键事件

chenguowen21的专栏 716

CTF实战:从USB鼠标流量中提取隐藏Flag的完整解析

USB HID(人机接口设备)协议是计算机与输入设备交互的基础标准,它定义了键盘、鼠标等设备的数据传输格式。其工作原理基于中断传输模式,设备以固定频率向主机报告状态变化,如位移、按键等。在CTF竞赛和数字取证领域,分析USB流量具有重要技术价值,能够揭示用户操作行为、恢复输入轨迹或发现隐蔽通信。典型的应用场景包括:通过解析鼠标移动数据还原绘图操作、从键盘流量中提取输入内容,以及分析游戏外设数据。本文聚焦于USB鼠标流量分析,详细讲解如何利用Wireshark和Python脚本从原始数据包中提取位移坐标,并通

weixin_34032792的博客 623

[GPT问答记录] python matplotlib.pyplot画图自动记录鼠标点击时的右上角坐标

上述代码中,我们首先生成了一个简单的图形,并定义了一个回调函数cursor_hover,该函数用于在鼠标悬停时显示坐标和值,并在此例中将其打印出来。运行上述代码后,当你将鼠标悬停在图形上时,右上角的数据提示框将显示鼠标所在位置的坐标和值,并且数据会自动保存在你的数据结构中。运行上述代码后,当你将鼠标悬停在图形上时,会在控制台上显示鼠标所在位置的坐标和值,并且数据会自动保存在你的数据结构中。运行上述代码后,当你点击鼠标左键时,会在控制台上显示点击位置的坐标和值,并且数据会自动保存在你的数据结构中。

weixin_43832073的博客 1505

Matplotlib绘图窗口秒关?除了加input(),这3种更优雅的‘暂停’方法你得知道

本文介绍了解决Matplotlib绘图窗口秒关问题的3种优雅方法,包括使用`plt.pause()`定时暂停、`plt.show(block=True)`阻塞模式以及事件循环的高级应用。这些方法适用于不同场景,帮助开发者在Python数据可视化中更好地控制图形显示。

weixin_30328063的博客 368

USB流量分析实战:从HID协议到鼠标轨迹图像还原

USB HID(人机接口设备)协议是计算机与键盘、鼠标等输入设备通信的基础标准,它定义了设备如何通过结构化的数据报告向主机传输状态信息。在协议层面,鼠标等HID设备通过中断传输发送包含位移量的数据包,这些数据本质上是相对坐标的序列。理解这一原理对于安全取证和CTF竞赛至关重要,它能帮助分析者从海量流量中还原用户操作。通过Wireshark进行流量筛选和tshark命令行提取,可以高效捕获USB HID数据。结合Python脚本解析有符号位移数据并进行坐标累加,再借助gnuplot或Matplotlib等工具

weixin_33766805的博客 314

【python中实现matplotlib与鼠标交互,任意标注图像点,删除标记点】

功能:该代码实现matplotlib生成的图中存在多个y轴与鼠标进行交互,鼠标点击图中点进行相应点标记,并可删除标记点。使用右键进行标记,中键进行取消标记。通过以上代码可实现matplotlib生成的图中存在多个y轴与鼠标进行交互。

weixin_45662914的博客 663

Wireshark抓取USB鼠标数据流:从HID协议解析到光标轨迹可视化实战

USB HID协议是人机交互设备与计算机通信的通用标准,它定义了鼠标、键盘等设备的数据报告格式。其核心原理在于设备通过中断传输,周期性地向主机发送包含位移和按键状态的数据包。理解这一协议对于嵌入式系统调试、外设驱动开发以及安全领域的输入设备监控至关重要。通过Wireshark捕获USB总线上的原始数据流,工程师可以深入分析HID报告描述符,解析十六进制数据包,并利用Python等工具将相对位移累积还原为屏幕上的光标移动轨迹。这一技术广泛应用于硬件兼容性排查、用户行为分析和逆向工程等场景。本文以USB鼠标为例

weixin_30564785的博客 632

(原)python中matplot中获得鼠标点击的位置及显示灰度图像

转载请注明出处: http://www.cnblogs.com/darkknightzh/p/6182474.html 参考网址: http://matplotlib.org/examples/pylab_examples/ginput_demo.html http://stackoverflow.com/questions/12760797/imshowimg-cmap-cm-gray-...

weixin_34248849的博客 2645

解决Matplotlib无法显示图形的警告:后端机制与GUI环境配置指南

在Python数据可视化中,图形用户界面(GUI)是交互式图表展示的基础。Matplotlib作为核心绘图库,其架构采用前后端分离设计:前端提供用户友好的API,后端负责实际渲染。当系统缺少必要的GUI依赖时,Matplotlib会自动回退到非交互式后端(如Agg),导致plt.show()失效并产生警告。理解后端切换机制的技术价值在于,它能确保可视化代码在不同环境(本地开发、服务器部署、Jupyter Notebook)中都能正确运行。通过安装Tkinter或PyQt5等GUI工具包,并配置TkAgg、Q

weixin_30357231的博客 361

Matplotlib图形生命周期管理:show、close与draw函数深度解析

在数据可视化与科学计算领域,图形渲染与资源管理是核心基础概念。其原理涉及图形管线的状态控制、内存分配与事件循环机制,技术价值在于实现高效、稳定的可视化应用,避免资源泄漏与性能瓶颈。应用场景涵盖批量图表生成、GUI应用集成、动态数据更新及长时间运行的服务端程序。本文聚焦Matplotlib中的show、close与draw函数,深入探讨图形显示、资源释放与动态更新的底层机制,特别针对内存泄漏与线程安全等常见问题提供解决方案,帮助开发者掌握图形生命周期的精细控制。

weixin_33709609的博客 907

对python的figure按L键,能放大坐标轴的显示率

仅作为操作记录,大佬请跳过。 首先plt.plot生成的一幅图: 鼠标点击图片的空白处——按键盘的l键(L),会出现如下效果: 如果按键盘的k键,会对另一个坐标轴的显示率变化:

weixin_41529093的博客 419

Matplotlib图形控制:show、close、draw函数原理与实战应用

数据可视化是数据分析与科学计算的核心环节,matplotlib作为Python生态中最流行的绘图库,其底层图形管理机制直接影响程序性能与用户体验。理解图形生命周期管理的关键在于掌握show、close、draw三个核心函数的工作原理:show函数负责启动事件循环与图形显示,涉及阻塞与非阻塞两种模式;close函数管理资源释放,防止内存泄漏;draw函数实现图形实时刷新,支撑动画与交互应用。这些函数共同构成了matplotlib图形从创建、展示到销毁的完整生命周期,在Jupyter Notebook、脚本批量

weixin_33700350的博客 340

别再被plt.show()的警告烦了!手把手教你搞定matplotlib后端配置(附TkAgg vs Agg对比)

本文深入解析Matplotlib后端配置,解决常见的plt.show()警告问题,提供TkAgg与Agg后端的详细对比。通过环境适配、高级配置技巧和疑难排查指南,帮助数据科学家在不同场景下优化可视化体验,提升工作效率。

GBin1中文互联 411

【图像处理】——在plt绘制的坐标窗口中,捕获鼠标点,在右下角显示点的坐标

plt.title('Template Image'), plt.xticks([]), plt.yticks([])

python_AI_fans的博客 1540

【Milvus】实战指南:利用milvus-backup实现高效数据备份与恢复

本文详细介绍了如何利用官方工具milvus-backup为Milvus向量数据库实施高效的数据备份与恢复。文章从备份的必要性出发,逐步讲解了环境准备、配置要点、全量与按需备份操作,以及恢复数据的关键步骤和验证方法,旨在帮助用户构建可靠的数据安全防线,应对误操作或系统故障风险。

weixin_29217235的博客 129

【Python】【matplotlib】键鼠响应事件

事件绑定fig.canvas.mpl_connect()import matplotlib.pyplot as plt def on_key_press(event): print(event.key) fig, ax = plt.subplots() fig.canvas.mpl_connect('key_press_event', on_key_press) plt.show()这段程序

guofei9987的博客 2万+

使用基于物质点法(MPM)的Anura3D模拟沙柱坍塌

本博客使用开源软件Anura3D软件模拟了一个沙柱坍塌的过程,这个软件是基于基于物质点法(MPM)设计的

weixin_59902634的博客 4041

Matplotlib在Python数据可视化中的核心优势与高级技巧

数据可视化是数据分析与科学计算的关键环节,Matplotlib作为Python生态中最老牌的可视化库,凭借其底层控制能力和跨平台稳定性成为科研与工程领域的首选工具。其面向对象的绘图模型通过Figure、Axes等核心组件实现像素级精度控制,特别适合学术出版级图表输出。在性能优化方面,通过数据降采样、LineCollection等技术可高效处理百万级数据点。结合事件处理系统,Matplotlib还能实现丰富的交互效果,满足实时数据监控等高级应用场景需求。对于金融数据可视化、气象数据分析等专业领域,掌握坐标轴控

weixin_34152820的博客 416

初识colmap

COLMAP是一款开源的计算机视觉软件,主要用于从一系列二维图像中进行三维重建。它全称为“COLLISION-MAPping”,是一个高度集成的Structure-from-Motion (SfM) 和 Multi-View Stereo (MVS) 管道工具,由斯坦福大学开发和维护。COLMAP的主要功能包括特征检测与匹配、增量式SfM、多视图立体匹配以及优化。它能够从无序或有序的二维照片集合中恢复出三维场景的几何结构(点云)以及每张图像对应的相机姿态。

Hhsjehejj的博客 5547

Xilinx Vitis 2020.1中Microblaze SREC SPI Bootloader初始化失败的调试与修复指南

本文详细解析了在Xilinx Vitis 2020.1开发环境中,Microblaze SREC SPI Bootloader初始化失败的常见原因与解决方案。核心问题通常源于Flash上电时序或软件配置,如`serial_flash_family`参数未生效、链接脚本设置不当或BRAM初始化文件选择错误。文章提供了从硬件配置检查、工程设置修正到代码级添加重试机制的完整调试路径,帮助开发者快速定位并修复启动故障,确保系统稳定启动。

weixin_29163857的博客 186

LLM浏览器代理指纹识别:基于UI交互行为序列的AI身份追踪技术

在网络安全与自动化流量管理领域,指纹识别技术通过分析实体的行为特征实现身份鉴别。其核心原理是从交互日志中提取时序、频率、模式等特征,构建可区分的数字画像。这项技术的价值在于为网站运营提供精准的流量来源分析、反欺诈与访问控制能力。在AI技术普及的背景下,大语言模型驱动的浏览器代理日益增多,其自动化交互行为形成了独特的UI轨迹。通过采集点击、输入、导航等事件序列,并提取如动作间隔时间、输入速度、元素选择偏好等特征,可以训练分类模型来识别不同代理的身份。本文聚焦于利用UI交互痕迹对LLM浏览器代理进行指纹识别,探

weixin_34408624的博客 377

Xilinx UltraScale+ FPGA实战:手把手教你实现USB3.0设备开发(附原理图+代码)

本文详细介绍了如何使用Xilinx UltraScale+ FPGA开发USB3.0设备,涵盖硬件设计、Vivado工程配置、Petalinux系统定制及功能测试全流程。通过实战案例和优化技巧,帮助开发者快速掌握高速数据传输实现方法,提升嵌入式系统开发效率。

weixin_29159995的博客 208
上一篇: 知识蒸馏(paper翻译)
下一篇: KL divergence(KL 散度)详解
蓝羽飞鸟
博客等级 码龄8年 1万+粉丝 727原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝羽飞鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值