python_绘图_多条折线图绘制_显示与隐藏

1. 需求

  1. 给定一个二维数组 100行, 5列, 每一列绘制一条折线, 横轴为行索引, 纵轴为对应位置的值, 绘制在一个子图里面, 使用python plot, 
  2. 使用随机颜色进行区别
  3. 添加显示和隐藏按钮, 可以对每条折线进行显示和隐藏

2. 代码

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

# 生成一个包含100行、5列的随机二维数组
data = np.random.rand(100, 5)

# 创建图形对象
fig, ax = plt.subplots(figsize=(10, 6))

# 对每一列数据绘制折线图,并使用随机颜色
lines = []
for i in range(5):
    line, = ax.plot(data[:, i], label=f'Line {i+1}', color=np.random.rand(3,))
    lines.append(line)

# 设置图例、标题和坐标轴标签
ax.legend()
ax.set_title('Line Plots of 5 Columns')
ax.set_xlabel('Row Index')
ax.set_ylabel('Value')

# 创建显示和隐藏按钮,自定义按钮样式
rax = plt.axes([0.05, 0.5, 0.1, 0.4], frameon=False)
check = CheckButtons(rax, [f'Line {i+1}' for i in range(5)], [True] * 5)

# 定义按钮点击事件处理函数
def toggle_visibility(label):
    index = int(label.split()[-1]) - 1
    lines[index].set_visible(not lines[index].get_visible())
    plt.draw()

check.on_clicked(toggle_visibility)

# 创建按钮的圆形样式
button_circles = []
for i, label in enumerate(check.labels):
    circle = Circle((0.5, 0.5 - i * 0.1), 0.03, color='gray', transform=rax.transAxes, visible=True)
    ax.add_patch(circle)
    button_circles.append(circle)

# 定义按钮点击事件处理函数,切换小圆点的可见性
def toggle_circle(event):
    for circle, line in zip(button_circles, lines):
        if line.get_visible():
            circle.set_visible(True)
        else:
            circle.set_visible(False)
    plt.draw()

toggle_circle(None)

# 注册按钮点击事件处理函数
check.on_clicked(toggle_circle)

# 显示图形
plt.grid(True)
plt.show()

3. 效果

全部显示:

只显示指定的折线:

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

软件心学格物致知篇(5)愿望清单上篇

愿望清单 前言 最近发现愿望清单是一个很有意思的词,结合自己的一些过往经验得到一点点启发。 我发现在众多领域都有东西想伪装成它。 比如一些企业的企业战略,比如客户提出的一些软件需求,比如一些系统的架构设计指标,比如一…

C语言动态内存讲解+通讯录2.0

文章目录 前文malloc和freecallocrealloc枚举常量的简单说明及使用 通讯录2.0动态开辟通讯录,满了就扩容保存数据和载入数据 通讯录2.0演示推荐好用的软件 前文 本文主要介绍动态开辟的几个函数,以及改进之前的通讯录。 我们局部变量等是在栈区上开辟空间的,而我们动态开辟的空…

Learning Discriminative Representations for Skeleton Based Action Recognition

标题:基于骨架的动作识别的学习判别性表示 原文链接:Learning Discriminative Representations for Skeleton Based Action Recognition (thecvf.com) 源码链接:https://github.com/zhysora/FR-Head 发表:CVPR 摘要 最近&…

【论文复现|智能算法改进】动态透镜成像学习人工兔优化算法及应用

