Python库matplotlib之五

Python库matplotlib之五

  • 小部件(widget)
    • RangeSlider
      • 构造器
      • APIs
      • 应用实列
    • TextBox
      • 构造器
      • APIs
      • 应用实列

小部件(widget)

小部件(widget)可与任何GUI后端一起工作。所有这些小部件都要求预定义一个Axes实例,并将其作为第一个参数传递。 Matplotlib不会试图布局这些小部件,所以,您必须自己决定Axes的宽度和高度,以便容纳这些小部件。

RangeSlider

RangeSlider的属性

  • val,浮点元组

构造器

词法:RangeSlider(ax, label, valmin, valmax, valinit=None, valfmt=None, closedmin=True, closedmax=True, dragging=True, valstep=None, orientation=‘horizontal’, track_color=‘lightgrey’, handle_style=None, **kwargs)

产生一个滑动条,这个滑动条代表浮点值范围。通过 (min, max) 的元组属性val,定义范围的最小值和最大值。

创建一个滑动条,定义包含在ax中的 [valmin, valmax] 的范围。为了使滑动条保持响应,必须维护对其的引用。调用 on_changed() 连接到滑块事件。

参数说明

  • ax,该参数类型是Axes。RangeSlider将被放置到该Axes中。
  • label,该参数类型是字符串。滑动条标签。
  • valmin,该参数类型是float。滑动条的最小值。
  • valmax,该参数类型是float。滑块的最大值。
  • valinit,该参数类型是浮点元组或None, 默认值为None。滑动条的初始位置。如果是None,初始位置将位于范围的25%和75%。
  • valfmt,该参数类型是字符串,默认值为None。%-格式字符串用于格式化滑动条的值。如果没有,则使用 ScalarFormatter。
  • closemin,该参数类型是bool,默认值为True。滑块区间底部是否闭合。
  • closemax,该参数类型是bool,默认值为True。滑块区间顶部是否封闭。
  • dragging,该参数类型是bool,默认值为True。如果为True,则可以用鼠标拖滑动条。
  • valstep,该参数类型是float,默认值为None。如果有一个给定值,则滑动条将捕捉到 valstep 的倍数。
  • orientation,该参数类型是{‘horizontal’, ‘vertical’},默认值为’horizontal’。滑动条的方向。
  • track_color,该参数类型是color, 默认值为’lightgrey’。背景轨道的颜色。可以通过track属性访问该轨道,以进行进一步的样式设置。
  • handle_style,该参数类型是dict

APIs

函数说明
on_changed(func)将 func 作为回调函数,连接到滑块值的更改。返回值是一个整数,它是连接id,可用于断开func
set_max(max)将滑块的下限值设置为最大值。
set_min(min)将滑块的下限值设置为最小值。
set_val(val)将滑块值设置为 val。

应用实列

这个例子使用一个RangeSlider,去控制一个正弦波的频率。

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.widgets import RangeSliderfreqs = np.arange(0.2, 2, 0.3)
fig, ax = plt.subplots()
ax.set_ylabel('Frequency', color='#00ff00')
ax.set_xlabel('Time', color='#0000ff')
ax.set_facecolor('#eafff5')
plt.subplots_adjust(left=0.15, bottom=0.1, right=0.9, top=0.9, wspace=0.2, hspace=0.2)plt.subplots_adjust(bottom=0.25)
t = np.arange(0.0, 10.0, 0.01)
s = np.sin(2*np.pi*freqs[0]*t)
l, = plt.plot(t, s, lw=2)def on_changed(val_list):l_val = val_list[0]h_val = val_list[1]i = (int)((h_val - l_val) % len(freqs))ydata = np.sin(2*np.pi*freqs[i]*t)l.set_ydata(ydata)l.set_color("#0000FF")plt.draw()if __name__ == "__main__":ax = plt.axes([0.2, 0.01, 0.60, 0.2])style = {"facecolor":"#8F0000", "edgecolor":"#00008F"}w_radio = RangeSlider(ax, "Slider", 0.0, len(freqs), track_color="#00FF00", handle_style=style,valinit=(1,100), valstep=0.5)w_radio.on_changed(on_changed)plt.show()

在这里插入图片描述

TextBox

