pikesaku’s blog

個人的なプログラム勉強メモです。記載内容について一切の責任は持ちません。

jubatus anomalyのnum_rules動作検証(テストデータ分布状況出力ツール)

説明

データを受けてヒストグラムとパイチャートを出力
一次元データのみ対応。

dist_disp.py

# -*- coding: utf-8 -*-

import matplotlib.pyplot as plt


def make_pie_data(data):
    pie_data = dict()
    for i in data:
        pie_data[i] = data.count(i)
    return pie_data


def display_dist(data):
    # ヒストグラム生成
    plt.subplot(2, 1, 1)
    plt.hist(data, bins=50)
    plt.title(u'Input data histgram')

    # パイチャート生成
    pie_data = make_pie_data(data)
    plt.subplot(2, 1, 2)
    plt.pie(list(pie_data.values()), labels=list(pie_data.keys()))
    plt.title(u'Input data pie chart')

    # タイトルの被りを防ぐ
    plt.tight_layout()
    plt.show()


def get_data():
    data = list()
    while True:
        try:
            line = float(input().strip())
            data.append(line)
        except EOFError:
            break
    return data


if __name__ == '__main__':
    data = get_data()
    if data:
        display_dist(data)

使い方例

$ (seq 1 10;echo 1; echo 3) | python ./disp_dist.py

f:id:pikesaku:20170709214433p:plain