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实现strcmp函数功能示例
Mar 25 Python
python使用7z解压apk包的方法
Apr 18 Python
Python合并多个Excel数据的方法
Jul 16 Python
Python3中内置类型bytes和str用法及byte和string之间各种编码转换 问题
Sep 27 Python
python运行时强制刷新缓冲区的方法
Jan 14 Python
python Pandas如何对数据集随机抽样
Jul 29 Python
Python tkinter实现图片标注功能(完整代码)
Dec 08 Python
TensorFlow实现指数衰减学习率的方法
Feb 05 Python
Jupyter notebook运行Spark+Scala教程
Apr 10 Python
使用Python对Dicom文件进行读取与写入的实现
Apr 20 Python
Django ORM filter() 的运用详解
May 14 Python
Python可视化动图组件ipyvizzu绘制惊艳的可视化动图
Apr 21 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 全文搜索和替换的实现代码
2008/07/29 PHP
用PHP实现的四则运算表达式计算实现代码
2011/08/02 PHP
PHP static局部静态变量和全局静态变量总结
2014/03/02 PHP
php实现给一张图片加上水印效果
2016/01/02 PHP
php 数组字符串搜索array_search技巧
2016/07/05 PHP
php5.6.x到php7.0.x特性小结
2019/08/17 PHP
laravel-admin 在列表页添加自定义按钮的例子
2019/09/30 PHP
JavaScript通过元素的ID和name设置样式
2014/07/08 Javascript
jQuery 删除或是清空某个HTML元素示例
2014/08/04 Javascript
JavaScript控制table某列不显示的方法
2015/03/16 Javascript
jquery实现定时自动轮播特效
2015/12/10 Javascript
学习javascript面向对象 实例讲解面向对象选项卡
2016/01/04 Javascript
jQuery插件之Tocify动态节点目录菜单生成器附源码下载
2016/01/08 Javascript
基于Jquery插件Uploadify实现实时显示进度条上传图片
2020/03/26 Javascript
如何使用Vuex+Vue.js构建单页应用
2016/10/27 Javascript
浅析Ajax语法
2016/12/05 Javascript
NodeJS遍历文件生产文件列表功能示例
2017/01/22 NodeJs
Express系列之multer上传的使用
2017/10/27 Javascript
css和js实现弹出登录居中界面完整代码
2017/11/26 Javascript
基于 jQuery 实现键盘事件监听控件
2019/04/04 jQuery
js全屏事件fullscreenchange 实现全屏、退出全屏操作
2019/09/17 Javascript
Vue实现按钮级权限方案
2019/11/21 Javascript
pycharm 使用心得(八)如何调用另一文件中的函数
2014/06/06 Python
python多进程使用及线程池的使用方法代码详解
2018/10/24 Python
使用python实现离散时间傅里叶变换的方法
2019/09/02 Python
python 实现将小图片放到另一个较大的白色或黑色背景图片中
2019/12/12 Python
Python二元算术运算常用方法解析
2020/09/15 Python
Python 列表推导式需要注意的地方
2020/10/23 Python
如何基于matlab相机标定导出xml文件
2020/11/02 Python
单位绩效考核方案
2014/05/11 职场文书
保安公司服务承诺书
2014/05/28 职场文书
排查整治工作方案
2014/06/09 职场文书
HR求职自荐信范文
2014/06/21 职场文书
视光学专业自荐信
2014/06/24 职场文书
医院深入开展党的群众路线教育实践活动实施方案
2014/08/27 职场文书
建房合同协议书
2016/03/21 职场文书