matplotlib绘制动态瀑布图

news2024/11/17 1:47:39

在这里插入图片描述

绘制瀑布图思路:遍历指定文件目录下所有的csv文件,每读一个文件,取文件前20行数据进行保存,如果超过规定的行数300行,将最旧的数据删除,仅保留300行数据进行展示。

网上找的大部分绘制瀑布图的代码,均无法呈现动态效果。不是动态的效果还能称为瀑布图吗?(疑问),博主自己摸索了一套绘制动态图的思路,这里全部代码贴出来,如果需要绘制用的数据,可以私信。当然也可以改代码以适用自己的数据。

import os
import numpy as np 
import pandas as pd 
import matplotlib.pyplot as plt
import matplotlib.colors as mcolors
from matplotlib.animation import FuncAnimation

fig, ax = plt.subplots()
yLimLen = 300
pastData = np.ones((0, 0))

def update(csvFilePathName):
    df = pd.read_csv(csvFilePathName, header = None)
    arr = df.values[:10]  

    global pastData
    if not pastData.any():
        pastData = arr
    else:
        arr = np.row_stack((pastData, arr))
        pastData = arr

    lenNum = arr.shape[0]
    print(f'lenNum:{lenNum}')
    if lenNum > yLimLen:
        arr = arr[lenNum - yLimLen:-1]

    colors = ['greenyellow', 'yellow', 'darkblue', 'royalblue', 'orange', 'red']
    clrmap = mcolors.LinearSegmentedColormap.from_list('mycmap', colors)
    csvFileName =  csvFilePathName.split('/')[2]
    ax.set_xlabel(csvFileName)
    plt.imshow(np.flipud(arr), cmap = clrmap) #用于将数据反转,最上面是最新的数据


def configSet(drawUseFileNum = 50):
    path = r'./2023-09-28_15/'
    files = os.listdir(path)[:drawUseFileNum]

    filePathName = [path + i for i in files]
    print(f'一共有{len(files)}个文件')

    # fig, ax = plt.subplots()
    ax.set_ylim(0, yLimLen)
    # ax.set_axis_off()
    ax.invert_yaxis()
    ani = FuncAnimation(fig, update, frames = filePathName, 
            interval = 50, blit = False, repeat = False)
    # plt.show()
    ani.save('move.gif', writer='imagemagick')
    print(f'finish!')

if __name__ == '__main__':
    configSet()

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

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

相关文章

如何挑选一家合格的污水处理服务商

在如今的社会,环境保护越来越受到人们的重视,而污水处理也是其中重要的一环。然而,如何选择一家合格的污水处理服务商成为了许多企业和个体需要面对的难题。今天,小编就为大家介绍一些有趣而实用的选择指南,帮助大家找…

CF1446C Xor Tree 题解 DP Trie树

Xor Tree 传送门 题面翻译 给定你一个非负整数序列 a a a,保证其中每个数两两不同。 对于每个 a i a _ i ai​,它会向 j ≠ i j \ne i ji 且 a i ⊕ a j a_i\oplus a_j ai​⊕aj​( ⊕ \oplus ⊕ 代表异或)最小的 a j a…

IntelliJ IDEA - 快速去除 mapper.xml 告警线和背景(三步走)

1、去掉 No data sources configure 警告 Settings(Ctrl Alt S) ⇒ Editor ⇒ Inspections ⇒ SQL ⇒ No data sources configure 2、去掉 SQL dialect is not configured 警告 Settings(Ctrl Alt S) ⇒ Editor ⇒ Inspecti…

C++力扣题目450--删除二叉搜索树中的节点

给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。 一般来说,删除节点可分为两个步骤: 首先…

Ansible Filter滤波器的使用

一、【说在前面】 Ansible Filter一般被称为滤波器或者叫过滤器。 这个东西初次听到以为是什么科学计算的东西,但是想来ansible不太可能有什么滤波操作,所以这个东西本质是一个数值筛选器,内置函数,本质是一个为了做区别化的工具…

【杂谈】经验分享:宝塔快速部署与IDEA远程Debug

文章目录 前言&需求描述1. 宝塔部署后端项目1.1 项目准备1.2 服务器准备1.3 项目启动 2. IDEA 远程 debug2.1 IDEA 编辑启动项2.2 服务器带参启动2.3 debug 演示 3. 补充与总结3.1 补充3.2 总结 宝塔部署项目 与 IDEA 远程debug 实战 前言&需求描述 本文记录个人工作…

Vue中的v-model

聚沙成塔每天进步一点点 本文内容 ⭐ 专栏简介基本用法文本输入框复选框下拉框 原理解析文本输入框的原理复选框和下拉框的原理 ⭐ 写在最后 ⭐ 专栏简介 Vue学习之旅的奇妙世界 欢迎大家来到 Vue 技能树参考资料专栏!创建这个专栏的初衷是为了帮助大家更好地应对 V…

