当前位置: 首页 > article >正文

Python库matplotlib之三

Python库matplotlib之三

  • 小部件(widget)
    • 小部件的基类
      • connect_event
      • disconnect_events()
    • Button
      • disconnect
      • on_clicked
      • 应用实列
    • CheckButtons
      • 构造器
      • APIs
      • 应用实列

小部件(widget)

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

小部件的基类

词法:class matplotlib.widgets.AxesWidget(ax)

该小部件连接到单个Axes。

为了保证小部件保持响应,并且防止被垃圾收集,用户应该维护对该对象的引用。

这是必要的,因为回调登记仅维护函数的弱引用,这些函数是小部件的成员函数。如果没有对小部件对象的引用,它可能会被垃圾收集,这将断开回调。

connect_event

词法:connect_event(event, callback)
将回调函数与事件连接起来。
这应该用来代替figure.canvas.mpl_connect,因为该函数存储回调ID以供以后清理。

disconnect_events()

词法:disconnect_events()
断开此小部件创建的所有事件。

Button

Button的属性

  • ax,是一个Axes,Button将在其中显示。
  • label,一个文本实例。
  • color,按钮未悬停时的颜色。
  • hovercolor,悬停时按钮的颜色。

词法:matplotlib.widgets.Button(ax, label, image=None, color=‘0.85’, hovercolor=‘0.95’, *, useblit=True)

为了使按钮保持响应,您必须保留对其的引用。调用on_clicked 连接到按钮

参数说明

  • ax,变量类型是Axes。按钮将被放置到的 Axes 实例。
  • label,变量类型是字符串。按钮文本。
  • image,变量类型是array-like或者PIL Image。如果不是None,要放置在按钮中的图像。参数直接转发给imshow。
  • color,变量类型是color。按钮未激活时的颜色。
  • hovercolor,变量类型是color。当鼠标悬停在按钮上时按钮的颜色。
  • useblit,变量类型是bool,默认值为True
    如果后端支持,请使用位块传送,以加快绘制速度。

disconnect

词法:disconnect(cid)
删除连接ID为cid的回调函数。

on_clicked

词法:on_clicked(func)
将回调函数 func 连接到按钮单击事件。返回一个连接id,这个id可用于断开连接回调。

应用实列

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(bottom=0.2)
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)

class Index:
    ind = 0

    def reset(self, event):
        self.ind = 0
        i = self.ind % len(freqs)
        ydata = np.sin(2*np.pi*freqs[i]*t)
        l.set_ydata(ydata)
        l.set_color("#0000FF")
        plt.draw()

    def next(self, event):
        self.ind += 1
        i = self.ind % len(freqs)
        ydata = np.sin(2*np.pi*freqs[i]*t)
        l.set_ydata(ydata)
        l.set_color("#00FF00")
        plt.draw()

if __name__ == "__main__":
    callback = Index()
    axnext = plt.axes([0.81, 0.05, 0.1, 0.075])
    ax_reset = plt.axes([0.70, 0.05, 0.1, 0.075])
    bnext = Button(axnext, 'Next', color='#00FF00', hovercolor='#00FFFF')
    bnext.on_clicked(callback.next)
    b_reset = Button(ax_reset, 'Reset', color='#FF0000', hovercolor='#00FFFF')
    b_reset.on_clicked(callback.reset)

    plt.show()

在这里插入图片描述

CheckButtons

CheckButtons的属性

  • ax,是一个Axes,CheckButtons将在其中显示。
  • labels,是一个Text表。CheckButton的文本标签对象。

构造器

matplotlib.widgets.CheckButtons(ax, labels, actives=None, *, useblit=True, label_props=None, frame_props=None, check_props=None)

这个构造器构造一组GUI的检查按钮。为了始终保持检查按钮的响应,必须保留对此对象的引用。
使用 on_clicked 方法连接到 CheckButton。

参数说明

  • ax,这个参数类型是Axes。Button将在这个Axes中显示。
  • labels,这个参数类型是一个字符串表,检查按钮的标签。
  • actives,这个参数类型是一个bool值表, 这个参数是可选的。指示CheckButton的初始状态。该列表的长度必须与标签列表的长度相同。如果未给出,则所有CheckButton状态都将是uncheck。
  • useblit,这个参数类型bool,默认值为True。如果后端支持,使用位块传送,以加快绘制速度。
  • label_props,这个参数类型是dict,是可选。用于标签的Text属性字典。
  • frame_props,这个参数类型是dict,是可选。scatter的Collection属性的字典,用于复选按钮框架。
  • check_props,这个参数类型是dict,是可选。scatter的Collection属性的字典,用于检查按钮检查。

APIs

函数名功能
clear()Uncheck all checkboxes
disconnect(cid)删除连接ID为cid的观察者
get_checked_labels()返回用户当前检查的标签列表
get_status()返回所有检查按钮的状态(True/False)列表
on_clicked(func)将回调函数 func 连接到按钮单击事件。
set_active(index, state=None)通过索引修改复选按钮的状态。如果 eventon 为 True,则会触发回调。
set_check_props(props)设置检查按钮检查的属性。
set_frame_props(props)设置复选按钮框架的属性。
set_label_props(props)设置文本标签的属性。

应用实列

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

freqs = np.arange(0.2, 2, 0.3)
global w_check
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.3, 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_clicked(label):
    global w_check
    index = labels.index(label)
    l_status = w_check.get_status()
    s = ''
    for x in l_status:
        if x == True:
            s += 'FF'
        else:
            s += '00'
    color = '#'+s
    l.set_color(color)
    plt.draw()

if __name__ == "__main__":
    global w_check
    ax = plt.axes([0.01, 0.5, 0.13, 0.4])
    labels = ["Red", "Blue", "Green"]
    check_status = [False, True, False]
    w_check = CheckButtons(ax, labels, check_status)
    w_check.on_clicked(on_clicked)

    plt.show()

在这里插入图片描述


http://www.kler.cn/a/325721.html

相关文章:

  • 面向服务的软件工程——业务流程合规性(Business Process Compliance)(week12)
  • 【python】Bokeh 与 Plotly:创建交互式数据可视化工具
  • ue中使用webui有效果白色拖动条 有白边
  • 解决Spring Boot整合Redis时的连接问题
  • 智谱AI清影升级:引领AI视频进入音效新时代
  • 华为云租户网络-用的是隧道技术
  • 论Web性能的重要性
  • 代理的网速与服务器进出口有关吗
  • CentOS7.9 snmp更改161端口
  • 追梦无Bug的软件世界
  • 毕业设计选题:基于springboot+vue+uniapp的在线办公小程序
  • redis 的发布订阅解决分布式下的websocket session 共享问题
  • 代码随想录算法训练营Day15
  • 【面试题】软件测试实习(含答案)
  • 828华为云征文|针对Flexus X实例云服务器的CPU和内存性能测评
  • Quill Editor 富文本编辑器的高度问题
  • SWAP、AquaCrop、FVCOM、Delft3D、SWAT、R+VIC、HSPF、HEC-HMS......
  • 云计算中过等保三级需要的网络安全设备及详细讲解
  • 可视化大屏
  • CTFshow-SSRF
  • JSP(Java Server Pages)基础使用二
  • 自制CANTool_DBC_Layout仿制_布局读取Signal(三)
  • 【ShuQiHere】AVL 树(AVL Tree):如何保持二叉搜索树的平衡性?
  • 重构长方法之提取方法
  • 9.26-9.29学习
  • 信息安全数学基础(21)高次同余式的解数及解法