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,一经查实,立即删除!

相关文章

经典sql题(十二)UDTF之Explode炸裂函数

1. EXPLODE: UDTF 函数 1.1 功能说明 EXPLODE 函数 是Hive 中的一种用户定义的表函数&#xff08;UDTF&#xff09;&#xff0c;用于将数组或映射结构中的复杂的数据结构每个元素拆分为单独的行。这在处理复杂数据时非常有用&#xff0c;尤其是在需要将嵌套数据“打散”以便更…

测试面试题:pytest断言时,数据是符点类型,如何断言?

在使用 Pytest 进行断言时&#xff0c;如果数据是浮点类型&#xff0c;可以使用以下方法进行断言&#xff1a; 一、使用pytest.approx pytest.approx可以用来比较两个浮点数是否近似相等。例如&#xff1a; import pytestdef test_float_assertion():result 3.14159expecte…

OpenCV背景建模:从基础到实践

OpenCV中的背景建模是一种在计算机视觉中常用的技术&#xff0c;主要用于从视频或图像序列中分离出前景&#xff08;运动物体&#xff09;和背景。以下将详细介绍OpenCV中几种常见的背景建模方法&#xff1a; 1. 帧差法&#xff08;非直接称为backgroundSubtractor&#xff09…

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

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

Mirror | homebrew 镜像源配置

1. 详细步骤 1.1 临时使用 因为长期设置不知道为什么&#xff0c;可能会有不生效的情况&#xff0c;所以发现好像卡着 没有走清华源的时候&#xff0c;可以临时使用 # 设置清华镜像源&#xff1a;五行一起拷贝执行 export HOMEBREW_API_DOMAIN"https://mirrors.tuna.ts…

[ 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…

Kevin‘s notes about Qt---Episode 6 不同类中创建同一对象

问题描述 使用场景 现在在我的Qt界面中需要同时使用采集卡的AI(Analog Input)和AO(Analog Output)功能,均已分别调通,但是像之前一样通过创建两个类,然后分别在两个线程中进行操作的方式并不能实现。 原本写法 头文件 art_ao.h 核心代码如下: #ifndef ART_AO_H #defi…

python自动更新chromedriver

python自动化过程中&#xff0c;经常遇到脚本跑着跑着&#xff0c;就报错&#xff0c;一看&#xff0c;浏览器自动升级了。 共两张解决方案&#xff1a; 1、禁止浏览器自动升级 2、当脚本运行前先去检测当前的chromedriver与浏览器是否匹配&#xff0c;不匹配&#xff0c;就下载…

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

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

前后端传参

文章目录 后端接收参数前端发送请求引入axios实现发送请求引入qs实现传参格式化axios基本写法 前后端传参将数组转化为单个Json字符串传输前端发送后端接收 将数组转换为json对象进行传输前端发送请求后端接受请求 直接传输数组前端发送请求后端接收请求 前后端发送请求格式需要…

Ubuntu 镜像替换为阿里云镜像:简化你的下载体验

Ubuntu&#xff0c;作为一款广受欢迎的Linux发行版&#xff0c;以其稳定性和易用性著称。但你是否曾因为下载速度慢而感到沮丧&#xff1f;现在&#xff0c;你可以通过将Ubuntu的默认下载源替换为阿里云镜像来解决这个问题。本文将指导你如何完成这一过程。 为什么选择阿里云镜…

Docker 安装 ClickHouse 教程

Docker 安装 ClickHouse 教程 创建目录 首先&#xff0c;创建必要的目录用于存放 ClickHouse 的配置、数据和日志文件。 mkdir -p /home/clickhouse/conf mkdir -p /home/clickhouse/data mkdir -p /home/clickhouse/log chmod -R 777 /home/clickhouse/conf chmod -R 777 /…

R语言Shiny包新手教程

R语言Shiny包新手教程 1. 简介 Shiny 是一个 R 包&#xff0c;用于创建交互式网页应用。它非常适合展示数据分析结果和可视化效果。 2. 环境准备 安装R和RStudio 确保你的计算机上安装了 R 和 RStudio。你可以从 CRAN 下载 R&#xff0c;或从 RStudio 官网 下载 RStudio。…

网络安全中的 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…

Python鸭子类型解释

Python 的 鸭子类型&#xff08;Duck Typing&#xff09; 是一种动态类型机制&#xff0c;源于一句幽默的编程哲学&#xff1a;“如果它走起来像鸭子&#xff0c;叫起来像鸭子&#xff0c;那么它就可以被认为是鸭子”&#xff08;“If it walks like a duck and quacks like a …

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

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