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はクソ!
コメント