python 數(shù)據(jù)圖表呈現(xiàn)

@(python)

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

plotly

plotly 主頁 : https://plot.ly/python/

安裝

在 ubuntu 環(huán)境下,安裝 plotly 很簡單
python 版本2.7+

$ sudo pip install plotly

繪圖

在 plotly 網(wǎng)站注冊后,可以直接將生成的圖片保存到網(wǎng)站上,便于共享保存。
這里使用離線的接口,生成的 html 保存在本地文件

繪制直線圖

先隨便搞一組數(shù)據(jù)用來繪制圖表

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

通過上述腳本,獲取每秒鐘網(wǎng)卡的3個數(shù)據(jù),記錄文本,利用 ploty 按時間繪制成直線圖,實現(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()

pie_chart
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容