TextBox的属性

  • ax,参数类型是Axes。TextBox将在该Axes中显示。
  • label,Text。
  • color,参数类型是color。未悬停时文本框的颜色。
  • hovercolor,参数类型是color。悬停时,文本框的颜色。

构造器

matplotlib.widgets.TextBox(ax, label, initial=‘’, color=‘.95’, hovercolor=‘1’, label_pad=0.01, textalignment=‘left’)

该构造器产生一个文本输入框。为了使文本框保持响应,您必须保留对它的引用。

每当文本更改时调用 on_text_change 进行更新。每当用户点击 Enter,或离开文本输入字段时,调用 on_submit 进行更新。

参数说明

  • ax,该参数类型是Axes。TextBox将被放置到该Axes中
  • label,该参数类型是字符串。此文本框的标签。
  • initial,该参数类型是字符串。文本框中的初始值。
  • color,该参数类型是color。文本框的颜色。
  • hovercolor,该参数类型是color。当鼠标悬停在方框上时,该方框的颜色。
  • label_pad,该参数类型是float。标签与文本框右侧之间的距离。
  • textalignment,该参数类型是{‘left’, ‘center’, ‘right’}。指定文本的对齐方式。

APIs

函数说明
disconnect(cid)删除连接 ID 为 cid 的观察者。
on_submit(func)当用户按下回车键或离开提交框时,使用事件调用此函数。返回一个连接 ID,可用于断开连接。
on_text_change(func)当文本更改时,通过事件调用此函数。返回一个连接 ID,可用于断开连接。
position_cursor(x)
set_val(val)
stop_typing()

应用实列

该应用实列使用TextBox改变ylabel,在TextBox中显示的内容,被直接用作有label。3个Slider改变正弦波的显示颜色。

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.widgets import Slider, TextBoxfreqs = np.arange(0.2, 2, 0.3)
fig, ax = plt.subplots()
ax.set_ylabel('Amplitue', color='#00ff00')
ax.set_xlabel('Time', color='#0000ff')
ax.set_facecolor('#eafff5')
plt.subplots_adjust(left=0.15, bottom=0.1, right=0.9, top=0.8, wspace=0.4, hspace=0.6)plt.subplots_adjust(bottom=0.45)
t = np.arange(0.0, 10.0, 0.01)
s = np.sin(2*np.pi*freqs[0]*t)
l, = plt.plot(t, s, lw=2)v_red = 0
v_green = 0
v_blue = 0def re_draw():global v_red, v_green, v_blues_red = hex(int(v_red))[2:]if len(s_red) < 2:s_red = '0' + s_reds_green = hex(int(v_green))[2:]if len(s_green) < 2:s_green = '0' + s_greens_blue = hex(int(v_blue))[2:]if len(s_blue) < 2:s_blue = '0' + s_bluecolor_s = "#{0}{1}{2}".format(s_red, s_green, s_blue)   l.set_color(color_s)plt.draw()def on_changed_red(val):global  v_redv_red = valre_draw()def on_changed_green(val):global v_greenv_green = valre_draw()def on_changed_blue(val):global v_bluev_blue = valre_draw()def on_ylabel_changed(s):ax.set_ylabel(s, color='#00ff00')plt.draw()def on_ylabel_submit(s):ax.set_ylabel(s, color='#ff0000')plt.draw()if __name__ == "__main__":text_ax_1 = plt.axes([0.2, 0.82, 0.60, 0.08])style_1 = {"facecolor":"#8F0000", "edgecolor":"#00008F"}w_text = TextBox(text_ax_1, "ylabel")w_text.on_text_change(on_ylabel_changed)w_text.on_submit(on_ylabel_submit)slider_ax_1 = plt.axes([0.2, 0.20, 0.60, 0.1])style_1 = {"facecolor":"#8F0000", "edgecolor":"#00008F"}w_silder_1 = Slider(slider_ax_1, "Red", 0.0, 255, track_color="#FF0000", handle_style=style_1, valstep=1.0)w_silder_1.on_changed(on_changed_red)slider_ax_2 = plt.axes([0.2, 0.13, 0.60, 0.1])style_2 = {"facecolor":"#008F00", "edgecolor":"#00008F"}w_silder_2 = Slider(slider_ax_2, "Green", 0.0, 255, track_color="#00FF00", handle_style=style_2, valstep=1.0)w_silder_2.on_changed(on_changed_green)slider_ax_3 = plt.axes([0.2, 0.06, 0.60, 0.1])style = {"facecolor":"#8F0000", "edgecolor":"#00008F"}w_silder_3 = Slider(slider_ax_3, "Blue", 0.0, 255, track_color="#0000FF", handle_style=style, valstep=1.0)w_silder_3.on_changed(on_changed_blue)plt.show()

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/55235.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

