python实现数据图表


Posted in Python onJuly 29, 2017

平时压力测试,生成一些数据后分析,直接看 log 不是很直观,前段时间看到公司同事分享了一个绘制图表python 模块 : plotly, 觉得很实用,利用周末时间熟悉下。

python实现数据图表
plotly

plotly 主页 : https://plot.ly/python/

安装

在 ubuntu 环境下,安装 plotly 很简单
python 版本2.7+

$ sudo pip install plotly

绘图

在 plotly 网站注册后,可以直接将生成的图片保存到网站上,便于共享保存。
这里使用离线的接口,生成的 html 保存在本地文件

绘制直线图

先随便搞一组数据用来绘制图表

lcd@ubuntu:~/$ cat gen_log.sh 
#!/bin/bash
count=$1
while [ $count -gt 0 ]
do
  sar -n DEV 1 1 | grep "Average:" | grep "eth0" | awk '{print $4,$5,$6}'
  count=$(($count-1))
done
lcd@ubuntu:~/$ sh gen_log.sh 1000 > log.txt

通过上述脚本,获取每秒钟网卡的3个数据,记录文本,利用 ploty 按时间绘制成直线图,实现如下:

#!/usr/bin/env python
import plotly.offline as pltoff
import plotly.graph_objs as go

def line_plots(name="line_plots.html"):
  dataset = {
    'time': [],
    'rx': [],
    'tx': [],
    'util': []
  }
  with open("./log.txt") as f:
    i = 0
    for line in f:
      items = line.split()
      dataset['time'].append(i)
      dataset['rx'].append(items[0])
      dataset['tx'].append(items[1])
      dataset['util'].append(items[2])
      i += 1
      
  data_g = []
  # 构建 time - rx 数据关系,折线图
  tr_rx = go.Scatter(
    x = dataset['time'],
    y = dataset['rx'],
    name = 'rx')
  data_g.append(tr_rx)

  tr_tx = go.Scatter(
    x = dataset['time'],
    y = dataset['tx'],
    name = 'tx')
  data_g.append(tr_tx)

  tr_util = go.Scatter(
    x = dataset['time'],
    y = dataset['util'],
    name = 'util')
  data_g.append(tr_util)

  # 设置图表布局
  layout = go.Layout(title="Line plots",
    xaxis={'title':'time'}, yaxis={'title':'value'})
  fig = go.Figure(data=data_g, layout=layout)
  # 生成离线html
  pltoff.plot(fig, filename=name)

if __name__=='__main__':
  line_plots()

生成图表如下所示 :

python实现数据图表
line_plot

柱形图

#!/usr/bin/env python
import plotly.offline as pltoff
import plotly.graph_objs as go

def bar_charts(name="bar_charts.html"):
  dataset = {'x':['man', 'woman'],
        'y1':[35, 26],
        'y2':[33, 30]}
  data_g = []
  tr_y1 = go.Bar(
    x = dataset['x'],
    y = dataset['y1'],
    name = '2016'

  )
  data_g.append(tr_y1)

  tr_y2 = go.Bar(
  x = dataset['x'],
  y = dataset['y2'],
  name = '2017'

  )
  data_g.append(tr_y2)
  layout = go.Layout(title="bar charts",
    xaxis={'title':'x'}, yaxis={'title':'value'})
  fig = go.Figure(data=data_g, layout=layout)
  pltoff.plot(fig, filename=name)

if __name__=='__main__':
  bar_charts()

python实现数据图表

bar char

饼状图

#!/usr/bin/env python
import plotly.offline as pltoff
import plotly.graph_objs as go

def pie_charts(name='pie_chart.html'):
  dataset = {
    'labels':['Windows', 'Linux', 'MacOS'],
    'values':[280, 10, 30]}
  data_g = []
  tr_p = go.Pie(
  labels = dataset['labels'],
  values = dataset['values']

  )
  data_g.append(tr_p)
  layout = go.Layout(title="pie charts")
  fig = go.Figure(data=data_g, layout=layout)
  pltoff.plot(fig, filename=name)