目录 1.算法原理2.改进点3.结果展示4.参考文献 1.算法原理 【智能算法】人工兔优化算法(ARO)原理及实现 2.改进点 非线性递减能量因子: A ( t ) ( A max ⁡ − A min ⁡ ) ( 1 − sin ⁡ ( ( t T ) n π 2 ) (1) \begin{aligned}A\left…

李宏毅深度强化学习导论——当奖励是稀疏的

引言 这是李宏毅强化学习的笔记,主要介绍如何处理稀疏奖励问题。 稀疏奖励 当我们拿Actor和环境互动后可以得到很多奖励,整理之后可以得到分数 A A A,然后可以训练Actor。 但RL中有时会出现多数情况下奖励为零,此时我们不知道动…

Verilog基础【二】

3.1 Verilog 连续赋值 关键词:assign, 全加器 连续赋值语句是 Verilog 数据流建模的基本语句,用于对 wire 型变量进行赋值。: assign LHS_target RHS_expression ;LHS(left hand side)…

卷积层+多个输入通道

卷积层多输入输出通道 在深度学习中,卷积神经网络(CNN)通常用于处理具有多个输入通道的数据。当输入数据具有多个通道(例如彩色图像的RGB通道)时,卷积操作可以同时在每个通道上进行,并将各通道的…

软件测试-进阶篇

目录 测试的分类1 按测试对象划分1.1 界面测试1.2 可靠性测试1.3 容错性测试1.4 文档测试1.5 兼容性测试1.6 易用性测试1.7 安装卸载测试1.8 安装测试1.9 性能测试1.10 内存泄漏测试 2 按是否查看代码划分2.1 黑盒测试(Black-box Testing)2.2 白盒测试&a…

新闻管理系统(源码+文档)

新闻管理系统(小程序、ios、安卓都可部署) 文件包含内容程序简要说明含有功能项目截图客户端新闻详情新闻首页分类退出登录个人中心拨打客服热线注册界面个人资料新闻评论成功 管理端用户管理分类管理新闻管理 文件包含内容 1、搭建视频 2、流程图 3、开…

windows下部署llama.cpp

下载cmake 下载地址 解压,设置Path环境变量D:\CMake\bin 打开cmd输入cmake -version 安装mingw powershell下执行 Set-ExecutionPolicy RemoteSigned -Scope CurrentUser iex "& {$(irm get.scoop.sh)} -RunAsAdmin" scoop bucket add extras s…

Android获取本地文件目录

一、实现效果 一个简单的demo。点击按钮&#xff0c;获取本地文件目录&#xff0c;可以选择图片&#xff0c;展示选取的对应图片和展示存储路径。如图所示&#xff1a; 二、实现方式 1. 权限 AndroidManifest.xml文件里面添加权限 <uses-permission android:name"a…

【御控物联】JavaScript JSON结构转换(12):对象To数组——键值互换属性重组

文章目录 一、JSON结构转换是什么&#xff1f;二、核心构件之转换映射三、案例之《JSON对象 To JSON数组》四、代码实现五、在线转换工具六、技术资料 一、JSON结构转换是什么&#xff1f; JSON结构转换指的是将一个JSON对象或JSON数组按照一定规则进行重组、筛选、映射或转换…

牛客2024年愚人节比赛(A-K)

比赛链接 毕竟是娱乐场&#xff0c;放平心态打吧。。。 只有A一个考了数学期望&#xff0c;其他的基本都是acmer特有的脑筋急转弯&#xff0c;看个乐呵即可。 A 我是欧皇&#xff0c;赚到盆满钵满&#xff01; 思路&#xff1a; 我们有 p 1 p_1 p1​ 的概率直接拿到一件实…

Oracle Solaris 11.3开工失败问题处理记录

1、故障现像 起初是我这有套RAC有点问题&#xff0c;我想重启1个节点&#xff0c;结果发现重启后该节点的IP能PING通&#xff0c;但SSH连不上去&#xff0c;对应的RAC服务也没有自动启动。 操作系统是solaris 11.3。由于该IP对应的主机是LDOM&#xff0c;于是我去主域上telnet…

html基础:颜色的 5 种表示方法(最全!)

你好&#xff0c;我是云桃桃。一个希望帮助更多朋友快速入门 WEB 前端的程序媛&#xff0c;大专生&#xff0c;2年时间从1800到月入过万&#xff0c;工作5年买房。 分享成长心得。 HTML 颜色在网页设计中扮演着重要角色&#xff0c;给网页增加颜色可以增强用户体验&#xff0c;…

MySQL看这一篇就够了

目录 MySQL安装&#xff08;Linux&#xff09; 1、仓库安装 2、本地安装 3、容器安装 MySQL体系结构 连接层 SQL层 存储引擎层 MySQL存储引擎的介绍 常用存储引擎的特性比对 InnoDB的逻辑存储结构 系统文件层 MySQL库表操作 库操作 表操作 创建表 查看表 删除…

snmp服务

双击 安装snmputil和MIB Browser getSwitchStatus.cpp&#xff1a; #include <iostream> #include <stdio.h> #include <net-snmp/net-snmp-config.h> #include <net-snmp/net-snmp-includes.h>using namespace std;int main() {init_snmp("getS…

算法学习——LeetCode力扣补充篇3(143. 重排链表、141. 环形链表、205. 同构字符串、1002. 查找共用字符、925. 长按键入)

算法学习——LeetCode力扣补充篇3 143. 重排链表 143. 重排链表 - 力扣&#xff08;LeetCode&#xff09; 描述 给定一个单链表 L 的头节点 head &#xff0c;单链表 L 表示为&#xff1a; L0 → L1 → … → Ln - 1 → Ln 请将其重新排列后变为&#xff1a; L0 → Ln → …

给三分钟热度学习Python的同学的一条建议

最近公司来了一个实习生妹子&#xff0c;在读商科硕士&#xff0c;平时我会让她做做数据清洗的工作&#xff0c;她工作倒是贼认真&#xff0c;但对计算机属于一窍不通&#xff0c;不会写SQL&#xff0c;Ecxel也很菜&#xff0c;对于很简单的取数往往会花很多的时间。 她向我倒…

halcon图像腐蚀

1、原理 使用结构元素在图像上移动&#xff0c;只有结构元素上的所有像素点都属于图像中时&#xff0c;才保留结构元素中心点所在的像素&#xff0c;常用于分离连接的两个物体、消除噪声。 2、halcon代码 dev_open_file_dialog (read_image, default, default, Selection) r…