Python库matplotlib之五

news2024/12/23 19:12:29

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 RangeSlider

freqs = 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, TextBox

freqs = 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 = 0

def re_draw():
    global v_red, v_green, v_blue
    s_red = hex(int(v_red))[2:]
    if len(s_red) < 2:
        s_red = '0' + s_red

    s_green = hex(int(v_green))[2:]
    if len(s_green) < 2:
        s_green = '0' + s_green
    
    s_blue = hex(int(v_blue))[2:]
    if len(s_blue) < 2:
        s_blue = '0' + s_blue
    
    color_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_red
    v_red = val
    re_draw()

def on_changed_green(val):
    global v_green
    v_green = val
    re_draw()

def on_changed_blue(val):
    global v_blue
    v_blue = val
    re_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.coloradmin.cn/o/2184834.html

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

相关文章

【数学分析笔记】第4章第1节 微分和导数(1)

4. 微分 4.1 微分和导数 考虑一个函数 y f ( x ) yf(x) yf(x)&#xff0c;当 x x x做一些微小的变动&#xff0c;函数值也会有微小的变动&#xff0c;比如&#xff1a; x → x △ x x\to x\bigtriangleup x x→x△x&#xff0c;则 f ( x ) → f ( x △ x ) f(x)\to f(x\bi…

足球青训俱乐部管理:Spring Boot技术驱动

摘 要 随着社会经济的快速发展&#xff0c;人们对足球俱乐部的需求日益增加&#xff0c;加快了足球健身俱乐部的发展&#xff0c;足球俱乐部管理工作日益繁忙&#xff0c;传统的管理方式已经无法满足足球俱乐部管理需求&#xff0c;因此&#xff0c;为了提高足球俱乐部管理效率…

数据结构——“AVL树”的四种数据旋转的方法

因为上次普通的二叉搜索树在极端情况下极容易造成我们的链式结构&#xff08;这会导致我们查询的时间复杂度变为O(n)&#xff09;&#xff0c;然而AVL树就很好的解决了这一问题&#xff08;归功于四种旋转的方法&#xff09;&#xff0c;它让我们的树的查询的时间复杂度变得接近…

TIM(Timer)定时器的原理

一、介绍 硬件定时器的工作原理基于时钟信号源提供稳定的时钟信号作为计时器的基准。计数器从预设值开始计数&#xff0c;每当时钟信号到达时计数器递增。当计数器达到预设值时&#xff0c;定时器会触发一个中断信号通知中断控制器处理相应的中断服务程序。在中断服务程序中&a…

无人化焦炉四大车系统 武汉正向科技 工业机车无人远程控制系统

焦炉四大车无人化系统介绍 采用格雷母线光编码尺双冗余定位技术&#xff0c;炉门视觉定位自学习技术&#xff0c;wifi5G无线通讯技术&#xff0c;激光雷达安全识别技术&#xff0c;焦化智慧调度&#xff0c;手机APP监控功能。 焦炉四大车无人化系统功能 该系统能自动生成生产…

遥感图像垃圾处理场分割,北京地区高分2图像,3500张图像,共2GB,分割为背景,空地,垃圾,垃圾处理设施四类

遥感图像垃圾处理场分割&#xff0c;北京地区高分2图像&#xff0c;3500张图像&#xff0c;共2GB&#xff0c;分割为背景&#xff0c;空地&#xff0c;垃圾&#xff0c;垃圾处理设施四类 遥感图像垃圾处理场分割数据集 规模 图像数量&#xff1a;3500张数据量&#xff1a;2G…

黑科技!Llama 3.2多模态AI震撼发布

黑科技&#xff01;Llama 3.2多模态AI震撼发布 Meta发布Llama 3.2模型&#x1f680;&#xff0c;引领AI新潮流&#xff01;它能处理文字、图片、视频&#x1f4f8;&#xff0c;满足不同需求&#xff0c;性能媲美大牌选手✨。一键启动包已准备好&#xff0c;让你轻松体验AI的魔…

模版and初识vector

一、引言 在C语言中&#xff0c;不论是数组&#xff0c;还是结构体定义的数组&#xff0c;功能都比较欠缺&#xff0c;不是单纯的添加几个变量就能够解决的。缺少增删查改的功能&#xff0c;为了解决这个问题&#xff0c;C决定填上C语言这个坑&#xff0c;但是填过坑的人都知道…

秋招突击——算法练习——复习{双指针:移动零、盛最多的水、三数之和}——新作{接雨水}