探索高效免费的PDF转Word工具,开启便捷办公之旅

无论是为了方便对文档内容进行编辑、修改&#xff0c;还是为了更好地适应不同的工作和学习场景&#xff0c;将 PDF 文档转换为可编辑的 Word 格式都具有重要意义。今天我就分享几款pdf转换成word免费版工具来解决大家的困扰。 1.Foxit PDF转换大师 链接一下>>https://w…

[ RK3566-Android11 ] 关于移植 RK628F 驱动以及后HDMI-IN图像延迟/无声等问题

问题描述 由前一篇文章https://blog.csdn.net/jay547063443/article/details/142059700?fromshareblogdetail&sharetypeblogdetail&sharerId142059700&sharereferPC&sharesourcejay547063443&sharefromfrom_link&#xff0c;移植HDMI-IN部分驱动后出现&a…

taobao.item_get_appAPI接口原app数据测试指南

在电商竞争日益激烈的当下&#xff0c;数据成为了商家们争夺市场的重要武器。淘宝&#xff0c;作为中国最大的在线零售平台&#xff0c;其庞大的商品库和用户群体为商家提供了巨大的商机。为了帮助商家更好地了解市场动态&#xff0c;优化库存和营销策略&#xff0c;淘宝推出了…

使用WebClient 快速发起请求(不使用WebClientUtils工具类)

使用WebClient发起网络请求_webclient工具类-CSDN博客文章浏览阅读717次&#xff0c;点赞9次&#xff0c;收藏8次。使用WebClient发起网络请求_webclient工具类https://blog.csdn.net/qq_43544074/article/details/137044825这个是使用工具类发起的&#xff0c;下面就不使用工具…

java基础(4)类和对象

目录 1.前言 2.正文 2.1类的定义与使用 2.1.1类的定义 2.1.2类的实例化 2.1.3this引用 2.1.3.1 访问当前对象的成员变量 2.1.3.2调用当前对象的成员方法 2.1.3.3构造函数中的 this 2.1.3.4归纳this 2.2封装 2.2.1封装的定义 2.2.2访问修饰符 2.3static 2.3.1sta…

“卷”智能, 从高质量算力开始

算力即国力&#xff0c;这已是产业共识。 当人工智能浪潮席卷全球之际&#xff0c;大家深刻感受到发展算力产业的重要性和紧迫性&#xff0c;高质量的人工智能算力已经与国家竞争、产业升级和企业转型息息相关。 去年&#xff0c;《算力基础设施高质量发展行动计划》的颁布&a…

网络安全中的 EDR 是什么:概述和功能

专业知识&#xff1a;EDR、XDR、NDR 和 MDR_xdr edr ndr-CSDN博客 端点检测和响应 (EDR) 是一种先进的安全系统&#xff0c;用于检测、调查和解决端点上的网络攻击。它可以检查事件、检查行为并将系统恢复到攻击前的状态。EDR 使用人工智能、机器学习和威胁情报来避免再次发生攻…

CentOS7 离线部署docker和docker-compose环境

一、Docker 离线安装 1. 下载docker tar.gz包 下载地址&#xff1a; Index of linux/static/stable/x86_64/ 本文选择版本&#xff1a;23.0.6 2.创建docker.service文件 vi docker.service文件内容如下&#xff1a; [Unit] DescriptionDocker Application Container Engi…

【MySQL】数据库的介绍以及数据库基础

目录 &#x1f333;介绍 &#x1f384;数据库操作 &#x1f6a9;显示当前数据库 &#x1f6a9;创建数据库 ​编辑&#x1f6a9;使用/选中 数据库 &#x1f6a9;删除数据库 &#x1f334;常用的数据类型 &#x1f6a9;数值类型 &#x1f6a9;字符串类型 &#x1f6a9…

