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控制台显示时钟的示例
Feb 24 Python
Python文件处理
Feb 29 Python
python定向爬取淘宝商品价格
Feb 27 Python
python使用jieba实现中文分词去停用词方法示例
Mar 11 Python
使用python生成目录树
Mar 29 Python
python爬虫 urllib模块反爬虫机制UA详解
Aug 20 Python
解决pytorch-yolov3 train 报错的问题
Feb 18 Python
使用python检查yaml配置文件是否符合要求
Apr 09 Python
Python爬虫实现百度翻译功能过程详解
May 29 Python
pyCharm 设置调试输出窗口中文显示方式(字符码转换)
Jun 09 Python
python中温度单位转换的实例方法
Dec 27 Python
yolov5返回坐标的方法实例
Mar 17 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
在IIS上安装PHP4.0正式版
2006/10/09 PHP
PHP实现长文章分页实例代码(附源码)
2016/02/03 PHP
ThinkPHP中where()使用方法详解
2016/04/19 PHP
juqery 学习之四 筛选查找
2010/11/30 Javascript
javascript中的注释使用与注意事项小结
2011/09/20 Javascript
Flex通过JS获取客户端IP和计算机名的实例代码
2013/11/21 Javascript
利用jQuery简单实现产品展示图片左右滚动功能(示例代码)
2014/01/02 Javascript
$("").click与onclick的区别示例介绍
2014/09/25 Javascript
浅谈javascript中return语句
2015/07/15 Javascript
JavaScript手机振动API
2016/06/11 Javascript
Angular2库初探
2017/03/01 Javascript
React服务端渲染(总结)
2017/07/01 Javascript
JS实现基于Sketch.js模拟成群游动的蝌蚪运动动画效果【附demo源码下载】
2017/08/18 Javascript
一个基于react的图片裁剪组件示例
2018/04/18 Javascript
JavaScript设计模式之工厂模式简单实例教程
2018/07/03 Javascript
迅速了解一下ES10中Object.fromEntries的用法使用
2019/03/05 Javascript
个人小程序接入支付解决方案
2019/05/23 Javascript
在vue中实现清除echarts上次保留的数据(亲测有效)
2020/09/09 Javascript
[03:28]2014DOTA2国际邀请赛 EG战队官方纪录片
2014/07/21 DOTA
[44:40]2018DOTA2亚洲邀请赛3月30日 小组赛A组Liquid VS OG
2018/03/31 DOTA
python检测服务器是否正常
2014/02/16 Python
Python减少循环层次和缩进的技巧分析
2016/03/15 Python
解决python "No module named pip" 的问题
2018/10/13 Python
Numpy中对向量、矩阵的使用详解
2019/10/29 Python
tensorflow 获取checkpoint中的变量列表实例
2020/02/11 Python
python使用gdal对shp读取,新建和更新的实例
2020/03/10 Python
美国体育用品商店:Paragon Sports
2017/10/08 全球购物
竞选班长自荐书范文
2014/03/09 职场文书
酒店总经理岗位职责
2014/03/17 职场文书
2014年党员公开承诺践诺书
2014/03/25 职场文书
合同协议书格式
2014/04/18 职场文书
敬老院活动总结
2014/04/28 职场文书
国庆节演讲稿
2014/05/27 职场文书
Redis安装启动及常见数据类型
2021/04/14 Redis
详解Python+OpenCV进行基础的图像操作
2022/02/15 Python
flex弹性布局详解
2022/03/20 HTML / CSS