颜色渐变的数据密集适用的堆叠图

news2024/11/15 8:20:58

一般情况会用柱状图去堆叠,但是如果数据量太大了,就可考虑这种方式堆叠。可以呈现时间和数量上不同层次数据的变化。

效果图:

在这里插入图片描述


比较详细的注释一下源码:

import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
mpl.use("Agg")

# 页面访问频率随时间的变化

def main():
		# 图片抬头的信息
        abbr_workload_name = "图片标题"
        scanning_interval = 5 # 扫描时间间隔
        thp = "4kB" # 页面大小
        
        # 数据文件路径
        file_path = "./hags_NPB_based.log"
        img_name = "图片名称"
        y_values = []
        x_tmp = []
        # 使用 with 语句打开一个文件。file_path 是文件的路径。使用 with 语句可以确保在处理完文件后,文件会被正确关闭,即使在处理文件过程中发生异常也会被处理。
        with open(file_path) as f:  
            # 它迭代文件f中的每一行。每次迭代时,将当前行的内容赋值给变量line
            for line in f:
            	# 使用 split 方法将 line 字符串按逗号 , 分割成一个列表。split 方法会根据指定的分隔符将字符串分割成多个子字符串,并返回一个包含这些子字符串的列表。在这里,使用逗号作为分隔符将当前行分割成多个字段。
                splitted_line = line.split(",")

				# 数据预处理
                # 将每一行数据的的第一个数据去掉
                x_tmp.append(splitted_line[0])
                # 使用列表推导式,将 splitted_line 列表中的每个元素转换为浮点数,并进行除法计算
                # 根据需求splitted_line[1:]反向迭代的方式,最前面读取到的数据堆叠在最下面
                value_li = [float(n) / 1024 for n in splitted_line[1:]]  
                y_values.append(value_li)
                
        y_tran = np.transpose(y_values)  # 做了一次转置
        x_values = range(len(x_tmp))

		# 作图
        fig, ax = plt.subplots()
        fig.tight_layout()
        # Seaborn 库中用于绘制调色板的函数。它接受一个调色板对象作为参数,并可选地接受其他一些参数来调整绘图效果。
        # sns.palplot(palette="bright", size=1.5, aspect=0.5, show=True)
        # palette:必需参数,要绘制的调色板对象。可以是预定义的调色板名称(字符串),也可以是由颜色值组成的列表或数组。常见的预定义调色板名称包括 "deep"、"bright"、"dark"、"colorblind" 等。
		# size:可选参数,调色板中颜色块的大小。默认值为 1,表示每个颜色块的大小为 1x1。
		# aspect:可选参数,调色板中颜色块的纵横比。默认值为 1,表示每个颜色块的宽度与高度相等。
		# show:可选参数,是否显示调色板。默认为 True,显示调色板;设置为 False,则不显示调色板,仅返回颜色块的坐标和颜色值。
        pal = sns.light_palette("darkblue", n_colors=13, reverse=True)
        # 绘制堆叠区域图ax.stackplot(x, y, *args, **kwargs)
        # x: 作为 x 轴坐标的数组或范围对象;y: 作为 y 轴坐标的多个数组,每个数组代表一个堆叠区域的数据。
        # *args: 可选参数,可以传递额外的参数,如标签、线宽等;**kwargs: 可选关键字参数,可以传递额外的参数,如颜色、透明度等。
        ax.stackplot(x_values, y_tran, colors=pal)
        ax.set_xlabel("Execution Time (epochs)", fontsize=15)
        ax.set_xlim(min(x_values), max(x_values))
        ax.set_ylim(bottom=0)
        start, end = ax.get_ylim()
        ax.tick_params(axis="x", labelsize=15)
        ax.tick_params(axis="y", labelsize=15)
        ax.set_ylabel("Allocated\nMem. Size (MB)", fontsize=15)
        ax.set_title("%s - %s %ds" % (abbr_workload_name, thp, scanning_interval), fontsize=16.5)
        tick_interval = int(end / 5)
        ax.yaxis.set_ticks(np.arange(start, end, tick_interval))
        
        line_plot_data = [0] * len(y_tran[0])
        for y_value_li in y_tran:
                for i in range(len(y_tran[0])):
                        line_plot_data[i] += y_value_li[i]
        ax.plot(x_values, line_plot_data, linewidth=1.7, color="black")

        print(abbr_workload_name)
        filename = "%s_%s_%d" % (abbr_workload_name.replace(".", "_"), thp, scanning_interval)
        filename = filename.replace("_.", ".").replace("__", "_")
        fig.savefig(img_name, bbox_inches="tight")
        plt.show()
        plt.close()

