matplotlib部件(widgets)之复选框(CheckButtons)

Dify DSL文件分享 Dify讨论群 大模型token资源等(持续收集更新) 基于LLMOps平台-Dify的一站式学习平台。包含不限于:Dify案例、DSL文件分享、模型接入、Dify交流讨论等各类资源分享。 阅读详情

复选框概述

复选框是图形化界面(GUI)中常见的控件,matplotlib中的复选框属于部件(widgets),matplotlib中的部件都是中性(neutral )的,即与具体后端实现无关。
复选框具体实现定义为matplotlib.widgets.CheckButtons类,继承关系为:Widget->AxesWidget->CheckButtons。
CheckButtons类的签名为class matplotlib.widgets.CheckButtons(ax, labels, actives=None)
CheckButtons类构造函数的参数为:

  • ax:放置复选框的容器,类型为matplotlib.axes.Axes的实例。
  • labels:复选框文本列表,类型为字符串列表。
  • actives:复选框的初始选中状态列表,类型为布尔列表,默认值为None,所有复选框均为未选中状态。

CheckButtons类的属性为:

  • ax:放置按钮的容器,类型为matplotlib.axes.Axes的实例。
  • labels:复选框文本列表。
  • rectangles:复选框中的□图形对象,类型为Rectangle列表。
  • lines:复选框被选中时的x图形对象,类型为(Line2D, Line2D) 元组列表。

CheckButtons类最常用的方法为:

  • on_click:参数为回调函数,用于绑定复选框选中事件。
  • get_status:无参数,用于返回复选框选中状态,返回值类型为布尔元组。
  • set_active(index):根据复选框的索引切换选中/未选中状态。

案例:官方案例

https://matplotlib.org/gallery/widgets/check_buttons.html
通过复选框选中显示曲线。

代码分析

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.widgets import CheckButtons

t = np.arange(0.0, 2.0, 0.01)
s0 = np.sin(2*np.pi*t)
s1 = np.sin(4*np.pi*t)
s2 = np.sin(6*np.pi*t)
# 绘制三条曲线
fig, ax = plt.subplots()
l0, = ax.plot(t, s0, visible=False, lw=2, color='k', label='2 Hz')
l1, = ax.plot(t, s1, lw=2, color='r', label='4 Hz')
l2, = ax.plot(t, s2, lw=2, color='g', label='6 Hz')
# 调整子图大小,在左侧留出复选框区域
plt.subplots_adjust(left=0.2)

lines = [l0, l1, l2]

# 构造复选框实例化时用到的属性
# 创建复选框的容器子图
rax = plt.axes([0.05, 0.4, 0.1, 0.15])
# 创建复选框的标签列表,标签自动对应曲线的标签
labels = [str(line.get_label()) for line in lines]
# 根据对应曲线可见状态初始化复选框初始状态
visibility = [line.get_visible() for line in lines]
# 构造复选框实例
check = CheckButtons(rax, labels, visibility)

# 创建复选框选中事件的回调函数,注意回调函数的参数默认为选中复选框的label
def func(label):
    index = labels.index(label)
    # 根据选中状态设置对应曲线的可见属性
    lines[index].set_visible(not lines[index].get_visible())
    # 注意!matplotlib中出现窗体之后的交互中如果修改图像需要重绘图像
    plt.draw()
# 绑定复选框选中事件
check.on_clicked(func)
print(check.labels,check.lines,check.rectangles,check.get_status(),check.get_active())
plt.show()

复选框选中事件回调函数原理解析

以下为CheckButtons类部分源码,根据源码可知,复选框选中事件在内部绑定的是_clicked方法,_clicked方法最终会调用set_active(i)方法,参数i为复选框的索引,set_active(i)方法最终调用func(self.labels[index].get_text()),func为on_clicked方法绑定的回调函数。所以回调函数func必须调用1个参数即当前选中的复选框的文本标签,如果在定义回调函数时不定义参数就会报错。

