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中input()与raw_input()的区别分析
Feb 27 Python
Python基于回溯法子集树模板解决找零问题示例
Sep 11 Python
Python进阶之自定义对象实现切片功能
Jan 07 Python
浅谈pyqt5在QMainWindow中布局的问题
Jun 21 Python
Python3远程监控程序的实现方法
Jul 15 Python
python中hasattr()、getattr()、setattr()函数的使用
Aug 16 Python
python web框架中实现原生分页
Sep 08 Python
Python测试线程应用程序过程解析
Dec 31 Python
django实现HttpResponse返回json数据为中文
Mar 27 Python
Python使用itcaht库实现微信自动收发消息功能
Jul 13 Python
Requests什么的通通爬不了的Python超强反爬虫方案!
May 20 Python
详解Golang如何实现支持随机删除元素的堆
Sep 23 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跨平台获取服务器IP地址自定义函数分享
2014/12/29 PHP
四种php中webservice实现的简单架构方法及实例
2015/02/03 PHP
Zend Framework教程之模型Model用法简单实例
2016/03/04 PHP
PHP读取CSV大文件导入数据库的实例
2017/07/24 PHP
Laravel 实现密码重置功能
2018/02/23 PHP
Nigma vs Liquid BO3 第一场2.14
2021/03/10 DOTA
javascript编程起步(第七课)
2007/01/10 Javascript
解决3.01版的jquery.form.js中文乱码问题的解决方法
2012/03/08 Javascript
jQuery当鼠标悬停时放大图片的效果实例
2013/07/03 Javascript
javaScript中push函数用法实例分析
2015/06/08 Javascript
微信小程序 教程之事件
2016/10/18 Javascript
微信小程序 数组中的push与concat的区别
2017/01/05 Javascript
AngularJS的ng-click传参的方法
2017/06/19 Javascript
微信小程序之网络请求简单封装实例详解
2017/06/28 Javascript
基于dataset的使用和图片延时加载的实现方法
2017/12/11 Javascript
Vue中props的使用详解
2018/06/15 Javascript
详解微信小程序的不同函数调用的几种方法
2019/05/08 Javascript
JS实现提示框跟随鼠标移动
2019/08/27 Javascript
Vue结合路由配置递归实现菜单栏功能
2020/06/16 Javascript
如何利用 JS 脚本实现网页全自动秒杀抢购功能
2020/10/12 Javascript
pyramid配置session的方法教程
2013/11/27 Python
让python同时兼容python2和python3的8个技巧分享
2014/07/11 Python
KMP算法精解及其Python版的代码示例
2016/06/01 Python
Python 比较两个数组的元素的异同方法
2017/08/17 Python
Python实现购物车程序
2018/04/16 Python
python 有效的括号的实现代码示例
2019/11/11 Python
Python3爬虫中关于中文分词的详解
2020/07/29 Python
关于python3.9安装wordcloud出错的问题及解决办法
2020/11/02 Python
KEEN美国官网:美国人气户外休闲鞋品牌
2021/03/09 全球购物
终端业务员岗位职责
2013/11/27 职场文书
中层干部岗位职责
2013/12/18 职场文书
政府个人对照检查材料思想汇报
2014/10/08 职场文书
电信营业员岗位职责
2015/04/14 职场文书
拖欠货款起诉状
2015/05/20 职场文书
刑事附带民事代理词
2015/05/25 职场文书
食品安全主题班会
2015/08/13 职场文书