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类的专用方法实例分析
Jan 09 Python
Python while、for、生成器、列表推导等语句的执行效率测试
Jun 03 Python
Python备份目录及目录下的全部内容的实现方法
Jun 12 Python
Python三级菜单的实例
Sep 13 Python
python 读入多行数据的实例
Apr 19 Python
使用python实现http及ftp服务进行数据传输的方法
Oct 26 Python
对numpy中的where方法嵌套使用详解
Oct 31 Python
Django多进程滚动日志问题解决方案
Dec 17 Python
通过 Python 和 OpenCV 实现目标数量监控
Jan 05 Python
对python中各个response的使用说明
Mar 28 Python
Ubuntu18.04安装 PyCharm并使用 Anaconda 管理的Python环境
Apr 08 Python
python gui开发——制作抖音无水印视频下载工具(附源码)
Feb 07 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
Laravel 5 框架入门(二)构建 Pages 的管理功能
2015/04/09 PHP
详解PHP防止盗链防止迅雷下载的方法
2017/04/26 PHP
PHP工厂模式的日常使用
2019/03/20 PHP
JavaScript URL参数读取改进版
2009/01/16 Javascript
检测input每次的输入是否合法遇到汉字输入就有问题
2012/05/23 Javascript
.net,js捕捉文本框回车键事件的小例子(兼容多浏览器)
2013/03/11 Javascript
JS的千分位算法实现思路
2013/07/31 Javascript
在JavaScript中判断整型的N种方法示例介绍
2014/06/18 Javascript
jquery取子节点及当前节点属性值的方法
2014/09/09 Javascript
Angular2内置指令NgFor和NgIf详解
2016/08/03 Javascript
[原创]JavaScript语法高亮插件highlight.js用法详解【附highlight.js本站下载】
2016/11/01 Javascript
HTML页面定时跳转方法解析(2种任选)
2016/12/22 Javascript
nodejs中全局变量的实例解析
2017/03/07 NodeJs
Bootstrap标签页(Tab)插件使用方法
2017/03/21 Javascript
详解如何在Vue2中实现组件props双向绑定
2017/03/29 Javascript
详解如何使用babel进行es6文件的编译
2018/05/29 Javascript
react native 仿微信聊天室实例代码
2019/09/17 Javascript
vue+springboot+element+vue-resource实现文件上传教程
2020/10/21 Javascript
详解python eval函数的妙用
2017/11/16 Python
python中验证码连通域分割的方法详解
2018/06/04 Python
python3 中文乱码与默认编码格式设定方法
2018/10/31 Python
Python面向对象思想与应用入门教程【类与对象】
2019/04/12 Python
使用python实现mqtt的发布和订阅
2019/05/05 Python
python实现批量视频分帧、保存视频帧
2019/05/31 Python
把django中admin后台界面的英文修改为中文显示的方法
2019/07/26 Python
Python2和Python3中@abstractmethod使用方法
2020/02/04 Python
Python 解决火狐浏览器不弹出下载框直接下载的问题
2020/03/09 Python
学python需要去培训机构吗
2020/07/01 Python
使用CSS3的背景渐变Text Gradient 创建文字颜色渐变
2014/08/19 HTML / CSS
Html5新标签datalist实现输入框与后台数据库数据的动态匹配
2017/05/18 HTML / CSS
英国演唱会订票网站:Ticket Selection
2018/03/27 全球购物
美国最大的户外装备和服装购物网站:Backcountry
2019/10/15 全球购物
2014年人事行政工作总结
2014/12/03 职场文书
2016年幼儿园万圣节活动总结
2016/04/05 职场文书
Java处理延时任务的常用几种解决方案
2022/06/01 Java/Android
SpringBoot接入钉钉自定义机器人预警通知
2022/07/15 Java/Android