今回は棒グラフを書いて。いろいろなカスタマイズもしてみます。下のグラフは何もカスタマイズしていない状態のグラフです。まずはこれを書いていろいろ変更していきましょう。
棒グラフを書いてみる
上の棒グラフを書く一番簡単な方法はコチラ。matplotlib.pyplot.bart()メソッドを使うことで簡単に書けます。何はともあれ、下のコードを張り付けて実行してみてください。
import numpy as np
x = np.arange(10) #X軸データ
y = np.array([10, 20, 30, 40, 50, 60, 70, 80, 90, 100]) #y軸データ
plt.bar(x, y) #棒グラフ生成
plt.show() #グラフ表示
しかし色を変えたり、2つのグラフを同時に書いたり、違うデータを積み上げたりしたいですよね。それに必要なmatplotlib.pyplot.bart()のパラメータは次の通りとなります。これらを使って棒グラフのカスタマイズをいくつか試してみます。
パラメータ | 説明 |
left (必須) | 各棒の X 軸上の数値 |
height (必須) | 各棒の高さ |
width | 棒の太さ (デフォルト値: 0.8) |
bottom | 各棒の下側の余白 (主に積み上げ棒グラフを出力するために使います) |
color | 棒の色 |
edgecolor | 棒の枠線の色 |
linewidth | 棒の枠線の太さ |
linestype | 棒の枠線のスタイル |
tick_label | X 軸のラベル |
xerr | X 軸方向のエラーバー (誤差範囲) を出力する場合、数値または配列を指定 |
yerr | Y 軸方向のエラーバー (誤差範囲) を出力する場合、数値または配列を指定 |
ecolor | エラーバーの色を値または配列で指定 |
capsize | エラーバーの傘のサイズを指定 |
align | 棒の位置 ’edge’ (垂直方向の場合:左端, 水平方向の場合:下端) または ‘center’ (中央)を指定 (デフォルト値: ‘edge’ ) |
log | True に設定すると、対数目盛で出 力し (デフォルト値: False) |
横軸にラベルを付ける
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(10) # X軸データ
y = np.array([10, 20, 30, 40, 50, 60, 70, 80, 90, 100])# y軸データ
labels = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']
plt.bar(x, y, tick_label=labels, align="center")
plt.show()# グラフ表示
2つのデータで積み上げ棒グラフを作る
x = np.arange(5) # X軸データ
y1= np.array([10, 20, 30, 40, 50])# y1データ
y2 = np.array([20, 10, 0, 10, 20])# y2データ
label = [ "Banana", "Orange","Apple", "Strawberry", "Grape"]
p1 = plt.bar(x, y1, color="red", tick_label=label, align="center")
p2 = plt.bar(x, y2, bottom=y1, color="blue", tick_label=label, align="center")
plt.legend((p1[0], p2[0]), ("Shop A", "Shop B"))
2つのグラフを並べる
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(5) # X軸データ
y1= np.array([10, 20, 30, 40, 50])# y1データ
y2 = np.array([20, 10, 0, 10, 20])# y2データ
label = [ "Banana", "Orange","Apple", "Strawberry", "Grape"]
p1 = plt.bar(x, y1, color="red", align="edge", width=-0.3, tick_label=label)
p2 = plt.bar(x, y2, color="blue", align="edge", width= 0.3, tick_label=label)
plt.legend((p1[0], p2[0]), ("Shop A", "Shop B"))