if __name__=='__main__':
  pie_charts()

python实现数据图表

Python 相关文章推荐
Python中asyncore的用法实例
Sep 29 Python
Python实现LRU算法的2种方法
Jun 24 Python
python  Django中的apps.py的目的是什么
Oct 15 Python
在python中对变量判断是否为None的三种方法总结
Jan 23 Python
Python流行ORM框架sqlalchemy安装与使用教程
Jun 04 Python
Ubuntu18.04中Python2.7与Python3.6环境切换
Jun 14 Python
Python全局锁中如何合理运用多线程(多进程)
Nov 06 Python
pytorch GAN伪造手写体mnist数据集方式
Jan 10 Python
python怎么调用自己的函数
Jul 01 Python
python爬虫之利用selenium模块自动登录CSDN
Apr 22 Python
浅谈Python类的单继承相关知识
May 12 Python
对象析构函数__del__在Python中何时使用
Mar 22 Python
基于Python的XSS测试工具XSStrike使用方法
Jul 29 #Python
使用Kivy将python程序打包为apk文件
Jul 29 #Python
python对配置文件.ini进行增删改查操作的方法示例
Jul 28 #Python
Python3中使用PyMongo的方法详解
Jul 28 #Python
Python tkinter模块弹出窗口及传值回到主窗口操作详解
Jul 28 #Python
Python单体模式的几种常见实现方法详解
Jul 28 #Python
深入浅出分析Python装饰器用法
Jul 28 #Python
You might like
双料怀旧--SHARP GF515的维护、修理和简单调试
2021/03/02 无线电
php实现扫描二维码根据浏览器类型访问不同下载地址
2014/10/15 PHP
微信公众平台实现获取用户OpenID的方法
2015/04/15 PHP
jQuery中与toggleClass等价的程序段 以及未来学习的方向
2010/03/18 Javascript
js如何获取object类型里的键值
2014/02/18 Javascript
用JavaScript实现用一个DIV来包装文本元素节点
2014/09/09 Javascript
Jquery对select的增、删、改、查操作
2015/02/06 Javascript
JavaScript事件委托实例分析
2015/05/26 Javascript
JavaScript中的substr()方法使用详解
2015/06/06 Javascript
javascript实现密码验证
2015/11/10 Javascript
用NODE.JS中的流编写工具是要注意的事项
2016/03/01 Javascript
Node.js连接MongoDB数据库产生的问题
2017/02/08 Javascript
详解基于node的前端项目编译时内存溢出问题
2017/08/01 Javascript
JS中跳出循环的示例代码
2017/09/14 Javascript
详解基于iview-ui的导航栏路径(面包屑)配置
2019/02/22 Javascript
浅谈对于“不用setInterval,用setTimeout”的理解
2019/08/28 Javascript
vue实现打地鼠小游戏
2020/08/21 Javascript
python写日志封装类实例
2015/06/28 Python
python简单线程和协程学习心得(分享)
2017/06/14 Python
python快速编写单行注释多行注释的方法
2019/07/31 Python
python实现单张图像拼接与批量图片拼接
2020/03/23 Python
html5 canvas绘制放射性渐变色效果
2018/01/04 HTML / CSS
无畏的旅行:Intrepid Travel
2017/12/20 全球购物
如何用JQuery进行表单验证
2013/05/29 面试题
电子商务专业在校生实习自我鉴定
2013/09/29 职场文书
大学生怎样进行自我评价
2013/12/07 职场文书
2014年秋季开学演讲稿
2014/05/24 职场文书
企业宣传策划方案
2014/05/29 职场文书
服务宗旨标语
2014/07/01 职场文书
中学学校门卫岗位职责
2014/08/15 职场文书
家庭财产分割协议书范本
2014/11/24 职场文书
入党积极分子党支部意见
2015/06/02 职场文书
2015年团委副书记工作总结
2015/07/23 职场文书
浅谈golang 中time.After释放的问题
2021/05/05 Golang
MySql学习笔记之事务隔离级别详解
2021/05/12 MySQL
浅谈Python数学建模之整数规划
2021/06/23 Python