动态规划篇-06:单词拆分

139、单词拆分 老样子,还是先尝试找出状态转移方程 状态转移方程 对问题进行分解,尝试从子问题入手解决。这也是前文提到过的 “分解问题” 的思想 对于输入的字符串 s,如果我能够从单词列表 wordDict 中找到一个单词匹配 s 的前缀 s[0..k]…

实现零的突破--国内首款兼容6Pin光耦栅极驱动器SLM34x系列SLM341

SLM34x系列SLM341是单通道兼容光耦的隔离式栅极驱动器产品,适用于驱动IGBT、MOSFET。其峰值驱动电流3.0A以及有不同的UVLO电压。与光耦栅极驱动器相比,其性能和可靠性都得到显著的提升,同时保持了对光耦栅极隔离驱动器管脚的兼容。性能提升包…

喜报|盘古信息入选多市中小企业数字化转型试点城市牵引单位/服务商名单

近期,为深入贯彻落实党中央、国务院关于支持中小企业创新发展、加快中小企业数字化转型系列决策部署,财政部、工业和信息化部近日联合印发通知,组织开展中小企业数字化转型城市试点工作,东莞市、武汉市、南昌市等多地经济和信息化…

国科大-自然语言处理复习

自然语言处理复习 实体关系联合抽取流水线式端到端方法 检索式问答系统流水线方式信息检索(IR)阶段阅读理解(RC)阶段基于证据强度的重排基于证据覆盖的重排结合不同类型的聚合 端到端方式Retriever-Reader的联合学习基于预训练的R…

科创板涨跌幅限制20%,上海怎么开参考表账户佣金费率最低?万一是哪家证券公司?

科创板是中国证券市场上的一类创新性企业板块,全称为科技创新板。科创板以支持科技创新和高新技术产业为目标,主要面向科技创新型企业和高新技术企业。科创板的设立旨在为创新型企业提供更加灵活、开放、市场化的融资和退出机制,以加快科技创…

【软件测试学习笔记1】测试基础

1.软件测试的定义 软件的定义:控制计算机硬件工作的工具 软件的基本组成:页面客户端,代码服务器,数据服务器 软件产生的过程:需求产生(产品经理),需求文档,设计效果图…

怎样获取power shell 的全部可用命令?3/5(篇幅有点长,分成5份)

在power shell 窗口中,有一个获取全部可用命令的命令:get-command,获取到的命令有1640多个,够学习了吧?那么,power shell 命令有哪些类别呢? PowerShell命令可以分为以下几类: Cmd…

使用composer构建软件包时文件(夹)权限设置

在构建软件包的时候你可能会需要对包源内文件或文件夹的权限做出相应的调整,以确保软件包在部署到客户端后可以正常运行。在此之前我们先来了解一下Apple文件系统内文件或文件夹的权限设定。 常见的文件或文件夹会有Owner, Group, Everyone这三种类型的所有权&#…

经典文献阅读之--TwinLiteNet(可行驶区域和车道分割的高效轻量级模型)

0. 简介 对于自动驾驶来说语义分割是自动驾驶中理解周围环境的一项常见任务。可行驶区域分割和车道检测对于道路上安全且高效的导航尤为重要。为了满足自动驾驶汽车中可行驶区域和车道分割的高效轻量级,《TwinLiteNet: An Efficient and Lightweight Model for Dri…

反射助你无痛使用Semantic Kernel接入离线大模型

本文主要介绍如何使用 llama 的 server 部署离线大模型,并通过反射技术修改 Semantic Kernel 的 OpenAIClient 类,从而实现指定端点的功能。最后也推荐了一些学习 Semantic Kernel 的资料,希望能对你有所帮助。 封面图片: Dalle3 …

JVM篇--Java内存区域高频面试题

java内存区域 1 Java 堆空间及 GC? 首先我们要知道java堆空间的产生过程: 即当通过java命令启动java进程的时候,就会为它分配内存,而分配内存的一部分就会用于创建堆空间,而当程序中创建对象的时候 就会从堆空间来分…

图像处理-像素位置的一阶导数和二阶导数

图像处理-像素位置的一阶导数和二阶导数 空间卷积是一种图像处理中常用的技术,用于计算图像中每个像素位置的一阶导数和二阶导数。在这里将解释如何使用卷积操作来实现这些导数的计算。 一阶导数和二阶导数的性质: 一阶导数通常产生粗边缘&#xff1b…

redis原理(二)数据结构

redis可以存储键与5种不同数据结构类型之间的映射: String类型的底层实现只有一种数据结构,也就是动态字符串。而List、Hash、Set、ZSet都由两种底层数据结构实现。通常我们把这四种类型称为集合类型,它们的特点是一个键对应了一个集合的数据…