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

news2024/11/25 22:41:39

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. 效果

全部显示:

只显示指定的折线:

 

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

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

相关文章

使用Docker快速搭建Kafka

前言 今天讲下如何使用Docker快速搭建kafka。 前期准备,需要安装好docker、docker-compose。 一、安装Kafka 1、创建Kafka目录,执行如下命令。 mkdir -p /docker/kafka/ cd /docker/kafka/ 2、编写yaml文件,内容如下。 vim docker-com…

国产桌面操作系统统一身份认证及2FA双因子认证安全升级方案

某金融运营服务公司,主要负责业务处理、客户服务、业务监控、报表统计等金融运营服务,为集团下设二级单位,坐落于一线城市,对政策风向有很高的敏锐度。 该公司已为公司业务人员、客户服务、监督员等配备了数百台国产桌面操作系统…

springboot 将manage关闭。

这是SpringBoot自带的接口,会将所有的接口暴露在外面。所以我们上生产环境,需要将这个接口给关闭。 默认是 management.endpoints.web.exposure.include* 只需将配置文件改成下面,Springboot自带的接口就会关闭。 management.endpoints.…

嵌入式系统基础知识(一):嵌入式系统是什么?

一.定义 根据IEEE(国际电气和电子工程师协会)的定义,嵌入式系统是“控制、监视或者辅助设备、机器和车间运行的装置”。这主要是从应用上加以定义的,从中可看出嵌入式系统是软件和硬件的综合体,还可以涵盖机械等附属装…

vue3使用UEditorPlus 、后端配置、上传图片等处理

前端安装 vue3安装vue-ueditor-wrap // vue-ueditor-wrap v3 仅支持 Vue 3 npm i vue-ueditor-wrap3.x -S // or yarn add vue-ueditor-wrap3.x 下载 UEditorPlus 仓库地址 把dist文件复制到vue3项目中的public下,重命名为UEditorPlus UEditorPlus文档 在main.…

分月饼 java题解

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in); int m sc.nextInt(); // 读取员工数量mint n sc.nextInt(); // 读取月饼数量n// 调用distribute方法并打印返回的分配方法总数//先默认每人分一个…

联手SCQL与CCL,护航隐私计算之路

1.SCQL Overview SCQL(Secure Collaborative Query Language)是一种专为支持多方安全数据分析而设计的语言,它的目标是在保证数据隐私的前提下,使得不同的参与方能够进行联合数据分析。这一概念和技术是随着隐私计算技术的发展而…

顶顶通呼叫中心中间件-声音编码自适应配置方法(mod_cti基于FreeSWITCH)

顶顶通呼叫中心中间件-声音编码自适应配置方法讲解(mod_cti基于FreeSWITCH) 声音编码自适应介绍 声音编码自适应,通常在语音通信和音频处理领域中指的是一种能够根据信号特性和传输环境自动调整编码参数的技术。其目的是在不同的网络状况和音质要求下,…

3、jvm基础知识(三)

如何判断堆上的对象没有被引用? 常见的有两种判断方法:引用计数法和可达性分析法。 引用计数法会为每个对象维护一个引用计数器,当对象被引用时加1,取消引用时减1。 引用计数法的优点是实现简单,缺点有两点&#xff1…

【浅尝C++】STL第二弹=>迭代器失效详解/vector常用接口使用示例/vector底层结构探索/vector模拟实现代码详解

🏠专栏介绍:浅尝C专栏是用于记录C语法基础、STL及内存剖析等。 🎯每日格言:每日努力一点点,技术变化看得见。 文章目录 vector介绍vector常用接口及使用示例构造类函数迭代器的使用容量操作增删改查 迭代器失效详解与v…

ArcGIS支持下SWAT与CENTURY模型的结合:流域水碳氮综合模拟

