Pythonでデータを可視化するmatplotlib入門(棒グラフ編)
こんにちは、なおいです。
matplotlibというライブラリでグラフの描いてきました。あと一回はこれで尺を稼ごうと思ってます。はい。
では、棒グラフを描いていきたいなと思います。最初のインストールやインポートについては 割愛しますので、前々回の記事をご参照いただければ。。。
棒グラフのプロット
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)とプロットされていくはずです。
問題なくプロットされてます。では、前回同様に見た目をカスタマイズしていきます。
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()
赤文字部を追加することで今回は棒の全体の太さを変えて、全体を真ん中に寄せてみました。例に漏れず棒グラフの時に付けられる主要なカスタマイズキーワードは表形式でグラフの後に載せときます。
次は目盛線をつけてみます。さらに、グラフタイトルと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" | 凡例名 |
色と形については、リファレンスを見ると以下のものが用意されているみたいです。
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()
先ほど同様、赤文字部を追加することで見た目のカスタマイズを行いました。実際のグラフが以下のものです。
では、ちょっとだけテクニカルに今回は棒グラフの積み上げと折れ線グラフを重ねて、縦に二つグラフを並列で描いてみましょう。
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()
赤文字で追加したものが、グラフを重ねるためのコードです。そのあと必要なコードをそれぞれに書き加えれば簡単に二つのグラフを下のように並べられます。
いかがでしたか?次で多分最後になると思います。