Pythonでグラフ表示 matplotlib 〜棒グラフ編〜

目次

棒グラフを表示する

これまで折れ線グラフに関して解説してきました。

あわせて読みたい
Pythonでグラフ表示 matplotlib 〜線の太さ、色、点線〜
Pythonでグラフ表示 matplotlib 〜線の太さ、色、点線〜【線の太さを変更する】前回、折れ線グラフの全体の見栄えを調整する方法を解説しました。https://3pysci.com/python-matplotlib-2/今度は線自体を色々変更して、見やす...

いつもいつも折れ線グラフでは面白くありませんよね。

今回は棒グラフの表示方法を解説していきます。

まずは前回の折れ線グラフのおさらい。

線の色と太さをは自動に戻しています。

%matplotlib notebook

from matplotlib import pyplot as plt

y1_value = [1, 2, 4, 8, 16, 32, 64, 128, 256, 1028]
x1_value = range(1, len(y_value)+1)

y2_value = [100, 200, 300, 400, 500, 600, 700, 800, 900, 1000]
x2_value = range(1, len(y2_value)+1)

fig=plt.figure(figsize=(10,6))

plt.plot(x1_value, y1_value, label="test1")
plt.plot(x2_value, y2_value, label="test2")

plt.title("Test Graph", {"fontsize": 20})
plt.xlabel("Numbers", {"fontsize": 20})
plt.ylabel("Value", {"fontsize": 20})
plt.tick_params(labelsize=20)
plt.legend(prop={"size": 20}, loc="best")
plt.grid()

plt.show()

実行結果

これを棒グラフにするには、plt.plot()をplt.bar()に変えることで変更できます。

%matplotlib notebook

from matplotlib import pyplot as plt

y1_value = [1, 2, 4, 8, 16, 32, 64, 128, 256, 1028]
x1_value = range(1, len(y_value)+1)

y2_value = [100, 200, 300, 400, 500, 600, 700, 800, 900, 1000]
x2_value = range(1, len(y2_value)+1)

fig=plt.figure(figsize=(10,6))

plt.bar(x1_value, y1_value, label="test1")
plt.bar(x2_value, y2_value, label="test2")

plt.title("Test Graph", {"fontsize": 20})
plt.xlabel("Numbers", {"fontsize": 20})
plt.ylabel("Value", {"fontsize": 20})
plt.tick_params(labelsize=20)
plt.legend(prop={"size": 20}, loc="best")
plt.grid()

plt.show()

実行結果

棒グラフに変更することができました。

しかし、二つのデータを表示しているのに、重なってしまって一つのデータ(test1)がよく見えなくなっています。

これを改善していきましょう。

棒グラフの幅を変更する

複数のデータを並べて表示するには、

  1. 棒グラフの幅を調整する
  2. 棒グラフをずらす

という作業が必要になります。

そこでまずは、1. 棒グラフの幅を調整する をします。

最終的には細くしたいのですが、太くするとどうなるかみてみましょう。

棒グラフの幅を調整するには、plt.bar()にwidth=Xを入れます。

%matplotlib notebook

from matplotlib import pyplot as plt

y1_value = [1, 2, 4, 8, 16, 32, 64, 128, 256, 1028]
x1_value = range(1, len(y_value)+1)

y2_value = [100, 200, 300, 400, 500, 600, 700, 800, 900, 1000]
x2_value = range(1, len(y2_value)+1)

fig=plt.figure(figsize=(10,6))

plt.bar(x_name, y1_value, width=2, label="test1")
plt.bar(x_name, y2_value, width=2, label="test2")

plt.title("Test Graph", {"fontsize": 20})
plt.xlabel("Numbers", {"fontsize": 20})
plt.ylabel("Value", {"fontsize": 20})
plt.tick_params(labelsize=20)
plt.legend(prop={"size": 20}, loc="best")
plt.grid()

plt.show()

実行結果

階段状のグラフになりました。

これはこれで面白いグラフなのですが、目的は2つのデータを並べて棒グラフにすることです。

なので、次は棒グラフを細くしてみます。

%matplotlib notebook

from matplotlib import pyplot as plt

y1_value = [1, 2, 4, 8, 16, 32, 64, 128, 256, 1028]
x1_value = range(1, len(y_value)+1)

y2_value = [100, 200, 300, 400, 500, 600, 700, 800, 900, 1000]
x2_value = range(1, len(y2_value)+1)

fig=plt.figure(figsize=(10,6))

plt.bar(x_name, y1_value, width=0.3, label="test1")
plt.bar(x_name, y2_value, width=0.3, label="test2")

plt.title("Test Graph", {"fontsize": 20})
plt.xlabel("Numbers", {"fontsize": 20})
plt.ylabel("Value", {"fontsize": 20})
plt.tick_params(labelsize=20)
plt.legend(prop={"size": 20}, loc="best")
plt.grid()