文章目录 引言复习移动零盛最多的水三数之和 新作接雨水个人实现参考实现 总结 引言 这段时间还是很迷茫的&#xff0c;秋招到了一个阶段&#xff0c;但是收获并不是很多&#xff0c;基本上都在泡池子&#xff0c;没有意向。也就没有在坚持刷题&#xff0c;只是整理一些专门的…

Arduino UNO R3自学笔记15 之 Arduino如何驱动数码管?

注意&#xff1a;学习和写作过程中&#xff0c;部分资料搜集于互联网&#xff0c;如有侵权请联系删除。 前言&#xff1a;学习使用数码管。 1.数码管介绍 数码管的一种是半导体发光器件&#xff0c;数码管可分为七段数码管和八段数码管&#xff0c;区别在于八段数码管比七段数…

【数据结构】图论基础

文章目录 图的概念图的基本概念图的类型图的表示方法 图的相关基本概念1. 路径&#xff08;Path&#xff09;2. 连通性&#xff08;Connectivity&#xff09;3. 图的度&#xff08;Degree&#xff09;4. 子图&#xff08;Subgraph&#xff09;5. 生成树&#xff08;Spanning Tr…

LabVIEW提高开发效率技巧----快速实现原型和测试

在LabVIEW开发中&#xff0c;DAQ助手&#xff08;DAQ Assistant&#xff09;和Express VI为快速构建原型和测试功能提供了极大的便利&#xff0c;特别适合于简单系统的开发和早期验证阶段。 DAQ助手&#xff1a;是一种可视化配置工具&#xff0c;通过图形界面轻松设置和管理数据…

CSS3渐变

一、线性渐变 通过background-image: linear-gradient(...)设置线性渐变 语法&#xff1a; linear-gradient(direction,color1,color2, . . ) direction&#xff1a;渐变方向&#xff0c;默认从上到下&#xff0c;可选值&#xff1a; 简单选取&#xff1a; ① to right&…

Python和C++及MATLAB和R时间序列中数学物理金融气象运动和电子材料

&#x1f3af;要点 小波分析&#xff0c;量化噪声概率分布和统计推理物理量和化学量数值计算确定性非线性系统金融资本市场和市场流动性波形传播气象建模评估 Python时间序列数学 时间序列分析是一种强大的统计技术&#xff0c;广泛应用于经济学、金融学、环境科学和工程学…

基于SSM+Vue技术的定制式音乐资讯平台

文未可获取一份本项目的java源码和数据库参考。 一、选题的背景与意义&#xff1a; 随着个人计算机的普及和互联网技术的日渐成熟&#xff0c;网络正逐渐成为人们获取信息及消费的主要渠道。然而在当前这个信息时代&#xff0c;网络中的信息种类和数量呈现爆炸性增长的趋势&a…

基于Node.js+Express+MySQL+VUE实现的在线电影视频点播网站管理系统的设计与实现部署安装

目录 1. 引言 1.1开发背景 1.2开发意义 1.3国内外研究 2. 需求分析 3. 系统架构设计 4. 关键技术选型 5. 功能模块设计 5.1功能图 5.2界面介绍 6. 总结 1. 引言 随着互联网技术的快速发展和普及&#xff0c;人们获取信息的方式发生了巨大变化&#xff0c;其中在…

PCL库简单的icp配准

#include <pcl/io/pcd_io.h> #include <pcl/point_types.h> #include <pcl/registration/icp.h>int main(int argc, char** argv) {// 确保提供了两个PCD文件作为输入if (argc ! 3) {PCL_ERROR("请提供两个PCD文件作为输入。\n");return (-1);}// …

dcatadmin 自定义登录页面

一、问题&#xff1a; 在后台管理系统中&#xff0c;不同的项目想要不同的登录页面&#xff0c;但是框架自带的登录页面就只有一个。 解决&#xff1a; 由芒果系统改造的dcatadmin登录插件&#xff0c;实现一键安装改变登录页面。 项目介绍 基于Laravel和Vue的快速开发的后台管…

html5 + css3(上)

目录 HTML认知web标准vscode的简介和使用注释标题和段落换行和水平线标签文本格式化标签图片图片-基本使用图片-属性 绝对路径相对路径音频标签视频标签超链接 HTML基础列表列表-无序和有序列表-自定义 表格表格-使用表格-表格标题和表头单元格表格-结构标签&#xff08;了解&a…

CentOS 6文件系统

由冯诺依曼在 1945 年提出的计算机五大组成部分&#xff1a;运算器&#xff0c;控制器&#xff0c;存储器&#xff0c;输入设 备&#xff0c;输出设备。 1. 硬盘结构&#xff1a; &#xff08;1&#xff09;机械硬盘结构&#xff1a; 磁盘拆解图&#xff1a; 扇区&#xff0c;…