pythonのグラフ描画ライブラリである「matplotlib」で、棒グラフを作成する方法について紹介します。
本記事では、下記の内容を紹介しています。
この記事で分かること
- 棒グラフを作成する方法
- 棒グラフの太さ(幅)を変更する方法
- 棒グラフの色を変更する方法
- 棒グラフに枠線を追加する方法
- 複数の棒グラフを表示する方法
- 積み上げ棒グラフを作成する方法
はじめに、基本的な内容として、棒グラフを作成する方法を紹介します。
そのあとに、棒グラフの太さを変更する方法、複数の棒グラフを重ねて表示する方法など、棒グラフを見やすく表示する方法について紹介します。
スポンサーリンク
matplotlibで棒グラフを作成する方法
matplotlibには、棒グラフを作成するメソッドとして、「matplotlib.pyplot.bar」が用意されています。
matplotlib.pyplot.bar の引数の指定方法について、 公式ドキュメント から引用しました。
matplotlib 公式ドキュメント
matplotlib.pyplot.bar の詳しい使用方法については、 公式ドキュメント にて御確認ください。
以下、matplotlib.pyplot.bar を用いて棒グラフを作成するサンプルコードです。
### matplotlibで棒グラフを作成
import numpy as np
import matplotlib.pyplot as plt
x = np.array([1, 2, 3, 4, 5])
y = np.array([10, 20, 30, 40, 50])
plt.bar(x, y)
plt.show()
コード実行後、表示されるグラフはこちらになります。
> plt.bar(x, y)
matplotlib.pyplot.bar に、棒グラフ生成用のデータ "x"、"y" を引数として渡しています。
matplotlibの棒グラフを見やすくする
前述のサンプルコードは、ただ棒グラフを作成しただけのシンプルなものでした。
参考までに、棒グラフに軸ラベルや凡例を追加する例を紹介します。
以下、棒グラフに軸ラベルや凡例を追加するサンプルコードです。
### matplotlibで棒グラフを作成
import numpy as np
import matplotlib.pyplot as plt
x = np.array([1, 2, 3, 4, 5])
y = np.array([10, 20, 30, 40, 50])
fig = plt.figure(figsize = (5,5), facecolor='lightblue')
plt.xlabel('X')
plt.ylabel('Y')
plt.bar(x, y, label='bar')
plt.legend()
plt.show()
コード実行後、表示されるグラフはこちらになります。
> fig = plt.figure(figsize = (5,5), facecolor='lightblue')
グラフを表示する領域を、figオブジェクトとして作成しています。
figsizeで領域の幅と高さを、facecolorで領域の色を指定しています。
> plt.xlabel('X')
> plt.ylabel('Y')
軸ラベルを追加しています。
軸まわりの設定については、下記の記事で紹介しています。
> plt.bar(x, y, label='bar')
> plt.legend()
label= で、凡例として表示する文字列を指定しています。
plt.legend で、凡例を表示しています。
凡例の位置やフォントの変更方法などについては、下記の記事で紹介しています。
スポンサーリンク
matplotlibで棒グラフの太さ(幅)を変更する方法
次に、棒グラフの太さを変更する方法について紹介します。
matplotlib.pyplot.bar メソッドの引数として、widthを指定することで、棒グラフの太さを変更することができます。
以下、サンプルコードです。
### matplotlibで棒グラフの太さを変更する方法
import numpy as np
import matplotlib.pyplot as plt
x = np.array([1, 2, 3, 4, 5])
y = np.array([10, 20, 30, 40, 50])
fig = plt.figure(figsize = (5,5), facecolor='lightblue')
plt.xlabel('X')
plt.ylabel('Y')
plt.bar(x, y, label='bar', width=0.1)
plt.legend()
plt.show()
コード実行後、表示されるグラフはこちらになります。
◆width=0.1の場合
◆width=1の場合
> plt.bar(x, y, label='bar', width=0.1)
width= で、棒グラフの幅を指定しています。
matplotlibで棒グラフの色を変更する方法
次に、棒グラフの色を変更する方法について紹介します。
matplotlib.pyplot.bar メソッドの引数として、colorを指定することで、棒グラフの色を変更することができます。
以下、サンプルコードです。
### 棒グラフの色を変更
import numpy as np
import matplotlib.pyplot as plt
x = np.array([1, 2, 3, 4, 5])
y = np.array([10, 20, 30, 40, 50])
fig = plt.figure(figsize = (5,5), facecolor='lightblue')
plt.xlabel('X')
plt.ylabel('Y')
plt.bar(x, y, label='bar', width=0.8, color='GreenYellow')
plt.legend()
plt.show()
コード実行後、表示されるグラフはこちらになります。
> plt.bar(x, y, label='bar', width=0.8, color='GreenYellow')
color= で、棒グラフの色を指定しています
スポンサーリンク
matplotlibの棒グラフに枠線を追加する方法
次に、棒グラフに枠線を追加する方法について紹介します。
matplotlib.pyplot.bar メソッドの引数として、edgecolorを指定することで、棒グラフに枠線を追加できます。
以下、サンプルコードです。
### 棒グラフに枠線を追加
import numpy as np
import matplotlib.pyplot as plt
x = np.array([1, 2, 3, 4, 5])
y = np.array([10, 20, 30, 40, 50])
fig = plt.figure(figsize = (5,5), facecolor='lightblue')
plt.xlabel('X')
plt.ylabel('Y')
plt.bar(x, y, label='bar', width=0.8, color='GreenYellow', edgecolor='Green')
plt.legend()
plt.show()
コード実行後、表示されるグラフはこちらになります。
> plt.bar(x, y, label='bar', width=0.8, color='GreenYellow', edgecolor='Green')
edgecolor= で、棒グラフの枠線の色を指定しています。
棒グラフの枠線の幅を変更
棒グラフの枠線の幅を変更する方法について紹介します。
matplotlib.pyplot.bar メソッドの引数として、linewidthを指定することで、棒グラフの枠線の幅を変更できます。
以下、サンプルコードです。
### 棒グラフの枠線の幅を変更
import numpy as np
import matplotlib.pyplot as plt
x = np.array([1, 2, 3, 4, 5])
y = np.array([10, 20, 30, 40, 50])
fig = plt.figure(figsize = (5,5), facecolor='lightblue')
plt.xlabel('X')
plt.ylabel('Y')
plt.bar(x, y, label='bar', width=0.8, color='GreenYellow', edgecolor='Green', linewidth=5)
plt.legend()
plt.show()
コード実行後、表示されるグラフはこちらになります。
> plt.bar(x, y, label='bar', width=0.8, color='GreenYellow', edgecolor='Green', linewidth=5)
linewidth= で、棒グラフの枠線の幅を指定しています。
スポンサーリンク
matplotlibで複数の棒グラフを表示する方法
次に、複数の棒グラフを表示する方法について紹介します。
以下、2つの方法について、それぞれ順番に紹介します。
- 複数の棒グラフを横に並べて表示
- 複数の棒グラフを半透明にして重ねて表示
複数の棒グラフを横に並べて表示
複数の棒グラフを横に並べて表示する方法について紹介します。
棒グラフを横に並べて表示するために、棒の太さを変更しています。
また、2つの棒グラフを横にバランスよく並べるために、x軸の要素を幅の半分だけシフトさせています。
以下、サンプルコードです。
### 複数の棒グラフを横に並べて表示
import numpy as np
import matplotlib.pyplot as plt
width_bar = 0.4
x = np.array([1, 2, 3, 4, 5])
x1 = x - width_bar/2
x2 = x + width_bar/2
y1 = np.array([10, 20, 30, 40, 50])
y2 = np.array([10, 15, 10, 15, 10])
fig = plt.figure(figsize = (5,5), facecolor='lightblue')
plt.xlabel('X')
plt.ylabel('Y')
plt.bar(x1, y1, label='y1', width=width_bar, align="center")
plt.bar(x2, y2, label='y2', width=width_bar, align="center")
plt.legend()
plt.show()
コード実行後、表示されるグラフはこちらになります。
> x = np.array([1, 2, 3, 4, 5])
> x1 = x - width_bar/2
> x2 = x + width_bar/2
2つの棒グラフを横にバランスよく配置するために、棒グラフの幅の半分だけx座標をシフトさせています。
> plt.bar(x1, y1, label='y1', width=width_bar, align="center")
> plt.bar(x2, y2, label='y2', width=width_bar, align="center")
2つ分の棒グラフのデータを描画しています。
widthで棒グラフの幅を変更しています。
複数の棒グラフを半透明にして重ねて表示
あまり需要はないかもしれませんが、複数の棒グラフを半透明にして重ねて表示する方法について紹介します。
matplotlib.pyplot.bar メソッドの引数として、alphaを指定することで、棒グラフを半透明にすることができます。
以下、サンプルコードです。
### 棒グラフを半透明にして重ねて表示
import numpy as np
import matplotlib.pyplot as plt
width_bar = 0.8
x = np.array([1, 2, 3, 4, 5])
y1 = np.array([10, 20, 30, 40, 50])
y2 = np.array([10, 15, 10, 15, 10])
fig = plt.figure(figsize = (5,5), facecolor='lightblue')
plt.xlabel('X')
plt.ylabel('Y')
plt.bar(x, y1, label='y1', width=width_bar, align="center", alpha=0.5)
plt.bar(x, y2, label='y2', width=width_bar, align="center", alpha=0.5)
plt.legend()
plt.show()
コード実行後、表示されるグラフはこちらになります。
> plt.bar(x, y1, label='y1', width=width_bar, align="center", alpha=0.5)
> plt.bar(x, y2, label='y2', width=width_bar, align="center", alpha=0.5)
2つ分の棒グラフのデータを描画しています。
alphaで棒グラフの透明度を変更しています。
スポンサーリンク
matplotlibで積み上げ棒グラフを作成する方法
次に、matplotlibで積み上げ棒グラフを作成する方法を紹介します。
matplotlib.pyplot.bar メソッドの引数として、bottomを指定することで、積み上げ棒グラフを作成できます。
以下、サンプルコードです。
### 積み上げ棒グラフを作成
import numpy as np
import matplotlib.pyplot as plt
width_bar = 0.8
x = np.array([1, 2, 3, 4, 5])
y1 = np.array([10, 20, 30, 40, 50])
y2 = np.array([10, 15, 10, 15, 10])
fig = plt.figure(figsize = (5,5), facecolor='lightblue')
plt.xlabel('X')
plt.ylabel('Y')
plt.bar(x, y1, label='y1', width=width_bar, align="center")
plt.bar(x, y2, label='y2', width=width_bar, align="center",bottom=y1)
plt.legend()
plt.show()
コード実行後、表示されるグラフはこちらになります。
> plt.bar(x, y1, label='y1', width=width_bar, align="center")
> plt.bar(x, y2, label='y2', width=width_bar, align="center",bottom=y1)
2つ分の棒グラフのデータを描画しています。
y2のグラフを描画する際に、bottom=y1 を指定することで、y1の上にy2を積み上げることができます。
スポンサーリンク