mathpython

matplotlibの棒グラフ(色、間隔、ラベルの順序を指定する)

matplotlibで棒グラフの描き方を学びます。棒グラフはbarという関数で表します。barは必ず横軸(データのラベル)と縦軸(データの値)を引数に持ちます。

りんごを売っている人の月曜日から木曜日までの売上を棒グラフにしてみましょう。

from matplotlib import pyplot as plt

name = ['Monday', 'Tuesday', 'Wednesday', 'Thursday']
value = [54, 67, 89, 103]
plt.bar(name, value)
plt.show()

出力される画像

棒グラフ

棒グラフを描くまでの手順をまとめると次のようになります。

  1. matplotlibをインポートする
  2. 横軸のラベルを配列にする
  3. 縦軸の値を配列にする
  4. matplotlibのbarにラベルと値を入れる
  5. 出力する

棒グラフの横軸に月曜日から木曜日までのラベル(英語)があり、縦軸に各曜日の売上があります。月曜日は54個、火曜日は67個…と対応しています。

広告

棒の色を変える

デフォルトの色は暗い青です。色を変えたいときはbarの引数に色オプションを加えます。

from matplotlib import pyplot as plt

name = ['Monday', 'Tuesday', 'Wednesday', 'Thursday']
value = [54, 67, 89, 103]
plt.bar(name, value, color='#ff0000')
plt.show()

赤

棒が赤になりました。ff0000は赤を意味します。ウェブと同じように、色はシャープの後に6桁の16進数を続けて表します。緑と青も出力しましょう。

from matplotlib import pyplot as plt

name = ['Monday', 'Tuesday', 'Wednesday', 'Thursday']
value = [54, 67, 89, 103]
plt.bar(name, value, color='#00ff00')
plt.show()

緑

from matplotlib import pyplot as plt

name = ['Monday', 'Tuesday', 'Wednesday', 'Thursday']
value = [54, 67, 89, 103]
plt.bar(name, value, color='#0000ff')
plt.show()

青

棒に枠線をつける

グラフに枠線をつけることも可能です。

from matplotlib import pyplot as plt

name = ['Monday', 'Tuesday', 'Wednesday', 'Thursday']
value = [54, 67, 89, 103]
plt.bar(name, value, color='#effef0', edgecolor='#9ffea0', linewidth=10)
plt.show()

枠線ありの棒グラフ

barの引数にedgecolorとlinewidthを入れます。edgecolorは枠線の色、linewidthは枠線の太さを表します。

間隔(隙間)を変える

グラフとグラフの隙間を変えるときは、barの引数にwidthを指定します。デフォルトは0.8です。まずは0.5にして隙間を空けてみます。

from matplotlib import pyplot as plt

name = ['Monday', 'Tuesday', 'Wednesday', 'Thursday']
value = [54, 67, 89, 103]
plt.bar(name, value, color='#effef0', edgecolor='#9ffea0', linewidth=10, width=0.5)
plt.show()

隙間を空ける

続いて1にしてグラフの隙間をつめてみます。

from matplotlib import pyplot as plt

name = ['Monday', 'Tuesday', 'Wednesday', 'Thursday']
value = [54, 67, 89, 103]
plt.bar(name, value, color='#effef0', edgecolor='#9ffea0', linewidth=10, width=1)
plt.show()

隙間をつめる

ラベルを並び替える

これまでの棒グラフは月曜日から木曜日まで順番通りに並んでいませんでした。順番を指定するときは、barの最初の引数(これまでのコードでいうとnameにあたる変数)を数値の配列にして、ラベルはラベルでlabelという変数を配列でつくり、オプションのtick_labelに指定します。

from matplotlib import pyplot as plt

name = [1, 2, 3, 4]
value = [54, 67, 89, 103]
label = ['Monday', 'Tuesday', 'Wednesday', 'Thursday']
plt.bar(name, value, color='#effef0', edgecolor='#9ffea0', linewidth=5, width=0.7, tick_label=label)
plt.show()

ラベルの並び替え

barの引数にtick_label=labelが追加されています。name、value、labelの3つは紐づいているため、1は54と月曜日、2は67と火曜日…と対応しています。

barという関数はあくまで最初の引数にもとづいて順序を決めています。ラベルを指定しないで、最初の引数に直接「月曜日から木曜日」までを入れたときに、ラベルが順番通りにならない理由は、barが内部でラベルをアルファベット順に並び替えてしまうためです。

広告

教育総合サイト

高校化学専門サイト

色辞典

数の辞典