Matplotlib & Seaborn 入門講座 | 04.【基礎編】棒グラフ、積み上げ棒グラフ、2変量棒グラフ

こんにちは。キノコードです。
この動画ではmatplotlibで棒グラフ、積み上げ棒グラフ、2変量棒グラフなどの作成方法について説明します。
縦方向の棒グラフだけではなく、水平方向の棒グラフについても説明をします。

この動画では、簡単なデータを使って棒グラフを作成していきます。
次のレッスンでは、実践的な売上データを使って、ファイルからデータを読み込み棒グラフを作成していきます。
つまり、この動画は基礎編。次の動画は実践編になります。
実践編を解説絵をして、仕事ですぐに使える方法や、そのイメージをお伝えできればと思っています。

また、このMatplotlib & Seaborn 入門コースの他に、可視化の技術を使った株やFXのデータ分析をする動画も作っています。
今、再生リストが出ているはずです。
より実践的な可視化を学びたい方は、そちらをご覧ください。

それでは、レッスンをはじめていきましょう。

レッスンで使ったファイルはこちら

■保存方法
Mac:右クリック⇒「リンク先を別名で保存」
Windows:右クリック⇒「名前を付けてリンク先を保存」

Jupyter Labのファイルはこちら

簡単な棒グラフ1

import matplotlib.pyplot as plt
%matplotlib inline

それでは、ライブラリをインポートする記述をします。
matplotlibの中のpyplotを読み込みます。
asを記述するとライブラリ名を好きな名前で使うことができます。
従って、matplotlibをpltという名前でインポートします。
また、jupyterのnotebookの中でグラフを出力させる記述をします。
パーセントの後に、matplotlib inlineと記述します。
実行します。
インポートが完了しました。

簡単な棒グラフ

volume = [10, 20, 30, 20, 10]
labels = ['A', 'B', 'C', 'D', 'E']

plt.bar(labels, volume)
plt.show()

それでは、簡単な棒グラフを作成してみましょう。
volumeという変数に、リストで数値を代入します。
labelsという変数には、volumeで渡したリストと同じ個数のラベルを記述します。
次に、pltドットbar丸括弧と書いて、棒グラフを作成する記述をしていきます。
丸括弧の中の第一引数には、x軸の値として先ほど設定したlabelsを渡します。
続けて第二引数には、y軸の値としてvolumeを渡します。
最後に、pltドットshow丸括弧を記述します。
実行します。
棒グラフを作成できました。

バー太さ変更

plt.bar(labels, volume, width=0.5)  
plt.show()

次に、棒グラフの太さを変更してみましょう。
太さはwidthで変更することができます。
pltドットbar丸括弧の中に、widthイコールを記述し、0~1で好きな値を設定できます。
デフォルトでのサイズは0.8になっています。
ここでは、0.5としてみましょう。
実行します。
棒グラフの太さを変更できました。

plt.bar(labels, volume, width=1.0)  
plt.show()

widthを1としてみたらどうでしょうか。
実行します。
グラフの隙間がなくなりました。

水平棒グラフ

plt.barh(labels,volume)
plt.show()

pltドットbarの部分を、barhとすることで、水平方向の棒グラフを作成できます。
水平を英語でhorizontalと言います。
hは、horizontalの略です。
実行します。
水平方向の棒グラフを作成できました。

カラー変更

plt.bar(labels, volume, color='#A9C3AD')  
plt.show()

次に、グラフの色を変更してみましょう。
pltドットbarの丸括弧の中にcolorイコールと記述し、好きな色を指定できます。
実行します。
グラフの色を変更できました。

エッジ(枠線)を付ける

plt.bar(labels, volume, color='#A9C3AD', edgecolor='blue')  
plt.show()

グラフに枠線を付けることもできます。
pltドットbarの丸括弧の中にedgecolorと記述しイコール、好きな色の枠線を指定できます。
ここではblueとします。
実行します。
グラフに枠線を付けることができました。

