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 相关文章推荐
pycharm 使用心得(四)显示行号
Jun 05 Python
python编程开发之类型转换convert实例分析
Nov 13 Python
一步步解析Python斗牛游戏的概率
Feb 12 Python
基于Python数据可视化利器Matplotlib,绘图入门篇,Pyplot详解
Oct 13 Python
scrapy爬虫完整实例
Jan 25 Python
Java实现的执行python脚本工具类示例【使用jython.jar】
Mar 29 Python
python爬虫 Pyppeteer使用方法解析
Sep 28 Python
python系列 文件操作的代码
Oct 06 Python
Python namedtuple命名元组实现过程解析
Jan 08 Python
Scrapy项目实战之爬取某社区用户详情
Sep 17 Python
python 根据列表批量下载网易云音乐的免费音乐
Dec 03 Python
详解如何使用Pytest进行自动化测试
Jan 14 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获取url字符串截取路径的文件名和扩展名的函数
2010/01/22 PHP
php array_walk() 数组函数
2011/07/12 PHP
PHP文件操作实现代码分享
2011/09/01 PHP
php+ajax无刷新上传图片实例代码
2015/11/17 PHP
php实现的操作excel类详解
2016/01/15 PHP
PHP快速排序算法实现的原理及代码详解
2019/04/03 PHP
让焦点自动跳转
2006/07/01 Javascript
IE中jquery.form中ajax提交没反应解决方法分享
2012/09/11 Javascript
jQuery简易图片放大特效示例代码
2014/06/09 Javascript
jQuery中addClass()方法用法实例
2015/01/05 Javascript
10条建议帮助你创建更好的jQuery插件
2015/05/18 Javascript
js判断PC端与移动端跳转
2020/12/24 Javascript
详解vue.js+UEditor集成 [前后端分离项目]
2017/07/07 Javascript
老生常谈javascript的面向对象思想
2017/08/22 Javascript
webpack打包js文件及部署的实现方法
2017/12/18 Javascript
对angularjs框架下controller间的传值方法详解
2018/10/08 Javascript
vue.js封装switch开关组件的操作
2020/10/26 Javascript
python中使用pyhook实现键盘监控的例子
2014/07/18 Python
跟老齐学Python之用Python计算
2014/09/12 Python
Python获取服务器信息的最简单实现方法
2015/03/05 Python
浅析python继承与多重继承
2018/09/13 Python
Python 字节流,字符串,十六进制相互转换实例(binascii,bytes)
2020/05/11 Python
安装Anaconda3及使用Jupyter的方法
2020/10/27 Python
css3实现3d旋转动画特效
2015/03/10 HTML / CSS
CSS3的RGBA中关于整数和百分比值的转换
2015/08/04 HTML / CSS
DVF官方网站:美国时装界尊尚品牌
2017/08/29 全球购物
德国药房apodiscounter中文官网:德国排名前三的网上药店
2019/06/03 全球购物
收银出纳员岗位职责
2014/02/23 职场文书
幼儿园教师教育感言
2014/02/28 职场文书
法律七进实施方案
2014/03/15 职场文书
个人事迹材料怎么写
2014/12/30 职场文书
员工福利申请报告
2015/05/15 职场文书
开学第一周总结
2015/07/16 职场文书
MySQL 四种连接和多表查询详解
2021/07/16 MySQL
OpenCV实现普通阈值
2021/11/17 Java/Android
一次线上mongo慢查询问题排查处理记录
2022/03/18 MongoDB