self.connect_event('button_press_event', self._clicked)

def _clicked(self, event):
    if self.ignore(event) or event.button != 1 or event.inaxes != self.ax:
        return
    for i, (p, t) in enumerate(zip(self.rectangles, self.labels)):
        if (t.get_window_extent().contains(event.x, event.y) or
                p.get_window_extent().contains(event.x, event.y)):
            self.set_active(i)
            break

def set_active(self, index):
    """
    Toggle (activate or deactivate) a check button by index.

    Callbacks will be triggered if :attr:`eventson` is True.

    Parameters
    ----------
    index : int
        Index of the check button to toggle.

    Raises
    ------
    ValueError
        If *index* is invalid.
    """
    if not 0 <= index < len(self.labels):
        raise ValueError("Invalid CheckButton index: %d" % index)

    l1, l2 = self.lines[index]
    l1.set_visible(not l1.get_visible())
    l2.set_visible(not l2.get_visible())

    if self.drawon:
        self.ax.figure.canvas.draw()

    if not self.eventson:
        return
    for cid, func in self.observers.items():
        func(self.labels[index].get_text())


def on_clicked(self, func):
    """
    Connect the callback function *func* to button click events.

    Returns a connection id, which can be used to disconnect the callback.
    """
    cid = self.cnt
    self.observers[cid] = func
    self.cnt += 1
    return cid

总结

复选框的使用流程总结如下:

  • 定义复选框的容器子图ax。
  • 实例化CheckButtons构造复选框,三个参数中ax为容器子图,labels为复选框的文本列表,actives为复选框初始选中状态的布尔列表。
  • 使用on_clicked方法绑定选中事件,参数为回调函数。回调函数定义时只能有一个参数,其值在调用时自动赋值为当前选中复选框的标签文本。
Win10 / Win11 启用 Hyper-V 虚拟机详细教程(图文+命令行全攻略) 摘要:本文详细介绍Windows10/11系统启用Hyper-V虚拟化平台的方法,包含专业版/企业版的图形界面和PowerShell命令行操作,以及家庭版通过脚本强制启用的特殊方案。内容涵盖版本支持对比、操作步骤图解、常见问题解答和性能优化建议,帮助开发者快速搭建虚拟化环境进行多系统测试。附微软官方文档参考链接和详细操作示意图。 阅读详情

相关推荐

scGPT-spatial 复现

文章摘要:Spatial scGPT项目复现流程 本文详细介绍了复现Spatial scGPT项目的完整流程,包含数据预处理、模型训练等关键步骤。首先需要使用scanpy加载H5AD文件并进行归一化、对数变换等预处理。然后构建基因词汇表(vocab),提取基因表达值和空间坐标信息。接着使用DataCollator进行数据分箱、掩码和填充处理。最后搭建TransformerModel进行训练。文章特别指出了需要自行补全的缺失部分,包括基因词汇表构建、空间坐标提取、数据集类定义和训练主循环脚本等。作者还提供了详

victory0431的博客 1683

Python数据可视化(五)

Matplotlib中RadioButtons,Cursor,CheckButtons的使用方式以及代码示例

ma_no_lo的博客 915

GEE|基于时间序列特征的山东省玉米随机森林分类代码

