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はクソ!

コメント