目录 专题一 流域水碳氮建模 专题二 数据准备 专题三 流域水模拟 专题四 流域氮模拟 专题五 流域碳模拟 专题六 模型结果分析及地图制作 更多应用 基于ArcGIS的SWAT模型是一类比较典型的流域模型,结合SWAT模型和生物地球化学循环模型可以实现流域水碳氮综合模…

通过 Cookie、Session 和 Spring 拦截器技术,实现对用户登录状态的持有和清理(一)

本篇博客对应“2.3 会话管理”小节 视频名称:会话管理 视频链接 什么是HTPP协议? HTTP,Hpyer Text Transfer Protocl:定义了浏览器怎样从(万维网客户进程)怎样向Web服务器(万维网服务器&#…

文献学习-24-用于少发罕见病诊断的动态特征拼接

Dynamic feature splicing for few-shot rare disease diagnosis Authors: Yuanyuan Chen, Xiaoqing Guo , Yongsheng Pan , Yong Xia , Yixuan Yuan Source: Medical Image Analysis 90 (2023) 102959 Keywords: 少样本学习 罕见病诊断 transformer 特征拼接 通道相似度 Ab…

4.1C++

对菱形继承给出的代码中每一个类&#xff0c;写一个有参构造函数 #include <iostream> using namespace std;class A { public:int a;A(int a):a(a){} }; class B:virtual public A { public:int b;B(int b,int a):b(b),A(a){} }; class C:virtual public A { public:int…

告别微软,姜大昕带领这支精英团队攀登Scaling Law,万亿参数模型已有预览版

ChatGPT狂飙160天&#xff0c;世界已经不是之前的样子。 新建了人工智能中文站https://ai.weoknow.com 每天给大家更新可用的国内可用chatGPT资源 发布在https://it.weoknow.com 更多资源欢迎关注 攀登 Scaling Law&#xff0c;打造万亿参数大模型&#xff0c;前微软 NLP 大…

【Java八股面试系列】Arraylist和HashMap的底层原理

文章目录 ArrayList源码总&#xff1a;构造方法扩容机制remove HashMap总&#xff1a;构造方法细节问题putVal()方法resize()方法Hash值 HashMap常见问题 ConcurrentHashMap总&#xff1a;putVal()方法自己的测试 为什么重写HashCode和equals ArrayList源码 总&#xff1a; *…

虚拟机下的Ubuntu系统,NAT网卡连接不上网络的问题

文章目录 解决办法1解决办法2解决办法3Ubuntu20.04桥接网卡和NAT网卡不能同时使用问题解决 本博主花了许久时间解决这个NAT网卡上网问题&#xff0c;如果你试过网上所有教程&#xff0c;检测了Windows环境和Ubuntu环境没问题&#xff0c;无法启动系统服务、ping网络失败、重置虚…

【Web】记录Polar靶场<中等>难度题一遍过(全)

目录 到底给不给flag呢 写shell 注入 某函数的复仇 xxe SSTI unpickle BlackMagic 反序列化 找找shell 再来ping一波啊 wu 代码审计1 你的马呢&#xff1f; ezphp 随机值 phpurl search file PlayGame csdn 反正持续一个月&#xff0c;感觉XYCTF…

DXP学习3-单片机时钟显示系统的层次原理图设计

目录 一&#xff0c;自上而下的子母图设计 1&#xff0c;绘制层次式电路母图 1)工程及原理图创建和保存 2)开始绘制层次式母图main.SchDoc 2&#xff0c;绘制图纸符号 1&#xff09;properties选项卡 2&#xff09;designator标号 3&#xff09;filename文件名 4&…

http模块 服务器端如何响应(获取)静态资源?

一、静态资源与动态资源介绍&#xff1a; &#xff08;1&#xff09;静态资源 内容长时间不改变的资源。eg&#xff1a;图片、视频、css js html文件、字体文件... &#xff08;2&#xff09;动态资源 内容经常更新的资源。eg&#xff1a;百度首页、淘宝搜索列表... 二、服…