しぷぜん

しぷぜん

素人プログラマなおいがStep Zero to Oneしていくブログ

Pythonでデータを可視化するmatplotlib入門(棒グラフ編)

にほんブログ村 IT技術ブログ Pythonへ

こんにちは、なおいです。

 matplotlibというライブラリでグラフの描いてきました。あと一回はこれで尺を稼ごうと思ってます。はい。

では、棒グラフを描いていきたいなと思います。最初のインストールやインポートについては 割愛しますので、前々回の記事をご参照いただければ。。。

 

ct-innovation01.hateblo.jp

 

 

f:id:ct-innovation01:20170927160405p:plain

棒グラフのプロット

1.基本
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [1, 8, 3, 6, 5]

plt.bar(x,y)
plt.show()

いつも通りなんにも設定がいらなければ、これだけでプロットできます。

プロットした結果は以下の通りで、xとyは配列になっていて同じ数であれば、x[0]とy[0]の場所にプロットしてくれるため(1,1)となり、そのあとも同じインデックス同士の(2,8)、(3,3)、(4,6)、(5,5)とプロットされていくはずです。

 

f:id:ct-innovation01:20170928224551p:plain

問題なくプロットされてます。では、前回同様に見た目をカスタマイズしていきます。

 

2.プロットの見た目をいじる
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [1, 8, 3, 6, 5]

plt.bar(x,y,label='test',width=0.4,align="center")
plt.legend() #凡例
plt.show()

赤文字部を追加することで今回は棒の全体の太さを変えて、全体を真ん中に寄せてみました。例に漏れず棒グラフの時に付けられる主要なカスタマイズキーワードは表形式でグラフの後に載せときます。

 

f:id:ct-innovation01:20170928224706p:plain

 

次は目盛線をつけてみます。さらに、グラフタイトルとX軸Y軸のラベルを入れましょう。

 

Tips)プロットに付与できる主要なカスタマイズキーワード

主要と書いてます通り、今回もたくさんキーワードはあります。より細かい指定で様々な棒グラフが描けますが、最低限これだけおさえてれいれば、普通のグラフは書けるかなという範囲のみ記載しておきます。

kywd 入力例 備考
x,y [1,2,3,4,5] または 事前に定義したlistなど array形式のもの
※必須
linewidth linewidth=5 枠線の太さ
edgecolor edgecolor="r" 枠線の色
色名や16進数、RGBでの指定が可能
color color="red" または
color="#FFFF00" または
color=(1.0,0,1.0)
棒の色
色名や16進数、RGBでの指定が可能
width width="s" 棒の太さ
xerr xerr=0.5 X方向エラーバーの範囲
yerr yerr=0.5 Y方向エラーバーの範囲
bottom bottom=積み上げるデータ 積み上げ用データ
label label="label1" 凡例名

色と形については、リファレンスを見ると以下のものが用意されているみたいです。

f:id:ct-innovation01:20170927115343p:plain

color example code: named_colors.py — Matplotlib 2.0.2 documentation

 

3.グラフの見た目をいじる
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [1, 8, 3, 6, 5]

plt.bar(x,y,label='test',width=0.4,align="center")
plt.legend()
plt.grid(True) #目盛線
plt.xlabel("X-label") #X軸ラベル
plt.ylabel("Y-label") #Y軸ラベル
plt.title("TEST GRAPH") #グラフタイトル
plt.show()

先ほど同様、赤文字部を追加することで見た目のカスタマイズを行いました。実際のグラフが以下のものです。

  

f:id:ct-innovation01:20170928234544p:plain

 

では、ちょっとだけテクニカルに今回は棒グラフの積み上げと折れ線グラフを重ねて、縦に二つグラフを並列で描いてみましょう。

 

4.いろいろカスタマイズする
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [1, 8, 3, 6, 5]
y2 = [8, 2, 4, 3, 7]

plt.subplot(2,1,1)
plt.bar(x,y,label='test',width=0.4,align="center")
plt.bar(x,y2,label='test2',bottom=y,width=0.4,color="green")
plt.plot(x,y,label='test3')
plt.title("TEST GRAPH") #グラフタイトル
plt.xlabel("X-label") #X軸ラベル
plt.ylabel("Y-label") #Y軸ラベル
plt.legend()

plt.subplot(2,1,2)
plt.scatter(x,y,label='test4',s=30)
plt.grid(True) #目盛線
plt.title("TEST GRAPH2") #グラフタイトル
plt.xlabel("X-label2") #X軸ラベル
plt.ylabel("Y-label2") #Y軸ラベル
plt.legend()

plt.tight_layout()
plt.show()

赤文字で追加したものが、グラフを重ねるためのコードです。そのあと必要なコードをそれぞれに書き加えれば簡単に二つのグラフを下のように並べられます。

 

f:id:ct-innovation01:20170928235928p:plain

 

いかがでしたか?次で多分最後になると思います。