【Python】Matplotlibの基本的なグラフ描画の使い方の速習

Pythonの応用
スポンサーリンク

Matplotlibは、Pythonと科学計算用ライブラリNumPyで扱ったデータのグラフを描画するライブラリです。

ここではMatplotlibの基本的な使い方を一気に学んでいきます。

Anacondaを使っているなら、Matplotlibはすでにインストールされているのではないかと思いますが、入っていなければこれまでと同様にターミナルからcondaコマンドやpipコマンドでインストールしましょう。

ここもjupyter notebookを使って学んでいきましょう。

スポンサーリンク

Matplotlibの基本的なグラフ描画の方法を一気に学ぶ

jupyter notebookを起動したら、まずはMatplotlibをインポートしましょう。

import matplotlib.pyplot as plt
import numpy as np

NumPyで扱った数値を描画するので、合わせてインポートします。Matplotlib慣は例としてpltとして利用します。

単純なグラフを描画する

適当なデータを作って早速グラフを描画してみましょう。

import matplotlib.pyplot as plt
import numpy as np

plt.plot([1, 2, 3, 4, 5])
plt.ylabel('y')
plt.show()

plot()でデータのリスト使います。ylabel()でy軸に表示するラベルを設定します。show()でグラフが表示されます。

コードとの対応をしっかり理解しておきましょう。

x軸、y軸に対応したデータをグラフに描画する

先ほどはデータの値のみでしたが、今度はx軸とy軸にそれぞれ対応した値をグラフに描画してみます。

plt.plot([1, 2, 3, 4, 5], [1, 4, 9, 16, 25])
plt.show()

plot()に横軸のデータ、縦軸のデータのリストをそれぞれ入れています。

x軸の値とy軸のデータがそれぞれ対応しているのがわかります。

グラフにマーカーをつける

描画されるグラフには線で書くだけでなく、マーカーで書くこともできます。上で使ったコードを書きかえてます。

/* Your code... */
plt.plot([1, 2, 3, 4, 5], [1, 4, 9, 16, 25], 'ro')
plt.axis([0, 6, 0, 30])
plt.show()

2行目は横幅と縦幅を指定しているだけですが、1行目の最後に’ro’とあります。これは赤色で丸印をつけるの意味です。

実行するとこうなります。

赤い丸でデータがプロットされているのがわかります。

もう1つマーカーでグラフを書いてみましょう。

t = np.arange(0, 5, 0.2)
plt.plot(t, t*2, 'r--', t, t**2, 'bs', t, t**3, 'g^')
plt.show()

tは0から5までの間で0.2ごとのデータを作成しています。

plot()には、xの値、yの値、マーカーの指定を3つ並べています。1つ目はtの2倍の値を赤の点線で、2つ目はtの2乗を青の四角で、3つ目はtの3乗を緑の三角で描くという意味になっています。

それぞれの違いはわかりますね。

scatter()で散布図を描く

次は散布図を描いてみましょう。散布図を描くにはscatter()を使います。これに、x軸、y軸の値、大きさ、色などを指定して描きます。

コードの一例です。

x = np.random.rand(100)
y = np.random.rand(100)
colors = np.random.rand(100)
size = np.random.rand(100)*1000
plt.scatter(x, y, s=size, c=colors, alpha=0.7)
plt.show()

x,yの値をランダムで発生させています。それに使う色もランダム、散布の大きさもランダムで指定しました。透明度を0.7にしています。

bar()で棒グラフを描く

今度は棒グラフを描いてみましょう。

コード例で見ていきます。

obj = ('a', 'b', 'c', 'd', 'e', 'f')
y_position = np.arange(len(obj))
value = [3, 5, 1, 6, 2, 4]

plt.bar(y_position, value, alpha=0.5)
plt.xticks(y_position, obj)
plt.ylabel('y')
plt.title('Bar Chart')
plt.show()

objで6つの項目を用意しました。y_positionはobjの数を利用して、valueに対応する位置を示しています。bar()に横軸の位置とそれに対応するvalueを入れて、透明度を0.5にしています。xticksはx軸の目盛りです。y軸とタイトルのラベルを設定しています。

棒グラフが描けています。

pie()でパイチャート(円グラフ)を描く

次は円グラフを描いてみます。コードで見ていきましょう。

labels = (‘Pytho’, ‘PHP’, ‘Swift’, ‘Java’, ‘JavaScript’)
sizes = [25, 10, 20, 30, 15]
colors = [‘red’, ‘blue’, ‘yellow’, ‘orange’, ‘green’]

plt.pie(sizes, labels=labels, colors=colors, autopct=’%1.1f%%’, shadow=True)
plt.axis(‘equal’)
plt.show()

ラベルの項目とそのサイズ(ここでは合計100になるような数字で割り振りました)とそれぞれに対応した色を設定しています。これをpie()に入れています。autopctで小数点1位までを表記し単位を%にしています。shadowをつけることでグラフをくっきりさせます。axis(‘equal’)で縦横が等しくなるように整形しています。

円グラフが描けているのがわかります。

legend()で凡例を付ける

グラフには凡例を付けることができます。legend()を使い、labelと結びついた値を表示します。

y1 = [2, 4, 9, 16, 25, 36]
y2 = [10, 12, 14, 16, 18, 20]
x = np.arange(6)

plt.plot(x, y1, label='Y1')
plt.plot(x, y2, label='Y2')
plt.legend()
plt.show()

2つのデータを用意しています。xはデータの数に対応させています。それぞれの値をプロットして、それぞれlabelを設定しています。legend()でこのlabelを呼び出し、グラフを描画しています。

グラフの中に2つの凡例が表示されているのがわかります。

スポンサーリンク

最後に

ほんの一部ではありますが、Matplotlibを使ってよく目にするグラフの描画をやってみました。

もしjupyter notebook上でグラフが表示されないならば、プログラミングの先頭かライブラリのインポートした位置の下くらいに次のコード(マジックコマンド)を入力しましょう。

%matpotlib inline

入力しなくても良い方法が色々ありますが、ここでは煩雑になるので省略します。

ちなみに、グラフ描画でラベルを日本語で書いた場合は文字化けすることがあります。これを対処するにはこちらを参考にして対処してください。

Matplotlibでの文字化けの対処法には日本語化の設定をしよう!
jupyter notebookのPythonでMatplotlibのグラフ描写をしている時、ラベルなどの日本語表記が文字化けすることがあります。Anacondaの利用者向けの対処法をまとめました。バージョンアップで起こるエラーへの対処法も追記しています。

もちろんこれ以外にも様々な機能があるので、これで終わりではありません。さらに詳しいところは別のところで扱おうと思います。

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