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

Matplotlib & Seaborn入門講座

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

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

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

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

この記事の執筆・監修

キノコード
キノコード    

テクノロジーアンドデザインカンパニー株式会社のCEO。
日本最大級のプログラミング教育のYouTubeチャンネル「キノコード」や、プログラミング学習サービス「キノクエスト」を運営。
著書「あなたの仕事が一瞬で片付くPythonによる自動化仕事術」や、雑誌「日経ソフトウエア」や「シェルスクリプトマガジン」への寄稿など実績多数。

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

■保存方法
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のファイルはこちら

未経験からはじめるPython学習「キノクエスト」 キノクエスト
  • スキルアップしたいけど何からはじめればよいかわからない…
  • プログラミングスクールに入りたいけど料金が高い…
  • プログラミングを学んでも業務やキャリアに活かせるか不安…

キノクエストは、このような悩みを持つ方にぴったりのプログラミング学習サービスです。
国内最大級のプログラミング学習系YouTubeチャンネル「キノコード」が提供しているから、未経験者にもわかりやすく質の高い学習体験を実感していただけます。

キノクエスト