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跳出循环语句continue与break的区别
Aug 25 Python
python 全局变量的import机制介绍
Sep 07 Python
Python使用Matplotlib实现雨点图动画效果的方法
Dec 23 Python
Python 实现两个列表里元素对应相乘的方法
Nov 14 Python
使用memory_profiler监测python代码运行时内存消耗方法
Dec 03 Python
selenium获取当前页面的url、源码、title的方法
Jun 12 Python
基于Django静态资源部署404的解决方法
Jul 28 Python
pytorch神经网络之卷积层与全连接层参数的设置方法
Aug 18 Python
详解使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件
Aug 23 Python
Python脚本实现监听服务器的思路代码详解
May 28 Python
Python3+RIDE+RobotFramework自动化测试框架搭建过程详解
Sep 23 Python
python 算法题——快乐数的多种解法
May 27 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
收听短波不可能有声音清晰的品质吗
2021/03/01 无线电
PHP错误和异长常处理总结
2014/03/06 PHP
实现在同一方法中获取当前方法中新赋值的session值解决方法
2014/06/26 PHP
php实现按指定大小等比缩放生成上传图片缩略图的方法
2014/12/15 PHP
PHP中的命名空间详细介绍
2015/07/02 PHP
php远程下载类分享
2016/04/13 PHP
php_pdo 预处理语句详解
2016/11/21 PHP
在IE6下发生Internet Explorer cannot open the Internet site错误
2010/06/21 Javascript
浅析jquery的js图表组件highcharts
2014/03/06 Javascript
jQuery.lazyload+masonry改良图片瀑布流代码
2014/06/20 Javascript
JavaScript中匿名、命名函数的性能测试
2014/09/04 Javascript
基于JS实现翻书效果的页面切换样式
2017/02/16 Javascript
vue实现文件上传功能
2018/08/13 Javascript
Vue实现移动端拖拽交换位置
2020/07/29 Javascript
vue中重定向redirect:‘/index‘,不显示问题、跳转出错的完美解决
2020/09/28 Javascript
python网络编程学习笔记(九):数据库客户端 DB-API
2014/06/09 Python
Python3实现简单可学习的手写体识别(实例讲解)
2017/10/21 Python
Python实现基于TCP UDP协议的IPv4 IPv6模式客户端和服务端功能示例
2018/03/22 Python
python跳过第一行快速读取文件内容的实例
2018/07/12 Python
python调用百度语音识别api
2018/08/30 Python
pyqt5 QProgressBar清空进度条的实例
2019/06/21 Python
python安装第三方库如xlrd的方法
2020/10/31 Python
Python + opencv对拍照得到的图片进行背景去除的实现方法
2020/11/18 Python
python+selenium爬取微博热搜存入Mysql的实现方法
2021/01/27 Python
Jupyter安装拓展nbextensions及解决官网下载慢的问题
2021/03/03 Python
Aquatalia官网:意大利著名鞋履品牌
2019/09/26 全球购物
戴尔荷兰官方网站:Dell荷兰
2020/10/04 全球购物
致长跑运动员加油稿
2014/02/20 职场文书
表彰会主持词
2014/03/26 职场文书
三峡大坝导游词
2015/01/31 职场文书
2015学校年度工作总结
2015/05/11 职场文书
高老头读书笔记
2015/06/30 职场文书
2015选调生工作总结
2015/07/24 职场文书
党校团干班培训心得体会
2016/01/06 职场文书
使用Redis实现实时排行榜功能
2021/07/02 Redis
Java 实现限流器处理Rest接口请求详解流程
2021/11/02 Java/Android