if __name__ == "__main__":
    main()


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

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

相关文章

第七章:L2JMobius学习 – 登录服务LoginServer讲解

在上一个章节中,我们学习了网络数据传输的封装network。那么,在本章的登录服务LoginServer的讲解中,我们就来使用一下这个封装好的功能。Network的封装需要我们继承很多的接口或类。我们首先查看一下登录服务LoginServer的文件结构&#xff0…

[Android 13]Binder系列--获取ServiceManager

获取ServiceManager hongxi.zhu 2023-7-1 以SurfaceFlinger为例&#xff0c;分析客户端进程如何获取ServiceManager代理服务对象 主要流程 SurfaceFlinger中获取SM服务 frameworks/native/services/surfaceflinger/main_surfaceflinger.cpp // publish surface flingersp<…

mysql单表查询,排序,分组查询,运算符

CREATE TABLE emp (empno int(4) NOT NULL, --员工编号ename varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,--员工名字job varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,--员工工作mgr int(4) NULL DEFAULT NU…

随机产生50个100以内的不重复的整数,设计位图排序算法进行排序。

1.问题 随机产生50个100以内的不重复的整数&#xff0c;设计位图排序算法进行排序。 2.设计思路 阶段1&#xff1a; 初始化一个空集合    for i[0,n)    bit[i]0 阶段2&#xff1a; 读入数据i&#xff0c;并设置bit[i]1    for each i in the input file    bit[i]1…

Tomcat 应用服务 WEB服务

简述&#xff1a; 中间件产品介绍 目前来说IBM的WebSphere&#xff0c;Oracle的Weblogic占据了市场上Java语言Web站点的部分份额&#xff0c;该两种软件由于无与伦比的性能及可靠性等优势被广泛应用于大型互联网公司的Web场景中&#xff0c;但是其高昂的价格也使得中小型互联…

DL-FWI:数据(第二次培训作业)

代码&#xff1a; import scipy.io import matplotlib import numpy as np import matplotlib.pylab as plt matplotlib.use(TkAgg) from mpl_toolkits.axes_grid1 import make_axes_locatable import cv2font21 {family: Times New Roman,weight: normal,size: 21,}font18 …

【通览一百个大模型】LaMDA(Google)

【通览一百个大模型】LaMDA&#xff08;Google&#xff09; 作者&#xff1a;王嘉宁&#xff0c;本文章内容为原创&#xff0c;仓库链接&#xff1a;https://github.com/wjn1996/LLMs-NLP-Algo 订阅专栏【大模型&NLP&算法】可获得博主多年积累的全部NLP、大模型和算法干…

图像金字塔、滑动条、鼠标事件响应

1、拉普拉斯图像金字塔 1.1 原理 1.2 实现 //拉普拉斯图像金字塔 void test1() {//高斯图像金字塔构建Mat img imread("F:/testMap/lena.png");vector<Mat> Guass;int level 3;Guass.push_back(img);for (int i 0; i < level; i){Mat guass;pyrDown(Gua…

蓝桥杯每日一练专栏导读2

之前一直更新的是C、C相关的题目&#xff0c;但作为一名前端工程师&#xff0c;还是对Js了解的更多一些&#xff0c;所以从此以后停止更新C/C相关内容&#xff0c;改为更新Js相关的练习题。 内容 更新的内容依旧是蓝桥杯大赛官网提供的习题。每一道题都会提供详细的解题思路&a…

方案编制要求--模版--可以借鉴

写方案的标题要求的编写&#xff0c;可以参照这个进行编写&#xff1b; 附录2&#xff1a;方案编制要求及模板 一、封面格式要求 封面内容应包括项目名称、需求单位&#xff08;盖章&#xff09;、建设单位&#xff08;盖章&#xff09;、设计单位&#xff08;盖章&#xff0…

线段树:一遍通透线段树

线段树有关的操作&#xff08;先大体上知道什么意思&#xff09;: 1 2 3 4 5 线段树前置知识&#xff1a; 由于线段树是一个完美二叉树&#xff0c;所以我们选择的是一维数组来存储线段树的相关知识&#xff1a; 所以&#xff1a; 1如果一个结点是X&#xff0c;则父节…

基于MATLAB的简单线性回归详解

概要 在机器学习领域中大多数任务通常都与预测&#xff08;prediction&#xff09;有关。当我们想预测一个数值时&#xff0c;就会涉及到回归问题。常见的例子包括&#xff1a;预测价格&#xff08;房屋、股票等&#xff09;、预测住院时间&#xff08;针对住院病人等&#xff…

如何用python编写3D游戏

Vizard是一款虚拟现实开发平台软件&#xff0c;从开发至今已走过十个年头。它基于C/C&#xff0c;运用新近OpenGL拓展模块开发出的高性能图形引擎。当运用Python语言执行开发时&#xff0c;Vizard同时自动将编写的程式转换为字节码抽象层(LAXMI)&#xff0c;进而运行渲染核心。…

当型循环和直到型循环(精讲)

目录 背景概念当型循环直到型循环 二维表对比图示与代码当型循环流程图N-S图&#xff08;盒图&#xff09; 直到型循环流程图N-S图&#xff08;盒图&#xff09; 例子当型图示代码 直到型图示代码 Do–Loop 和For –Next相同点&#xff1a;不同点&#xff1a;代码 总结 背景 两…

day02 重新学python——判断语句和循坏语句

文章目录 一、python中的判断语句1.布尔类型和比较运算符2.if语句的基本格式3.if else 语句4.if elif else 语句5.判断语句的嵌套6.实战案例 二、循环语句1.while循环的基础语法2.while循环的基础案例3.while循环的嵌套应用4.while循环的嵌套案例5.for循环的基础语法6.for循环的…

【计算机网络】第三章 数据链路层(点对点协议 媒体介入控制)

文章目录 3.5 点对点协议PPP3.6 媒体接入控制3.6.1 媒体接入控制的基本概念3.6.2 媒体接入控制——静态划分信道3.6.3 随机接入——CSMA/CD协议3.6.4 随机接入——CSMA/CA协议 3.5 点对点协议PPP 点对点协议是目前使用最广泛的点对点数据链路层协议。PPP协议为在点对点链路传输…

JAVA Email

Email就是电子邮件。电子邮件的应用已经有几十年的历史了&#xff0c;我们熟悉的邮箱地址比如aaaa22222163.com&#xff0c;邮件软件比如Outlook、网易闪电邮、Foxmail都是用来收发邮件的。当然&#xff0c;使用Java程序也可以收发电子邮件。 传统的邮件就是通过邮局投递&#…

目标检测+车道线识别+追踪+测距(代码+部署运行)

目标检测车道线识别追踪测距 本文主要讲述项目集成&#xff1a;从车道线识别、测距、到追踪&#xff0c;集各种流行模型于一体&#xff01; 不讲原理&#xff0c;直接上干货&#xff01; 把下文环境配置学会&#xff0c;受益终生&#xff01; 各大项目皆适用&#xff01; …

具有音调控制功能的25W混合式Hi—Fi放大器

现代电子技术应用中电子管的使用虽然已经较少&#xff0c;但由于电子管有晶体管不可替代的一些优越特性&#xff0c;所以在部分领域特别是音响电路中还受到人们的亲睐。这是一款由“靓”音电子管和音响集成电路联合组成的混合放大器。该放大器由电子管作前级&#xff0c;音响专…

7.8(wmi命令+ServiceName+CobaltStrike Loader)

优先级&#xff0c;进程ID&#xff0c;线程计数 优先级&#xff08;Priority&#xff09;是操作系统对进程或线程分配处理器资源的重要性排序。较高的优先级意味着进程或线程更有可能在竞争处理器资源时被调度执行。 进程ID&#xff08;Process ID&#xff09;是唯一标识系统中…