Matplotlib 棒グラフで列が増えても対応できるコードを書く。

matplotlib クソすぎわろた。 いやぶっちゃけ笑えない。

スポンサーリンク

棒グラフで列が増えても対応できるコードを書く。

以下サンプルコード。

import pandas as pd
import matplotlib.pyplot as plt

def matlib_bar(data_frame):

    # width
    w = 0.1

    # index
    _x = [i for i in data_frame.index]

    count = 0

    columns = data_frame.columns
    if columns[0] == "name" or columns[0] == "label":
        plt.xticks(_x, list(data_frame[columns[0]]))

    data_frame = data_frame.select_dtypes(include='number')
    for column in data_frame.columns:
        if count == 0:
            new_x = [x+w*count for x in _x]
            plt.bar(new_x, list(data_frame[column]), width=w, label=column)
            count += 1
            continue
        new_x = [x+w*count for x in _x]
        plt.bar(new_x, list(data_frame[column]), align="center", width=w, label=column)
        count += 1
    plt.legend(loc="best")
    plt.show()

df = pd.read_csv('pepole.csv')
columns = df.columns
# 初期チェック
if columns[0] == "name" or columns[0] == "labels":
    matlib_bar(df)
else:
    print("you select csv first_column not name or label")

なんでこんな思考錯誤してコードかかなあかんの?ただのばか。matplotlibとかもう使わねえ!!!

エクセルだと5秒だぜ?。

スポンサーリンク

コードの問題点

matplotlibで棒グラフを複数表示する場合は numpyモジュール を使うのが前提っぽい。生で書いてもいいけど、めちゃくちゃめんどくさい。っていうかそもそもnumpyがあってもめんどくさいし。pandasもなんか型がめんどくさいし。

もしmatplotlibでなにかやるなら、GUIのツールを作るかウェブサービスかなんか作らないとって感じ。というかそのためにコードが公開されてるんでしょうが・・・。

あとなぜか align=’center’ にしてるのに真ん中にこないとか、棒グラフが増えすぎると、widthの値も小さくしなきゃいけないとかで、いろいろ問題ありのコードだけどもうどうでもいい。matplotlibなんて使わない。データさえあればいいんだろたぶん。しらんけど。

雑感

matplotlibはクソ!

コメント

タイトルとURLをコピーしました