python實(shí)現(xiàn)數(shù)據(jù)圖表
平時(shí)壓力測(cè)試,生成一些數(shù)據(jù)后分析,直接看 log 不是很直觀,前段時(shí)間看到公司同事分享了一個(gè)繪制圖表python 模塊 : plotly, 覺(jué)得很實(shí)用,利用周末時(shí)間熟悉下。

plotly
plotly 主頁(yè) : https://plot.ly/python/
安裝
在 ubuntu 環(huán)境下,安裝 plotly 很簡(jiǎn)單
python 版本2.7+
$ sudo pip install plotly
繪圖
在 plotly 網(wǎng)站注冊(cè)后,可以直接將生成的圖片保存到網(wǎng)站上,便于共享保存。
這里使用離線的接口,生成的 html 保存在本地文件
繪制直線圖
先隨便搞一組數(shù)據(jù)用來(lái)繪制圖表
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
通過(guò)上述腳本,獲取每秒鐘網(wǎng)卡的3個(gè)數(shù)據(jù),記錄文本,利用 ploty 按時(shí)間繪制成直線圖,實(shí)現(xiàn)如下:
#!/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 = []
# 構(gòu)建 time - rx 數(shù)據(jù)關(guān)系,折線圖
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)
# 設(shè)置圖表布局
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()

相關(guān)文章
Python Django簡(jiǎn)單實(shí)現(xiàn)session登錄注銷(xiāo)過(guò)程詳解
這篇文章主要介紹了Python Django簡(jiǎn)單實(shí)現(xiàn)session登錄注銷(xiāo)過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08
Python數(shù)據(jù)可視化之基于pyecharts實(shí)現(xiàn)的地理圖表的繪制
今天給大家?guī)?lái)的是Python的相關(guān)知識(shí),文章圍繞著pyecharts繪制地理圖表展開(kāi),文中有非常詳細(xì)的代碼示例及介紹,需要的朋友可以參考下2021-06-06
python__new__內(nèi)置靜態(tài)方法使用解析
這篇文章主要介紹了python__new__內(nèi)置靜態(tài)方法使用解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-01-01
在Mac下使用python實(shí)現(xiàn)簡(jiǎn)單的目錄樹(shù)展示方法
今天小編就為大家分享一篇在Mac下使用python實(shí)現(xiàn)簡(jiǎn)單的目錄樹(shù)展示方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-11-11
Python導(dǎo)包模塊報(bào)錯(cuò)的問(wèn)題解決
這篇文章主要介紹了Python導(dǎo)包模塊報(bào)錯(cuò)的問(wèn)題解決,文章圍繞主題相關(guān)內(nèi)容詳細(xì)介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-03-03
詳解從Django Rest Framework響應(yīng)中刪除空字段
這篇文章主要介紹了詳解從Django Rest Framework響應(yīng)中刪除空字段,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-01-01
利用Python腳本生成sitemap.xml的實(shí)現(xiàn)方法
最近項(xiàng)目中需要用腳本生成sitemap,中間學(xué)習(xí)了一下sitemap的格式和lxml庫(kù)的用法。把結(jié)果記錄一下,方便以后需要直接拿來(lái)用。下面這篇文章主要介紹了利用Python腳本生成sitemap.xml的實(shí)現(xiàn)方法,需要的朋友可以參考借鑒,一起來(lái)看看吧。2017-01-01