【自用软件】IDM下载器 Internet Download Manager v6.42 Build 10

下载IDM&pj安装教程 Internet Download Manager&#xff0c;简称 IDM&#xff0c;是国外的一款优秀下载工具。目前凭借着下载计算的速度优势在外媒网站中均受好评&#xff0c;现在已被多数国人熟知。Internet Download Manager 提升你的下载速度最多达5倍&#xff0c;安排下…

【HarmonyOS】深入理解LocalStorage之逻辑处理存取

【HarmonyOS】深入理解LocalStorage 一、前言 鸿蒙应用中关于状态管理的处理机制有很多。从状态装饰器State prop等&#xff0c;LocalStrong&#xff0c;AppStrong到首选项&#xff0c;再到数据库。内存到持久化。轻量级到重量级。全方位覆盖。 学习和记忆技术点&#xff0c…

Java-数据结构-Map和Set-(二)-哈希表 |ू・ω・` )

文本目录&#xff1a; ❄️一、哈希表&#xff1a; ☑ 1、概念&#xff1a; ☑ 2、冲突-概念&#xff1a; ☑ 3、冲突-避免&#xff1a; ☞ 1&#xff09;、避免冲突-哈希函数的设计&#xff1a; ☞ 2&#xff09;、避免冲突-负载因子调节(重点)&#xff1a; ☑ 4、冲突-解决&…

那年我双手插兜,使用IPv6+DDNS动态域名解析访问NAS

估计有很多科技宅和我一样&#xff0c;会买一个NAS存储或者自己折腾刷一下黑群晖玩玩&#xff0c;由于运营商不给分配固定的公网IP&#xff0c;就导致我在外出的时候无法访问家里的NAS&#xff0c;于是远程访问常常受到IP地址频繁变动的困扰。为了解决这一问题&#xff0c;结合…

element 输入框文字+对应签进行长度 和 的判断

输入文字长度 指定标签的长度 &#xff08;判断长度并提示&#xff09; <div style"position: relative;" classchangyongyu><el-input type"textarea" :autosize"{ minRows: 8, maxRows: 8 }" style"margin-bottom:10px;"…

【React】useEffect

1. 基本介绍 概念 语法 副作用函数依赖项数组&#xff08;空数组时&#xff0c;只会在组件渲染完毕后执行一次副作用函数&#xff09; 2. 使用 import { useEffect, useState } from reactfunction App() {const [value, setValue] useState(0)useEffect(() > {console…

如何使用ssm实现小区物业管理系统

TOC ssm733小区物业管理系统jsp 第一章 绪论 1.1 研究背景 在现在社会&#xff0c;对于信息处理方面&#xff0c;是有很高的要求的&#xff0c;因为信息的产生是无时无刻的&#xff0c;并且信息产生的数量是呈几何形式的增加&#xff0c;而增加的信息如何存储以及短时间分析…

基于微信小程序的美食外卖管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏&#xff1a;Java精选实战项目…

SPI驱动学习七(SPI_Slave_Mode驱动程序框架)

目录 一、SPI_Slave_Mode驱动程序框架1. Master和Slave模式差别1.1 主设备 (Master)1.2 从设备 (Slave)1.3 示例 2. SPI传输概述2.1 数据组织方式2.2 SPI控制器数据结构 3. SPI Slave Mode数据传输过程4. 如何编写程序4.1 设备树4.2 内核相关4.3 简单的示例代码4.3.1 master和s…

Anaconda虚拟环境默认路径在C盘怎么更改

笔者已经新建好了虚拟环境并且安装了对应库&#xff0c;输入conda env list查询发现虚拟环境竟然安装到了C盘(&#xff61;•́︿•̀&#xff61;)&#xff0c;为避免下一次创建虚拟环境出错&#xff0c;笔者现在修改默认路径置D盘&#xff08;软件安装盘&#xff09; 参考两…

【Oauth2整合gateway网关实现微服务单点登录】

文章目录 一.什么是单点登录&#xff1f;二.Oauth2整合网关实现微服务单点登录三.时序图四.代码实现思路1.基于OAuth2独立一个认证中心服务出来2.网关微服务3产品微服务4.订单微服务5.开始测试单点登录 一.什么是单点登录&#xff1f; 单点登录&#xff08;Single Sign On&…