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测试驱动开发实例
Oct 08 Python
Python设计足球联赛赛程表程序的思路与简单实现示例
Jun 28 Python
Python输出带颜色的字符串实例
Oct 10 Python
详解Django之auth模块(用户认证)
Apr 17 Python
在NumPy中创建空数组/矩阵的方法
Jun 15 Python
python交换两个变量的值方法
Jan 12 Python
对YOLOv3模型调用时候的python接口详解
Aug 26 Python
pywinauto自动化操作记事本
Aug 26 Python
计算pytorch标准化(Normalize)所需要数据集的均值和方差实例
Jan 15 Python
Python+redis通过限流保护高并发系统
Apr 15 Python
浅谈Pycharm的项目文件名是红色的原因及解决方式
Jun 01 Python
Pytest中skip和skipif的具体使用方法
Jun 30 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/10/15 PHP
PHP过滤黑名单关键字的方法
2014/12/01 PHP
php建立Ftp连接的方法
2015/03/07 PHP
php+ajax无刷新分页实例详解
2015/12/07 PHP
Redis构建分布式锁
2017/03/28 PHP
40个有创意的jQuery图片和内容滑动及弹出插件收藏集之三
2012/01/03 Javascript
写自已的js类库需要的核心代码
2012/07/16 Javascript
如何阻止复制剪切和粘贴事件为了表单内容的安全
2013/05/23 Javascript
JavaScript实现复制功能各浏览器支持情况实测
2013/07/18 Javascript
JS实现点击按钮控制Div变宽、增高及调整背景色的方法
2015/08/05 Javascript
使用impress.js制作幻灯片
2015/09/09 Javascript
Node.js中JavaScript操作MySQL的常用方法整理
2016/03/01 Javascript
Node.js的Koa框架上手及MySQL操作指南
2016/06/13 Javascript
Bootstrap表单布局
2016/07/19 Javascript
jQuery简单获取DIV和A标签元素位置的方法
2017/02/07 Javascript
详解使用JS如何制作简单的ASCII图与单极图
2017/03/31 Javascript
Nuxt.js实现校验访问浏览器类型的中间件
2018/08/24 Javascript
教你完全理解ReentrantLock重入锁
2019/06/03 Javascript
windows下create-react-app 升级至3.3.1版本踩坑记
2020/02/17 Javascript
[41:12]Liquid vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.24
2019/09/10 DOTA
Python制作CSDN免积分下载器
2015/03/10 Python
Python实现简易版的Web服务器(推荐)
2018/01/29 Python
Python爬虫实现(伪)球迷速成
2018/06/10 Python
Python3按一定数据位数格式处理bin文件的方法
2019/01/24 Python
使用pandas 将DataFrame转化成dict
2019/12/10 Python
用sleep间隔进行python反爬虫的实例讲解
2020/11/30 Python
基于Html5 canvas实现裁剪图片和马赛克功能及又拍云上传图片 功能
2019/07/09 HTML / CSS
IWOOT美国:新奇的小玩意
2018/04/27 全球购物
int *p=NULL和*p= NULL有什么区别
2014/10/23 面试题
爱岗敬业演讲稿范文
2014/01/14 职场文书
后备干部考察材料
2014/02/12 职场文书
2014年巴西世界杯口号
2014/06/05 职场文书
好的促销活动方案
2014/08/21 职场文书
房屋登记授权委托书范本
2014/10/09 职场文书
幼儿园教师个人工作总结2015
2015/05/12 职场文书
2019毕业论文致谢词
2019/06/24 职场文书