pythonで描く棒グラフ
pythonで棒グラフを描く場合、matplotlibもしくは、seabornのどちらかで描くことが多いと思います。微妙に書き方が違う部分があるのでまとめていこうと思います。
Contents
matplotlibで描く折れ線グラフ
import numpy as np #使うパッケージをimportする import matplotlib.pyplot as plt import pandas as pd import numpy as np from sklearn.datasets import load_iris
iris = load_iris() #テストデータとしてirisをロード #データフレームを作成 columnsでカラム名を指定する df = pd.DataFrame(iris.data, columns=iris.feature_names) print(df.head()) #データを表示する
シンプルな図
x = np.array([0,1,2,3,4,5]) y = np.array([0,2,4,6,8,10]) plt.bar(x,y) #プロットする plt.show() #プロットした図を表示する jupyterはなくてOK
細かな設定
x = np.array([0,1,2,3,4,5]) y = np.array([0,2,4,6,8,10]) labels=["A","B","C","D","E","F"] yerr_list=[0,1,1,1,1,1] plt.bar(x, #X軸の設定 y, #Y軸の設定 width=1, #棒グラフの太さ linewidth=1, #棒グラフの枠線の太さ color="red", #棒グラフの色 edgecolor='k', #棒グラフの枠線の色 tick_label=labels, #X軸ラベルの指定 align="center", #軸のどこで合わせるか center or edge yerr=yerr_list, #エラーバー値の設定 ecolor="black", #エラーバーの色 capsize=10) #エラーバーの頭のサイズ plt.show()
横棒のプロット
x = np.array([0,1,2,3,4,5]) y = np.array([0,2,4,6,8,10]) labels=["A","B","C","D","E","F"] plt.barh(x, #X軸の設定 y, #Y軸の設定 tick_label=labels) #X軸ラベルの指定 plt.show()
横並びプロット
x = np.array([0,1,2,3,4,5]) y_1 = np.array([0,2,4,6,8,10]) y_2 = np.array([3,3,3,3,3,3]) width=0.3 plt.bar(x-width/2,y_1,width,align="center") plt.bar(x+width/2,y_2,width,align="center") plt.show()
seabornで描く棒グラフ
sns.barplot(x="day", y="total_bill", data=tips) #データをロード
細かな設定
sns.barplot(x="day", #X値 y="total_bill", #Y値 order=["Sun","Thur","Fri","Sat"], #X軸の順番 ci='sd', #sdで標準偏差、Noneでエラーバーを消す、数字で信頼区間 errcolor='r', # エラーバーの色を設定 capsize=0.01, #エラーバーの頭の大きさ data=tips) #対象とするデータの指定
横棒
X軸とY軸を入れ替えると縦横が逆になる。inputデータを考えておく必要性あり!
sns.barplot(x="total_bill", y="day", data=tips)
横並びプロット
hueで分割するワードを指定する。この際も、inputデータから形式を整えておくと楽になりそう?
sns.barplot(x="day", y="total_bill" ,hue='time', data=tips)
まとめ
Seabornを使う場合は、inputにするデータをあらかじめ加工しておくと、図の作成がしやすそう!