エッジライン(枠線)太さ変更

plt.bar(labels, volume, color='#A9C3AD', edgecolor='blue', linewidth=3)  
plt.show()

linewidthで枠線の太さを変更できます。
ここでは3を指定してみます。
実行します。
枠線の太さを変更できました。

軸ラベル付与

plt.bar(labels, volume, color='#A9C3AD', edgecolor='blue')
plt.xlabel('Category')
plt.ylabel('Volume')
plt.show()

x軸とy軸に名前を付けてみましょう。
この名前のことをラベルと言います。
まず、x軸のラベルの記述をします。
pltドットxlabelと書いて丸括弧、丸括弧の中に好きな名前を記述しシングルコーテーションでくくります。
y軸のラベルも同様にylabelで設定できます。
実行します。
x軸とy軸にラベルを追加できました。

グラフタイトル付与

plt.bar(labels, volume, color='#A9C3AD', edgecolor='blue')
plt.xlabel('Category')
plt.ylabel('Volume')
plt.title('BarGraph')
plt.show()

グラフにタイトルを付けてみましょう。
pltドットtitleと書いて丸括弧、丸括弧の中に好きな名前を記述しシングルコーテーションでくくります。
実行します。
グラフにタイトルを付けることができました。

figサイズ変更

plt.figure(figsize=(10,6))
plt.bar(labels, volume, color='#A9C3AD', edgecolor='blue')
plt.xlabel('Category')
plt.ylabel('Volume')
plt.title('BarGraph')
plt.show()

次に、グラフの大きさを変更してみましょう。
pltドットfigureと書いて丸括弧、丸括弧の中にfigsizeと記述します。
横の大きさを10、縦の大きさを6としてみます。
実行します。
グラフの大きさを変更できました。

#グラフ保存
plt.figure(figsize=(10,6))
plt.bar(labels, volume, color='#A9C3AD', edgecolor='blue')
plt.xlabel('Category')
plt.ylabel('Volume')
plt.title('BarGraph')
plt.savefig('bargraph.png')

作成したグラフを保存してみましょう。
pltドットsavefigと書いて丸括弧、丸括弧の中に好きなファイル名を記述しシングルコーテーションでくくります。
今回はpng形式で保存してみます。
他にも、jpegやpdfを指定できます。
実行します。
グラフを保存できました。

2変量棒グラフ

labels = ['A','B','C','D','E']
man = [35,45,25,15,20]
woman = [20,25,30,40,30]

plt.bar(labels, man, width=0.4, align='edge', color='darkcyan')
plt.bar(labels, woman, width=0.4, align='center', color='coral')

plt.show()

次に、2つのデータを並べてグラフにしてみましょう。
今回は、男性と女性の人数をグラフにしてみます。
labelsという変数に、5つのラベルをリストで代入します。
続いて、manとwomanという変数に、好きな数字をリストで5つ代入します。
次に、pltドットbarと記述し丸括弧、丸括弧の中に棒グラフの設定を記述していきます。
第一引数にはlabels、第二引数にはman、widthで棒グラフの太さを指定します。
ここでは0.4とします。
alignでは、棒グラフのx座標に対する位置を指定できます。
edgeと指定することで、x軸に対して棒グラフを少し右にずらすことができます。
colorで好きな色を設定します。
同じようにwomanの棒グラフの設定もしていきます。
第二引数にwomanと記述します。
alignをcenterとします。
こちらは記述をしなくても、デフォルトではcenterになります。
matplotlibでは、後から書いたものが上書きされていくので、womanのグラフがmanのグラフの上に表示されるはずです。
最後にpltドットshowと書いて丸括弧です。
実行します。
2つのデータを並べて表示できました。

凡例付与

plt.bar(labels, man, width=0.4, align='edge', color='darkcyan', label='Man')
plt.bar(labels, woman, width=0.4, align='center', color='coral', label='Woman')