主题思路: 本实验为二分类实验,分类目标包括:玉米、其他(建筑、水体、水稻、 裸地、森林、小麦、道路、大蒜等),采用人工设计的特征指数的时间序列特征为分类依据,选取分类器为:随机森林分类器,并选取样本集中 70%作为训练样本,30%作为测试样本,通过调整随机森林棵数,调整分类器结构。选取以下参数进行分类: ⚫ 时间尺度:1990 年 4 月 15 日 - 1990 年 9 月 30 日 ⚫ 空间尺度:山东省 ⚫ 影像融合时间间隔:16天 ⚫ 特征值选择:['nir','ndvi'...

weixin_46493028的博客 7466

【初识Matplotlib库 】

Matplotlib是Python的绘图库,它能让使用者很轻松地将数据图形化,并且提供多样化的输出格式。 * Matplotlib可以用来绘制各种静态,动态,交互式的图表。 * Matplotlib可以绘制线图、散点图、等高线图、条形图、柱状图、3D 图形、甚至是图形动画等等。...

vor234的博客 3951

如何解决ERROR: THESE PACKAGES DO NOT MATCH THE HASHES FROM THE REQUIREMENTS FILE.

解决ERROR: THESE PACKAGES DO NOT MATCH THE HASHES FROM THE REQUIREMENTS FILE

2742

MTK平台TP驱动设备树与GPIO配置实战解析

本文详细解析了MTK平台TP驱动开发中的设备树与GPIO配置实战。通过DCT工具配置GPIO引脚,结合设备树节点定义触摸参数,并分享驱动移植、编译调试技巧及常见问题解决方案,帮助开发者快速掌握MTK触摸驱动开发核心。

ice55的博客 234

matplotlib.widgets简单上手

matplotlib官方文档网站:https://matplotlib.org/ 我的思想是在案例中学习而不是挨着一个一个看,在案例中学习能很快掌握,并且能不断保持学习的热情,下面开始吧。 文章目录1.介绍2.结构3.案例1 1.介绍 这个模块是matplotlib中的GUI模块,可以通过调整bottom来实时改变显示的结果 2.结构 话不多说,直接上官方文档的图 3.案例1 实验环境为python3.6 任务:实现能实时改变值而改变图像的小程序 1.首先,我们导入需要的库 import numpy as

gushiyi27的博客 5285

芒果YOLO11改进21:检测头Head篇:即插即用|新颖轻量化非对称多级压缩LADH检测头,原创改进适配YOLOv8高效检测头,检测头新颖性改进,全网首发独一份

检测头Head篇:即插即用|新颖轻量化非对称多级压缩LADH检测头,原创改进适配YOLOv8高效检测头,检测头新颖性改进,全网首发独一份

包括YOLOv5、YOLOv7、YOLOv8等模型改进 792

Python实现:基于Matplotlib库,可视化鼠标交互删除数据集中的异常点

removeAnomalyPoints类中,可以对传入的数据集dataset进行上述处理。初始化时:(1)保存三个数据集,dataset_orig为原始数据集,在整个流程中都不更改;dataset_now为当前数据集(用于操作,删除异常点);dataset_last用于存上一步的数据集,每次dataset_now被修改之前,将dataset_now存入dataset_last。(2)self.roi用于存每次框选时的边界点集合。(3)原始数据集绘制散点图。(4)设置按钮位置、大小,初始化按钮对象。

weixin_51005929的博客 2643

将Windbg附加到软件进程上排查异常闪退的问题

使用Windbg和Process Explorer排查因为内存泄漏导致的软件异常闪退问题。

dvlinker的技术专栏 1万+

“反激电源”是AC/DC隔离电源还是DC/DC隔离电源?

所以在一些场景,我们的输入电压是一个DC,但是我们仍然需要隔离电源的需求,我们就会只采用图9.2的右半部分。在这个场景下“反激电源”是DC/DC。所以此AC/DC的本质是将AC变成高压的DC之后,用带隔离变压器的反激式开关电源产生一个隔离的、稳定的直流电压。一般在讲述各种电源的拓扑的文章和书籍都是在讲述AC/DC的电源拓扑分类的时候,讲述Flyback。反激式开关电源是指使用反激高频变压器隔离输入输出回路的开关电源,反激式隔离变压器开关电源重点表述的是开关电源包含变压器的拓扑结构。

qq_43416206的博客 1294

matplotlib 小部件的使用

图形小部件 matplotlib官方教程中给出了一个使用滑块、按钮、单选框的例子。初次阅读时多少有些疑问,这些疑问不仅包括对matplotlib的用法,同时也有代码本身所表达的含义, 以下为对官方代码的理解和整理。 import numpy as np import matplotlib.pyplot as plt from matplotlib.widgets import B...

weixin_42696622的博客 1797

Java零基础之多线程篇:线程间如何通信?

随着计算机技术的发展,多线程编程已经成为现代软件开发中的一个重要方向。在多线程编程中,线程间的通信是一个非常关键的问题。在Java开发语言中,Java提供了一些机制来实现线程间的通信,帮助开发者协调不同线程之间的执行顺序和数据交换。本文将介绍Java多线程编程中的线程间通信的相关知识。首先,我们将从简介开始,介绍线程间通信的基本概念和原理。然后,我们将通过源代码解析的方式,深入探讨Java中实现线程间通信的方法。接着,我们将给出一些应用场景案例,展示线程间通信在实际开发中的应用。

喵手的博客 1558

python之pyQt5实例:Matplotlib的应用

【代码】python之pyQt5实例:Matplotlib的应用。

T20151470的博客 1154

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

matplotlib部件(widgets)之子图工具(plt.subplot_tool()与Subplottool类)

子图工具Subplottool类概述 matplotlib部件(widgets)提供了子图工具(Subplottool类)用于调整子图的相关参数(边距、间距)。 子图工具实现定义为matplotlib.widgets.Subplottool类,继承关系为:Widget->AxesWidget->Subplottool。 Subplottool类的签名为class matplotlib.widgets.SubplotTool(targetfig, toolfig)。 Subplottool类构造函

mighty13的专栏 3万+

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Python库matplotlib之四

词法:matplotlib.widgets.RadioButtons(ax, labels, active=0, activecolor=None, *, useblit=True, label_props=None, radio_props=None)Matplotlib不会试图布局这些小部件,所以,您必须自己决定Axes的宽度和高度,以便容纳这些小部件。在 Axes中创建从 valmin 到 valmax 的滑动条。为了使滑动条保持响应,必须维护对其的引用。构造一个代表浮点范围的滑动条。

IT_Beijing_BIT的博客 2262

根据datagrid获取当前对象的checkbox控件一直都是false_Matplotlib数据可视化:三大容器对象与常用设置...

↑↑↑↑↑点击上方蓝字,回复资料,N个G的惊喜Matplotlib数据可视化:入门及组件介绍上一篇说到,matplotlib中所有画图元素(artist)分为两类:基本型和容器型。容器型元素包括三种:figure、axes、axis。一次画图的必经流程就是先创建好figure实例,接着由figure去创建一个或者多个axes,然后通过axes实例调用各种方法来添加各种基本型元素,最后通过...

weixin_39628864的博客 235

matplotlib绘制交互显示按钮

首先使用相应的matplotlib来操作,达到的效果是按钮可以控制是否显示某条线。

邹九的个人博客 407

Python库matplotlib之三

Matplotlib不会试图布局这些小部件,所以,您必须自己决定Axes的宽度和高度,以便容纳这些小部件。词法:matplotlib.widgets.Button(ax, label, image=None, color=‘0.85’, hovercolor=‘0.95’, *, useblit=True)这是必要的,因为回调登记仅维护函数的弱引用,这些函数是小部件的成员函数。如果没有对小部件对象的引用,它可能会被垃圾收集,这将断开回调。为了始终保持检查按钮的响应,必须保留对此对象的引用。

IT_Beijing_BIT的博客 1302

matplotlib 画图时出现AttributeError: ‘list‘ object has no attribute ‘get_label‘的解决办法

本人在用python中的matplotlib画图时,想用CheckButtons里的方法来决定曲线的显示隐藏, 但在运行到23行 时,出现了报错 解决方法是 17行的列表 lines中的参数l0, l1, l2在命名时,一定要加个逗号。 如果有和我一样因为马虎没注意到这点的,希望本文能对你有所帮助。 ...

qq_21119609的博客 3532

UI基本控件(二):UIButton

1.UIButton状态: UIControlStateNormal // 正常状态 UIControlStateHighlighted // 高亮状态 UIControlStateDisabled // 禁用状态 UIControlStateSelected // 选中状态 UIControlStateApplication // UIControlStateReserved //...

努力进阶的小菜鸟 1793

python GUI--Tkinter(2):控件Button、Checkbutton、Radiobutton

一 、控件Button、Checkbutton、Radiobutton 这3中控件都是按键控件 区别在于: Button是一般的按键,按键按下后通过传入的回调函数实现按键效果 Checkbutton 可以用于实现选项选择 Radiobutton 可以实现对个选项中的单选 1、Button 对于Button控件,常用的控件属性如下: anchor 类型:常量; 说明:控制按钮上内容的位置。使用N, ...

ty_buyu的博客 1354

Tkinter 组件详解(三):Checkbutton

Tkinter 组件详解之Checkbutton Checkbutton(多选按钮)组件用于实现确定是否选择的按钮。Checkbutton 组件可以包含文本或图像,你可以将一个 Python 的函数或方法与之相关联,当按钮被按下时,对应的函数或方法将被自动执行。 Checkbutton 组件仅能显示单一字体的文本,但文本可以跨越多行。另外,还可以为其中的个别字符加上下划线(例如用于表示键盘快捷...

来自江南的你的博客 3万+

Tkinter: 选项按钮与复选框

程序刚执行时默认选项是“男生”,此时窗口上方显示尚未选择,然后可以选择“男生”或“女生”,选择完成后显示“你是男生”或“你是女生”tkinter中也提供盒子选项按钮的概念,可以在Radiobutton方法内使用indicatoron参数,将它设为0。可以设计让选项按钮与函数绑在一起,当选择适当的选项按钮时,可以自动执行相关的函数或方法。可能会有多组选项按钮,可以设计一组选项按钮有一个相关的变量,用此变量绑定这组选项按钮。可以让每个复选框与函数绑在一起,当此选项被选择时,可以自动执行相关的函数或方法。

wkk的博客 2223

matplotlib部件(widgets)之套索选区(LassoSelector)

套索选区概述 套索选区是一种常见的对象选择方式,类似于Photoshop中的套索功能,在一个子图中,根据拖动鼠标的轨迹形成选区。在matplotlib中的套索选区属于部件(widgets),matplotlib中的部件都是中性(neutral )的,即与具体后端实现无关。 套索选区具体实现定义为matplotlib.widgets.LassoSelector类,继承关系为:Widget->AxesWidget->_SelectorWidget->LassoSelector。 LassoSe

mighty13的专栏 3万+

Python_第四篇 可视化(3)_Matplotlib图表增加元素

2.2 为了使得图表信息更加丰富,可以向图表中添加更多元素 2.2.1 处理多个Figure 和 Axes对象 plt.subplot(abc) 如plt.subplot(211) a.沿垂直方向分几部分;b.沿水平方向分几部分;c.直接从命令控制的子图 2.2.2 添加数据点显示方式 plt.plot(x,y,'显示方式') 如:‘b--’,‘g’,‘r-’,‘ro’等 2.2.3 添加标题 plt.title(“标题”) 2.2.4 ...

Blog of Mary Sun 968

使用matplotlib实现GUI交互效果

以下图像中主要包含以下内容: 横纵交叉坐标定位直线、选择框按钮、复选框按钮、绘制子图 以下为上图的实现代码 import matplotlib.pyplot as plt import numpy as np from matplotlib.widgets import RadioButtons,Cursor,CheckButtons#导入需要的包 x=np.linspace(0.0,2.0,1000)从0到2之间平均取1000个点 y1=1.5*np.cos(2*np.pi*x) y...

qq_57099024的博客 942
上一篇: matplotlib部件(widgets)之按钮(Button)
下一篇: jupyter notebook指定启动目录
mighty13
博客等级 码龄23年 728粉丝 438原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值