python 数据图表呈现

@(python)

平时压力测试,生成一些数据后分析,直接看 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()

pie_chart

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏贾志刚-OpenCV学堂

干货 | 基于OpenCV Python实现二维码检测与识别

特别要关注的是图中三个黑色正方形区域,它们就是用来定位一个二维码的最重要的三个区域,我们二维码扫描不检测首先要做的就是要发现这三个区域,如果找到这个三个区域,我...

2K20
来自专栏葡萄城控件技术团队

Spread for Windows Forms高级主题(1)---底层模型

底层模型概述 Spread控件提供了很多模型,这些模型提供了自定义控件的基础架构。同时,这些模型作为底层模板,派生出了更多通用的快捷对象。 在不使用Spread...

20460
来自专栏DeveWork

WordPress在RSS Feed 中输出自定义特色图像(缩略图)

估计不少网友是在了解到Google Reader 关闭的消息后才知道RSS这种东西的,本站DeveWork. com 曾经有过《WordPress在RSS Fe...

271100
来自专栏林德熙的博客

WPF 解决弹出模态窗口关闭后,主窗口不在最前

本文告诉大家如何解决这个问题,在 WPF 的软件,弹出一个模态窗口。使用另一个窗口在模态窗口前面。从任务栏打开模态窗口。关闭模态窗口。这时发现,主窗口会在刚才使...

54820
来自专栏编程

厉害了,用Python一行代码实现人脸识别

摘要: 1行代码实现人脸识别,1. 首先你需要提供一个文件夹,里面是所有你希望系统认识的人的图片。其中每个人一张图片,图片以人的名字命名。2. 接下来,你需要准...

30480
来自专栏测试开发架构之路

前端之bootstrap模态框

  简介:模态框(Modal)是覆盖在父窗体上的子窗体。通常,目的是显示来自一个单独的源的内容,可以在不离开父窗体的情况下有一些互动。子窗体可提供信息、交互等。...

38750
来自专栏GIS讲堂

js+css实现模态层效果

在做web前端的时候,有些时候会涉及到模态层,在此提供一种实现思路,希望对大家有用。先贴效果吧:

48040
来自专栏代码小睿

web桌面程序之图标拖动排序的分析

  在web桌面程序里,图标拖动并重新排序是个比较常见的功能。这个功能我之前反复修改了好几遍,现在终于整理出了比较理想的解决思路,决定拿出来分享下。   这一功...

20090
来自专栏Python绿色通道

Python数据可视化分析(一)

个人前面也说了强烈建议使用Pycharm作为Python初学者的首选IDE,主要还是因为其强大的插件功能,很多环境都能一键安装完成,像本文的matplotlib...

28250
来自专栏CreateAMind

InfoGAN修改训练人脸数据集celebA的过程记录

22810

扫码关注云+社区

领取腾讯云代金券