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 相关文章推荐
30分钟搭建Python的Flask框架并在上面编写第一个应用
Mar 30 Python
python连接mysql实例分享
Oct 09 Python
解决Pycharm运行时找不到文件的问题
Oct 29 Python
PyTorch中permute的用法详解
Dec 30 Python
tensorflow:指定gpu 限制使用量百分比,设置最小使用量的实现
Feb 06 Python
解决pycharm不能自动补全第三方库的函数和属性问题
Mar 12 Python
Python字典fromkeys()方法使用代码实例
Jul 20 Python
Python基于Serializer实现字段验证及序列化
Nov 04 Python
python 批量下载bilibili视频的gui程序
Nov 20 Python
Python利用myqr库创建自己的二维码
Nov 24 Python
用python计算文件的MD5值
Dec 23 Python
Python List remove()实例用法详解
Aug 02 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
SONY ICF-SW55的电路分析
2021/03/02 无线电
一个简单实现多条件查询的例子
2006/10/09 PHP
PHP多文件上传类实例
2015/03/07 PHP
Linux系统下php获得系统分区信息的方法
2015/03/30 PHP
PHP入门教程之正则表达式基本用法实例详解(正则匹配,搜索,分割等)
2016/09/11 PHP
php 删除一维数组中某一个值元素的操作方法
2018/02/01 PHP
ie 调试javascript的工具
2009/04/29 Javascript
新老版本juqery获取radio对象的方法
2010/03/01 Javascript
iframe父页面获取子页面参数的方法
2014/02/21 Javascript
jQuery中appendTo()方法用法实例
2015/01/08 Javascript
jQuery实现模拟marquee标签效果
2015/07/14 Javascript
jquery模拟实现鼠标指针停止运动事件
2016/01/12 Javascript
js表单元素checked、radio被选中的几种方法(详解)
2016/08/22 Javascript
js图片轮播手动切换特效
2017/01/12 Javascript
jquery easyui dataGrid动态改变排序字段名的方法
2017/03/02 Javascript
从零开始学习Node.js系列教程四:多页面实现的数学运算示例
2017/04/13 Javascript
JS实现点击链接切换显示隐藏内容的方法
2017/10/19 Javascript
[38:39]完美世界DOTA2联赛循环赛 IO vs GXR BO2第二场 11.04
2020/11/05 DOTA
Python中使用Tkinter模块创建GUI程序实例
2015/01/14 Python
Python实现将罗马数字转换成普通阿拉伯数字的方法
2017/04/19 Python
python如何实现反向迭代
2018/03/20 Python
有关Python的22个编程技巧
2018/08/29 Python
利用Django模版生成树状结构实例代码
2019/05/19 Python
详解python中的生成器、迭代器、闭包、装饰器
2019/08/22 Python
CentOS 7如何实现定时执行python脚本
2020/06/24 Python
python如何获得list或numpy数组中最大元素对应的索引
2020/11/16 Python
CSS3中Color的一些特性介绍
2012/05/27 HTML / CSS
详解CSS3中的box-sizing(content-box与border-box)
2019/04/19 HTML / CSS
北京捷通华声语音技术有限公司Java软件工程师笔试题
2012/04/10 面试题
高校生生产实习自我鉴定
2013/09/21 职场文书
写自荐信有哪些不宜?
2013/10/17 职场文书
奶茶店创业计划书
2014/08/14 职场文书
Python基础之数据类型知识汇总
2021/05/18 Python
5分钟教你docker安装启动redis全教程(全新方式)
2021/05/29 Redis
golang操作rocketmq的示例代码
2022/04/06 Golang
永中文档在线转换预览基于nginx配置部署方案
2022/06/10 Servers