这里有新鲜出炉的Python教程,程序狗速度看过来!
Python 是一种面向对象、解释型计算机程序设计语言,由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年。Python语法简洁而清晰,具有丰富和强大的类库。它常被昵称为胶水语言,它能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。
plotly是现代平台的敏捷商业智能和数据科学库,它作为一款开源的绘图库,可以应用于Python、R、MATLAB、Excel、JavaScript和jupyter等多种语言,主要使用的js进行图形绘制,实现过程中主要就是调用plotly的函数接口,底层实现完全被隐藏,便于初学者的掌握。
平时压力测试,生成一些数据后分析,直接看 log 不是很直观,前段时间看到公司同事分享了一个绘制图表python 模块 : plotly, 觉得很实用,利用周末时间熟悉下。
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()
生成图表如下所示 :
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()
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()
来源: http://www.phperz.com/article/17/1029/351107.html