官网地址:https://openpyxl.readthedocs.io/en/stable/charts/line.html#id1

openpyxl+pandas

# coding=utf-8
import pandas as pd
import time
from openpyxl import Workbook
from openpyxl.chart import (
LineChart,
Reference,
)
from openpyxl.chart.axis import DateAxis def cpu_info(csv_path="./datas-permon/CPU_20200111005156.csv"):
df = pd.read_csv(csv_path) #dtype={'timeStamp':str}
df['timeStamp'] = df['timeStamp'].apply(lambda x:time.strftime('%Y%m%d%H%M%S'
,time.localtime(int(str(x)[:10]))))
user=df.loc[df.label=="192.168.110.151 CPU user"][["label","timeStamp","elapsed"]]
iowait=df.loc[df.label=="192.168.110.151 CPU iowait"][["label","timeStamp","elapsed"]]
idle=df.loc[df.label=="192.168.110.151 CPU idle"][["label","timeStamp","elapsed"]]
it=df["timeStamp"].drop_duplicates().values.tolist()
t=[ str(i) for i in it]
u=user["elapsed"].values.tolist()
io=iowait["elapsed"].values.tolist()
idl=idle["elapsed"].values.tolist()
rows=list(zip(t,u,io,idl))
rows.insert(0,["timeStamp","user","iowait","idle"])
return rows def mem_info(csv_path="./datas-permon/Meminfo_20200111005156.csv"):
df=pd.read_csv(csv_path)
df['timeStamp'] = df['timeStamp'].apply(lambda x:time.strftime('%Y%m%d%H%M%S'
,time.localtime(int(str(x)[:10]))))
total=df.loc[df.label=="192.168.110.151 Memory total"][["label","timeStamp","elapsed"]]
used=df.loc[df.label=="192.168.110.151 Memory used"][["label","timeStamp","elapsed"]]
free=df.loc[df.label=="192.168.110.151 Memory free"][["label","timeStamp","elapsed"]]
tol=total["elapsed"]/1024/1024/1024
us=used["elapsed"]/1024/1024/1024
fr=free["elapsed"]/1024/1024/1024
it = df["timeStamp"].drop_duplicates().values.tolist()
t = [str(i) for i in it]
to=tol.values.tolist()
f=fr.values.tolist()
u=us.values.tolist()
rows=list(zip(t,to,u,f))
rows.insert(0,["timestamp","total","used","free"])
return rows def network_info(csv_path="./datas-permon/NetIO_20200111005156.csv"):
df=pd.read_csv(csv_path)
df['timeStamp'] = df['timeStamp'].apply(lambda x:time.strftime('%Y%m%d%H%M%S'
,time.localtime(int(str(x)[:10]))))
send=df.loc[df.label=="192.168.110.151 Network I/O bytessent"][["label","timeStamp","elapsed"]]
recv=df.loc[df.label=="192.168.110.151 Network I/O bytesrecv"][["label","timeStamp","elapsed"]]
elapsed_send=send["elapsed"].values.tolist()
elapsed_recv=recv["elapsed"].values.tolist()
it = df["timeStamp"].drop_duplicates().values.tolist()
t = [str(i) for i in it]
rows=list(zip(t,elapsed_send,elapsed_recv))
rows.insert(0,["timeStamp","sentBytes","recvBytes"])
return rows def performance_util(configurations):
wb = Workbook()
for configuration in configurations:
rows = configuration["rows"]
sheet = configuration["sheet_name"]
label_max=configuration["label"]
ws = wb.create_sheet(sheet, index=configuration["index"])
for row in rows:
ws.append(row)
data = Reference(ws, min_col=2, min_row=1, max_col=label_max, max_row=len(rows)-1) # max_row=7
# Chart with date axis
c2 = LineChart()
c2.title = "Date Axis"
c2.style = 7
c2.y_axis.title = "Size"
c2.y_axis.crossAx = 500
c2.x_axis = DateAxis(crossAx=100)
c2.x_axis.number_format = '%Y%m%d%H%M%S'
# c2.x_axis.majorTimeUnit = "days"
c2.x_axis.title = "Date"
c2.height = 16
c2.width = 28
c2.add_data(data, titles_from_data=True)
dates = Reference(ws, min_col=1, min_row=2, max_row=len(rows)-1) # max_row=7
c2.set_categories(dates)
ws.add_chart(c2, "F1")
wb.save("line_permon.xlsx") if __name__ == '__main__':
cpu_dict={"rows":cpu_info(),"sheet_name":"CPU","index":0,"label":4}
mem_dict={"rows":mem_info(),"sheet_name":"Mem","index":1,"label":4}
network_dict = {"rows": network_info(), "sheet_name": "NetWork", "index": 2,"label":3}
performance_util([cpu_dict,mem_dict,network_dict])
# network_info()

  效果图:

mem:

network:

pandas 数据可视化之折线图的更多相关文章

  1. 第四篇:R语言数据可视化之折线图、堆积图、堆积面积图

    折线图简介 折线图通常用来对两个连续变量的依存关系进行可视化,其中横轴很多时候是时间轴. 但横轴也不一定是连续型变量,可以是有序的离散型变量. 绘制基本折线图 本例选用如下测试数据集: 绘制方法是首先 ...

  2. Echarts数据可视化series-radar雷达图,开发全解+完美注释

    全栈工程师开发手册 (作者:栾鹏) Echarts数据可视化开发代码注释全解 Echarts数据可视化开发参数配置全解 6大公共组件详解(点击进入): title详解. tooltip详解.toolb ...

  3. Echarts数据可视化series-line线图,开发全解+完美注释

    全栈工程师开发手册 (作者:栾鹏) Echarts数据可视化开发代码注释全解 Echarts数据可视化开发参数配置全解 6大公共组件详解(点击进入): title详解. tooltip详解.toolb ...

  4. Echarts数据可视化series-graph关系图,开发全解+完美注释

    全栈工程师开发手册 (作者:栾鹏) Echarts数据可视化开发代码注释全解 Echarts数据可视化开发参数配置全解 6大公共组件详解(点击进入): title详解. tooltip详解.toolb ...

  5. 用Python的Plotly画出炫酷的数据可视化(含各类图介绍,附代码)

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 我被狗咬了 在谈及数据可视化的时候,我们通常都会使用到matplo ...

  6. Python图表数据可视化Seaborn:1. 风格| 分布数据可视化-直方图| 密度图| 散点图

    conda  install seaborn  是安装到jupyter那个环境的 1. 整体风格设置 对图表整体颜色.比例等进行风格设置,包括颜色色板等调用系统风格进行数据可视化 set() / se ...

  7. Python Pandas 时间序列双轴折线图

    时间序列pv-gmv双轴折线图 import numpy as np import pandas as pd import matplotlib.pyplot as plt n = 12 date_s ...

  8. 基于matplotlib的数据可视化 - 饼状图pie

    绘制饼状图的基本语法 创建数组 x 的饼图,每个楔形的面积由 x / sum(x) 决定: 若 sum(x) < 1,则 x 数组不会被标准化,x 值即为楔形区域面积占比.注意,该种情况会出现 ...

  9. 基于matplotlib的数据可视化 - 三维曲面图gca

    1 语法 ax = plt.gca(projection='3d')ax.plot_surface(x,y,z,rstride=行步距,cstride=列步距,cmap=颜色映射) gca(**kwa ...

随机推荐

  1. jQuery---音乐导航

    音乐导航 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF- ...

  2. 统计redis大key信息(前topN)

    相关包下载链接 https://github.com/sripathikrishnan/redis-rdb-tools/releaseshttps://pypi.org/project/python- ...

  3. Qt Installer Framework翻译(7-7)

    脚本API 下表总结了可以在控制器和组件脚本中使用的全局JavaScript对象. QMessageBox 提供一个模式对话框,通知用户或询问用户问题并接收答案 buttons 提供可在安装程序页面上 ...

  4. 前端面试必备技巧(二)css盒模型及BFC

    CSS盒模型 基本概念:标准模型+IE模型及区别 CSS如何设置这两种模型? JS如何设置获取盒模型对应的宽和高? 实例题(根据盒模型解释边距重叠) BFC边距重叠解决方案 (1)BFC的基本概念:b ...

  5. loj6278 数列分块入门题2

    题意:支持区间加,询问区间中元素排名 维护两个域.一个域维护原序列,一个域维护快内排序序列. 每次修改后更新快内排序序列. 修改时O(sqrt(n)log(sqrt(n))) 询问时O(sqrt(n) ...

  6. arm学习笔记

    学习ARM也有一定时间了,想想还是记点东西,要不以后就忘了.这是我的第一片,简简单单.但比较基础.1. ARM中一些常见英文缩写解释MSB:最高有效位:LSB:最低有效位:AHB:先进的高性能总线:V ...

  7. 在 window 上卸载 mysql

    1.停止 mysql 服务 开始——>控制面板——>管理工具——>服务,停掉 MySQL 的服务 2.卸载安装包 控制面板-添加删除程序,找到MySQL,卸载(可能会有多个安装包,需 ...

  8. 多个iframe,删除详情页时刷新同级iframe的table list

    说明:在使用iframe开发时,经常遇到多个iframe之间的操作. 下面就是一个需求:在一个iframe中关闭时,刷新指定的iframe: 添加需要刷新的标识reload=true //添加npi2 ...

  9. ASP.NET 模型验证2--验证部分属性

    在开发MVC时,模型验证非常常见,平常我们用的应该都是全验证 if(ModelState.IsValid){ //验证成功要做的事 .....} 但是有时候我们需要部分验证,比如修改用户信息时,因为更 ...

  10. 小匠第二周期打卡笔记-Task04

    一.机器翻译及相关技术 机器翻译(MT):将一段文本从一种语言自动翻译为另一种语言,用神经网络解决这个问题通常称为神经网络翻译(NMT). 主要特征:输出是单词序列而不是单个单词.输出序列的长度可能与 ...