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网络编程之UDP通信实例(含服务器端、客户端、UDP广播例子)
Apr 25 Python
python创建线程示例
May 06 Python
图文讲解选择排序算法的原理及在Python中的实现
May 04 Python
python利用urllib实现爬取京东网站商品图片的爬虫实例
Aug 24 Python
Python最火、R极具潜力 2017机器学习调查报告
Dec 11 Python
Python实现控制台中的进度条功能代码
Dec 22 Python
DataFrame中的object转换成float的方法
Apr 10 Python
Python3.5内置模块之random模块用法实例分析
Apr 26 Python
PyTorch加载自己的数据集实例详解
Mar 18 Python
Python3.7.0 Shell添加清屏快捷键的实现示例
Mar 23 Python
Django设置Postgresql的操作
May 14 Python
python opencv人脸识别考勤系统的完整源码
Apr 26 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 一个随机字符串生成代码
2010/05/26 PHP
浅谈php serialize()与unserialize()的用法
2013/06/05 PHP
PHP面向对象编程之深入理解方法重载与方法覆盖(多态)
2015/12/24 PHP
laravel config文件配置全局变量的例子
2019/10/13 PHP
Mac下关于PHP环境和扩展的安装详解
2019/10/17 PHP
dojo 之基础篇
2007/03/24 Javascript
jquery的extend和fn.extend的使用说明
2011/01/09 Javascript
javascript 内存回收机制理解
2011/01/17 Javascript
JavaScript基础知识之数据类型
2012/08/06 Javascript
基于jquery的9行js轻松实现tab控件示例
2013/10/12 Javascript
Extjs4中tree的拖拽功能(可以两棵树之间拖拽) 简单实例
2013/12/08 Javascript
js中函数调用的两种常用方法使用介绍
2014/07/17 Javascript
jquery+json实现动态商品内容展示的方法
2016/01/14 Javascript
javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】
2016/12/15 Javascript
微信小程序 跳转传参数与传对象详解及实例代码
2017/03/14 Javascript
Three.js实现简单3D房间布局
2018/12/30 Javascript
javascript实现导航栏分页效果
2019/06/27 Javascript
JS中比Switch...Case更优雅的多条件判断写法
2019/09/05 Javascript
javascript如何实现create方法
2019/11/04 Javascript
一篇文章看懂JavaScript中的回调
2021/01/05 Javascript
[01:04:35]2018DOTA2亚洲邀请赛 4.3 突围赛 Secret vs VG 第一场
2018/04/04 DOTA
python之验证码生成(gvcode与captcha)
2019/01/02 Python
解决pyqt5中QToolButton无法使用的问题
2019/06/21 Python
django框架auth模块用法实例详解
2019/12/10 Python
Python爬虫库BeautifulSoup的介绍与简单使用实例
2020/01/25 Python
Django 博客实现简单的全文搜索的示例代码
2020/02/17 Python
Python @property及getter setter原理详解
2020/03/31 Python
python如何运行js语句
2020/09/09 Python
北美主要的汽车零部件零售商:AutoShack.com
2019/02/23 全球购物
两道JAVA笔试题
2016/09/14 面试题
入党积极分子批评与自我批评思想汇报
2014/09/14 职场文书
检察院起诉意见书
2015/05/20 职场文书
优秀创业计划书分享
2019/07/19 职场文书
导游词之西安骊山
2019/12/20 职场文书
python tqdm用法及实例详解
2021/06/16 Python
详解python的异常捕获
2022/03/03 Python