plt.legend()
plt.show()

次に、グラフに凡例を追加しましょう。
凡例を付けることで、それぞれのグラフが何を示しているのかがわかりやすくなります。
pltドットbarの丸括弧の中にlabelと記述しイコール、凡例の名前をシングルコーテーションでくくります。
さらに、pltドットlegend丸括弧を記述することで、凡例を表示できます。
実行します。
凡例を追加できました。

ラベルとタイトル付与

plt.bar(labels, man, width=0.4, align='edge', color='darkcyan', label='Man')
plt.bar(labels, woman, width=0.4, align='center', color='coral', label='Woman')

plt.legend()
plt.xlabel('Category')
plt.ylabel('Number of People')
plt.title('Man and Woman')
plt.show()

次に、x軸・y軸のラベルと、グラフのタイトルを追加していきましょう。
x軸のラベルは、pltドットxlabelと書いて丸括弧、丸括弧の中に好きなラベルをシングルコーテーションでくくります。
y軸のラベルも同様に記述します。
グラフのタイトルは、pltドットtitleと記述し丸括弧、丸括弧の中に好きなグラフタイトルを書いてシングルコーテーションでくくります。
実行します。
軸のラベルとタイトルを追加できました。

積み上げ棒グラフ

plt.bar(labels, man, width=0.5, color='darkcyan',label='Man')
plt.bar(labels, woman, width=0.5, color='coral', label='Woman', bottom=man)

plt.legend()
plt.xlabel('Category')
plt.ylabel('Number of People')
plt.title('Men and Women')
plt.show()

最後に、積み上げ棒グラフを作成してみましょう。
先ほどの、womanの棒グラフの記述に、bottomイコールmanを追加します。
bottomとは、底を意味します。
つまり、manの棒グラフの上にwomanの棒グラフを積み上げたグラフを作成します。
先ほど、デフォルトではalignがcenterになるとお伝えしました。
積み上げグラフの場合、どちらもx軸に対してcenterになるので、alignの記述は省略できます。
実行します。
積み上げ棒グラフを作成できました。

積み上げ棒グラフ(水平)

plt.barh(labels, man, color='darkcyan',label='Man')
plt.barh(labels, woman, color='coral', label='Woman', left=man)

plt.legend()
plt.xlabel('Category')
plt.ylabel('Number of People')
plt.title('Men and Women')
plt.savefig('sample1.png')
plt.show()

水平方向の積み上げ棒グラフも作成してみましょう。
水平の場合は、bottomではなくleftと記述します。
実行します。
水平方向の積み上げグラフを作成できました。

バー太さ変更

plt.barh(labels, man, height=0.4, color='darkcyan',label='Man')
plt.barh(labels, woman, height=0.4, color='coral', label='Woman', left=man)

plt.legend()
plt.xlabel('Category')
plt.ylabel('Number of People')
plt.title('Men and Women')
plt.savefig('sample1.png')
plt.show()

さらに、棒グラフの太さを変更してみましょう。
通常の棒グラフでは、太さをwidthで変更しましたが、水平の場合は、heightで設定できます。
0から1の間で数値を設定できます。
今回は0.4としてみます。
実行します。
太さを変更できました。

最後に

matplotlibで描く棒グラフの解説動画はいかがでしたでしょうか?
次のレッスンは、実践的なデータで棒グラフなどを作成していきます。

キノコードでは、このMatplotlib & Seaborn 入門コースの他に、人工知能のレッスン、Webアプリ作成の動画もアップしていく予定です。
新着通知がいきますので、ぜひチャンネル登録をお願いします。
それではまた次のレッスンでお会いしましょう!

レッスンで使ったファイルはこちら

■保存方法
Mac:右クリック⇒「リンク先を別名で保存」
Windows:右クリック⇒「名前を付けてリンク先を保存」

Jupyter Labのファイルはこちら