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

スポンサーリンク

棒グラフを表示する

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

Pythonでグラフ表示 matplotlib 〜線の太さ、色、点線〜
線の太さを変更する前回、折れ線グラフの全体の見栄えを調整する方法を解説しました。今度は線自体を色々変更して、見やすいグラフにしてみましょう。まずは前回のおさらいです。%matplotlib note...

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

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

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

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

%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〜リスト作成と四則演算、そして行列の入れ替え〜
数値計算ライブラリ numpyとは?numpyはPythonで数値を扱う時に非常に役に立つライブラリです。何が役に立つかと言うと、ある数字をリスト内の数字全てに対して計算したり、2つのリスト同士の計算が出来たり。さ...
%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 〜線の太さ、色、点線〜
線の太さを変更する前回、折れ線グラフの全体の見栄えを調整する方法を解説しました。今度は線自体を色々変更して、見やすいグラフにしてみましょう。まずは前回のおさらいです。%matplotlib note...

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 〜散布図編〜
散布図を表示するこれまで折れ線グラフと棒グラフの表示方法を解説してきました。今回は散布図を表示する方法を解説していきます。前に使った折れ線グラフから散布図を作っていきますので、まずはおさらいから。...

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

コメント

タイトルとURLをコピーしました