plt.show()

実行結果

細くなりました。

次にそれぞれのデータをX軸方向にずらして、並べて表示してみましょう。

棒グラフをずらして、複数のデータを表示する

棒グラフを作成する基本コマンドはplt.bar(X, Y)です。

XでX軸方向の場所を決めていて、YでY軸方向の長さを決めています。

棒グラフをずらすには、Xを変更することでずらすことができます。

今回はX軸方向のメモリを中心に、左右に2つの棒グラフを表示してみましょう。

X軸のリストを一括でずらしたいので、numpyのリストを使います。

あわせて読みたい
Pythonの数値計算ライブラリ numpy〜リスト作成と四則演算、そして行列の入れ替え〜
Pythonの数値計算ライブラリ numpy〜リスト作成と四則演算、そして行列の入れ替え〜【数値計算ライブラリ numpyとは?】numpyはPythonで数値を扱う時に非常に役に立つライブラリです。何が役に立つかと言うと、ある数字をリスト内の数字全てに対して計算...
%matplotlib notebook

from matplotlib import pyplot as plt
import numpy as np

y1_value = [1, 2, 4, 8, 16, 32, 64, 128, 256, 1028]
x1_value = range(1, len(y_value)+1)

y2_value = [100, 200, 300, 400, 500, 600, 700, 800, 900, 1000]
x2_value = range(1, len(y2_value)+1)

fig=plt.figure(figsize=(10,6))

plt.bar(np.array(x1_value)-0.15, y1_value, width=0.3, label="test1")
plt.bar(np.array(x2_value)+0.15, y2_value, width=0.3, label="test2")

plt.title("Test Graph", {"fontsize": 20})
plt.xlabel("Numbers", {"fontsize": 20})
plt.ylabel("Value", {"fontsize": 20})
plt.tick_params(labelsize=20)
plt.legend(prop={"size": 20}, loc="best")
plt.grid()

plt.show()

実行結果

1つ目のデータを棒グラフで表示するコマンドの説明から行きます。

plt.bar(np.array(x1_value)-0.15, y1_value, width=0.3, label=”test1″)

np.array(x1_value)でx1_valueのリストをnumpyのリストに変更します。

その後、棒グラフの幅が0.3(width=0.3)なので、その半分をX軸方向の小さい側(0側)にずらすため、np.array(x1_value)-0.15としています。

また2つ目のデータは逆にX軸方向の大きい側(10側)にずらすため、np.array(x2_value)+0.15となります。

3つ、4つと増えていくことで、ずらす量は変わってくるので、そこは随時調整してください。

棒グラフの色を変更する

棒グラフの色を変更する方法は、折れ線グラフの時と同じです。

あわせて読みたい
Pythonでグラフ表示 matplotlib 〜線の太さ、色、点線〜
Pythonでグラフ表示 matplotlib 〜線の太さ、色、点線〜【線の太さを変更する】前回、折れ線グラフの全体の見栄えを調整する方法を解説しました。https://3pysci.com/python-matplotlib-2/今度は線自体を色々変更して、見やす...

plt.bar()の中に、color=”色”を入れることで変更することができます。

指定の方法も折れ線グラフの時と同じで、色の名前や色の名前の略、カラーコードで指定できます。

%matplotlib notebook

from matplotlib import pyplot as plt
import numpy as np

y1_value = [1, 2, 4, 8, 16, 32, 64, 128, 256, 1028]
x1_value = range(1, len(y_value)+1)

y2_value = [100, 200, 300, 400, 500, 600, 700, 800, 900, 1000]
x2_value = range(1, len(y2_value)+1)

fig=plt.figure(figsize=(10,6))

plt.bar(np.array(x1_value)-0.15, y1_value, color="red", width=0.3, label="test1")
plt.bar(np.array(x2_value)+0.15, y2_value, color="blue", width=0.3, label="test2")

plt.title("Test Graph", {"fontsize": 20})
plt.xlabel("Numbers", {"fontsize": 20})
plt.ylabel("Value", {"fontsize": 20})
plt.tick_params(labelsize=20)
plt.legend(prop={"size": 20}, loc="best")
plt.grid()

plt.show()

これで棒グラフも自由自在ですね。

次は散布図を表示する方法を解説します。

あわせて読みたい
Pythonでグラフ表示 matplotlib 〜散布図編〜
Pythonでグラフ表示 matplotlib 〜散布図編〜【散布図を表示する】これまで折れ線グラフと棒グラフの表示方法を解説してきました。https://3pysci.com/python-matplotlib-3/https://3pysci.com/python-matplotlib-4...

ということで今回はこんな感じで。

よかったらシェアしてね!

コメント

コメントする

目次
閉じる