非IT企業に勤める中年サラリーマンのIT日記

非IT企業でしかもITとは全く関係ない部署にいる中年エンジニア。唯一の趣味がプログラミングという”自称”プログラマー。

Python/matplotlibで複数棒グラフと積上げ棒グラフ

   

Python/matplotlibライブラリで複数の棒グラフを作る際にはちょっとした工夫が必要です。今回は棒グラフを2つ並べる方法と積上げ棒グラフを作ってみます。

[ad#top-1]

棒グラフ基本形(但し問題あり)

以下が棒グラフを描画するためのソースコードの基本形です。y1とy2の2つのデータを棒グラフで表します。

import numpy as np
import matplotlib.pyplot as plt

x = np.array([1, 2, 3, 4, 5])
y1 = np.array([18, 19, 34, 11, 56])
y2 = np.array([23, 16, 11, 22, 12])

plt.bar(x, y1, color="#9999ff", width=0.5)
plt.bar(x, y2, color="#ff9999", width=0.5)

#グリッド表示
plt.grid(True)

#グラフ表示
plt.show()
 

 

但し、このソースコードだと問題があって、2つの棒グラフが重なってしまいます。以下のように青いグラフとピンクのグラフが重なります。

 

棒グラフを横に並べる

上記問題を解消するために、xの値を少しだけずらしてあげれば棒が横に並びます。以下の通りy1側のxを-0.25、y2側のxを+0.25だけ調整してあげます。

plt.bar(x-0.25, y1, color="#9999ff", width=0.5)
plt.bar(x+0.25, y2, color="#ff9999", width=0.5)
 

 

すると、棒グラフは以下のように横並びになります。Python/matplotlibグラフはここにちょっとクセがあります。

 

積み上げグラフ

今度は積上げグラフです。グラフを横に並べるのではなく縦に積み上げるには、以下のようにbottomパラメータを使えばOKです。y2側を積み上げる方にする場合は、y2側にbottom=y1と設定してあげます。

plt.bar(x, y1, color="#9999ff", width=0.5)
plt.bar(x, y2, bottom=y1, color="#ff9999", width=0.5)
 

 

以下のように積み上げグラフができました。

 

[ad#ad-1]

 

スポンサーリンク

 - Python