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实现baidu hi自动登录的代码
Feb 10 Python
Python爬虫框架Scrapy安装使用步骤
Apr 01 Python
使用PDB简单调试Python程序简明指南
Apr 25 Python
Django视图和URL配置详解
Jan 31 Python
python opencv 图像尺寸变换方法
Apr 02 Python
Python学习笔记之Break和Continue用法分析
Aug 14 Python
python pptx复制指定页的ppt教程
Feb 14 Python
简单了解Java Netty Reactor三种线程模型
Apr 26 Python
Python pysnmp使用方法及代码实例
Aug 24 Python
python 爬取吉首大学网站成绩单
Jun 02 Python
python编程学习使用管道Pipe编写优化代码
Nov 20 Python
基于Python实现对比Exce的工具
Apr 07 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
提高php运行速度的一些小技巧分享
2012/07/03 PHP
php中利用str_pad函数生成数字递增形式的产品编号
2013/09/30 PHP
ThinkPHP字符串函数及常用函数汇总
2014/07/18 PHP
PHP中调用C/C++制作的动态链接库的教程
2016/03/10 PHP
PHP实现对文件锁进行加锁、解锁操作的方法
2017/07/04 PHP
Laravel如何实现适合Api的异常处理响应格式
2020/06/14 PHP
深入理解JavaScript系列(4) 立即调用的函数表达式
2012/01/15 Javascript
JQuery分屏指示器图片轮换效果实例
2015/05/21 Javascript
JavaScript事件类型中UI事件详解
2016/01/14 Javascript
jQuery常见的选择器及用法介绍
2016/12/20 Javascript
vue深入解析之render function code详解
2017/07/18 Javascript
深入浅析Vue不同场景下组件间的数据交流
2017/08/15 Javascript
微信小程序日历/日期选择插件使用方法详解
2018/12/28 Javascript
Node.js使用supervisor进行开发中调试的方法
2019/03/26 Javascript
[02:52]2014DOTA2西雅图国际邀请赛 CIS战队巡礼
2014/07/07 DOTA
[02:19]2014DOTA2国际邀请赛 专访820少年们一起去追梦吧
2014/07/14 DOTA
python批量修改文件后缀示例代码分享
2013/12/24 Python
Python使用正则匹配实现抓图代码分享
2015/04/02 Python
Python基于pillow判断图片完整性的方法
2016/09/18 Python
python:socket传输大文件示例
2017/01/18 Python
python生成1行四列全2矩阵的方法
2018/08/04 Python
python flask几分钟实现web服务的例子
2019/07/26 Python
使用Pyhton 分析酒店针孔摄像头
2020/03/04 Python
Python实现爬取并分析电商评论
2020/06/19 Python
深入了解Python enumerate和zip
2020/07/16 Python
精彩的推荐信范文
2013/11/26 职场文书
本科毕业生专业自荐书范文
2014/02/05 职场文书
施工质量承诺书范文
2014/05/30 职场文书
购房委托书范本
2014/09/18 职场文书
2015年行政助理工作总结
2015/04/30 职场文书
农业项目投资意向书
2015/05/09 职场文书
2016年先进教师个人事迹材料
2016/02/26 职场文书
幼儿园小班教学反思
2016/03/03 职场文书
导游词之海南天涯海角
2019/12/05 职场文书
python urllib库的使用详解
2021/04/13 Python
介绍一下28个JS常用数组方法
2022/05/06 Javascript