Matplotlib-棒グラフ

棒グラフまたは棒グラフは、それらが表す値に比例する高さまたは長さの長方形の棒でカテゴリデータを表示するグラフまたはグラフです。バーは垂直または水平にプロットできます。

棒グラフは、個別のカテゴリ間の比較を示しています。グラフの一方の軸は比較されている特定のカテゴリを示し、もう一方の軸は測定値を表します。

Matplotlib APIは、 bar()MATLABスタイルの使用およびオブジェクト指向APIで使用できる関数。axisオブジェクトで使用されるbar()関数のシグネチャは次のとおりです。

ax.bar(x, height, width, bottom, align)

この関数は、サイズのバインドされた長方形(x −width = 2; x + width = 2; bottom; bottom + height)を使用して棒グラフを作成します。

関数のパラメーターは次のとおりです。

バツ バーのx座標を表すスカラーのシーケンス。xがバーの中心(デフォルト)または左端の場合、コントロールを整列します。
高さ バーの高さを表すスカラーまたはスカラーのシーケンス。
スカラーまたは配列のような、オプション。バーの幅はデフォルトで0.8です。
スカラーまたは配列のような、オプション。バーのy座標のデフォルトはNoneです。
整列 {'center'、 'edge'}、オプション、デフォルト 'center'

この関数は、すべてのバーを含むMatplotlibコンテナオブジェクトを返します。

以下は、Matplotlib棒グラフの簡単な例です。これは、研究所で提供されるさまざまなコースに登録されている学生の数を示しています。

import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_axes([0,0,1,1])
langs = ['C', 'C++', 'Java', 'Python', 'PHP']
students = [23,17,35,29,12]
ax.bar(langs,students)
plt.show()

複数の数量を比較する場合、および1つの変数を変更する場合、1つの数量値に対して1つの色の棒がある棒グラフが必要になる場合があります。

棒の太さと位置を操作することで、複数の棒グラフをプロットできます。データ変数には、4つの値の3つのシリーズが含まれています。次のスクリプトは、4本の棒の3本の棒グラフを表示します。バーの厚さは0.25単位になります。各棒グラフは、前の棒グラフから0.25単位シフトされます。データオブジェクトは、過去4年間に工学部の3つの学部を通過した学生の数を含むマルチディクトです。

import numpy as np
import matplotlib.pyplot as plt
data = [[30, 25, 50, 20],
[40, 23, 51, 17],
[35, 22, 45, 19]]
X = np.arange(4)
fig = plt.figure()
ax = fig.add_axes([0,0,1,1])
ax.bar(X + 0.00, data[0], color = 'b', width = 0.25)
ax.bar(X + 0.25, data[1], color = 'g', width = 0.25)
ax.bar(X + 0.50, data[2], color = 'r', width = 0.25)

積み上げ棒グラフは、さまざまなグループを表す棒を積み重ねます。結果のバーの高さは、グループの合計結果を示します。

のオプションの下部パラメータ pyplot.bar()関数を使用すると、バーの開始値を指定できます。ゼロから値まで実行する代わりに、下から値に移動します。pyplot.bar()を最初に呼び出すと、青い棒グラフがプロットされます。pyplot.bar()の2番目の呼び出しは、赤い棒をプロットします。青い棒の下部が赤い棒の上部にあります。

import numpy as np
import matplotlib.pyplot as plt
N = 5
menMeans = (20, 35, 30, 35, 27)
womenMeans = (25, 32, 34, 20, 25)
ind = np.arange(N) # the x locations for the groups
width = 0.35
fig = plt.figure()
ax = fig.add_axes([0,0,1,1])
ax.bar(ind, menMeans, width, color='r')
ax.bar(ind, womenMeans, width,bottom=menMeans, color='b')
ax.set_ylabel('Scores')
ax.set_title('Scores by group and gender')
ax.set_xticks(ind, ('G1', 'G2', 'G3', 'G4', 'G5'))
ax.set_yticks(np.arange(0, 81, 10))
ax.legend(labels=['Men', 'Women'])
plt.show()