婦人科疾患に関する内容はこちらをご覧ください。

Matplotlibの使い方【基礎から描図まで解説】

python matplotlib 使い方 グラフ

こんにちわ。


今回は matplotlib の使い方、すなわちグラフの描図の仕方について最低限必要な箇所をピックアップして解説していきます。


特に以下のテーマの様な基本的な使い方について解説します。

今回のテーマ
  • matplotlibを使った描図の基本 -折れ線グラフの描き方-
  • 代表的なグラフの紹介
  • 多数のグラフを同時に描図する方法
  • 近似直線の描き方

では早速みていきましょう。

matplotlibの使い方【描図の基本編】

python matplotlib 入門

matplotlibの使い方|折れ線グラフの描き方【手順あり】

早速、matplotlibの使い方のうち、グラフの描図の仕方について解説していきます。


まずカンタンなグラフの描き方について折れ線グラフの描き方で解説していきます。

Matplotlibを使用したグラフを描く手順は以下のとおりです。

グラフを描く手順
  1. matplotlib.pyplot をimportします
  2. グラフ化したいデータを読み込みます
  3. グラフを作成します
  4. 作成したグラフを表示します
これだけの手順です。

早速グラフを描いてみましょう。

matplotlib.pyplot をimportする方法

この3行をコピペして貼り付けてください。

たったこれだけでグラフを描くモジュールをインポートできます。

これを呪文の様に覚えておきましょう。


ちなみに一行目の %matplotlib inline はJupyter Notebookでは必須です。(Pythonファイルからであれば記載する必要がありません。)

また、2行目の import matplotlib.pyplot as plt を記入することで、matplotlib.pyplotplt という名前で使うことができます。


matplotlib.pyplot をメソッドと合わせて使用する際には plt.メソッド() と記入だけでokです。

matplotlib.piplot でデータを準備して描図してみる

まず、グラフとして描きたいデータを ndarray 形式で入力します。

ここでは、np.random.rand() を用いて数値 x, y をランダムに20個用意します。

ランダムに20個用意下あとはx に 1を加えた値と、y を3倍下値を代入し、グラフに表示させます。

これを表示すると以下の様な図ができます。
matplotlib 使い方 グラフ

あちこちに散らばっていて分かりにくいですね。

原因は $x$, $y$ が非常にバラバラなのに対して直線で一点一点ずつ結んで行こうとしたからです。


もう少し直線のグラフを作っていきましょう。

matplotlib.piplot で滑らかなグラフを描図してみる

先ほどはめっちゃ折れ曲がったグラフができましたので、比較的きれいな直線を描いてみましょう。


$x $ 軸は np.arange(1, 21) としたので、1〜21までの配列です。


$y$ 軸は、1未満の値でランダムな数の要素を20個集めた配列です。


$x$ と $y$ を各々20個ずつ集めるのがポイントですね。
それだと値が小さすぎるので、値を3倍にしています。


グラフを表示する際にはplt.plot(横軸$x$, 縦軸$y$) と記載します。
こちらが、描図したグラフとなります。

python matplotlib 使い方 グラフ

描図するグラフの種類について

グラフのスタイル(破線や点、色など)を決定するには plot() の引数() に追加で情報を記入します。

スタイルキーワード引数コード種類
線の種類linestylelinestyle = “–“破線
点の記号markermarker = “<“triangle_leftマーカー
線の色colorcolor = “b”青色

他にも色々な種類のマーキングの仕方があります。

matplotlib.piplot のNtes の欄を参照して色々な表示の仕方について確認してみてください。

描図するグラフに装飾を加える

グラフに装飾を加える plt.plot()

描画するグラフに色々な装飾を加える差異には plt.plot() の引数に色々加えます。

python matplotlib 使い方 グラフ
※ グラフの装飾は plt.plot() を実行すると毎回削除されてリセットできます。

グラフにパーツを加える plt.title()

グラフのタイトルや横軸、縦軸のラベルや目盛の有無などを加える方法もあります。

 メソッド利用例
タイトルtitle()plt.title("time - salary")
横軸xlabel()

plt.xlabel("time")

縦軸ylabel()plt.ylabel("salary")
目盛grid()plt.grid(False)

※ そのほかの設定項目は、以下の公式サイトをご参照ください。
>> The pyplot API – Matplotlib documentation


このうちいくつかの項目を抽出しまとめていたサイトがありますので、紹介します。>> 【Pynote】matplolib- 目盛、グリッドの調整方法


では格子も使用してグラフを描いてみましょう。

python matplotlib 使い方 グラフ

代表的なグラフの種類

python matplotlib 入門

棒線グラフ(縦は plt.bar(), 横は plt.barh())

縦の棒グラフは plt.bar() 、横の棒グラフは plt.barh()となります。

まずは 横棒グラフ plt.barth() から描きます。

python matplotlib 使い方 グラフ
次に縦棒のグラフplt.bar() を描いていきます。

python matplotlib 使い方 グラフ

以下の公式ドキュメントも参考にしてください。

matplotlib.pyplot.bar – Matplotlib documentation

matplotlib.pyplot.barh – Matplotlib documentation

散布図

散布図は plt.scatter() を使用します。

例えばカップラーメンの値段とバナナの値段をお店別にプロットした表を作成してみます。

python matplotlib 使い方 グラフ

こんな感じになります。

plt.scatter() 公式ドキュメントも参照してください。

円グラフ

円グラフは plt.pie() を使用します。

python matplotlib 使い方 グラフ

少し見えにくいかもしれませんが、描図するとこの様な感じになります。


普通時計回りかと思いきや、半時計回りに描かれるのがポイントです。


autopct はデータの書式設定のことです。


%.1f%% は小数点以下が1桁で%で表示する、という意味を持ちます。


%% としているのは「%をパーセント記号として表示」するという意味です。
以下のサイトのエスケープシーケンスを参照してください。
>>【memoring】Python一般


startangle は 円グラフをスタートさせる角度です。時計の3時方向をスタートと地点して反時計回りに何度か、という指定をします。


上にも記載しましたが、謎に半時計回りです。

多数のグラフを同時に表示する

python matplotlib 入門

あるグラフに別のグラフを追加する

ある青い線のグラフと同じ領域に赤い線のグラフを描く場合、plt.plot() を指定します。

python matplotlib 使い方 グラフ

plt.legend() はグラフのラベルを表示するメソッドです。


このグラフでは左上にラベルを表示させてみました。表示場所の指定の仕方については、以下のサイトを参考にしてください。
>>matplotlib.pyplot.legend – Matplotlib documentation

複数のグラフを横に並べて表示する

次に、2つのグラフを作って横並びにするメソッドを紹介します。

 plt.figure() を実行するだけです。

python matplotlib 使い方 グラフ

ポイント
  • add_subplot(x, y, z) の引数の書き方について解説します。
  • 引数のうちの最初の2つ(x と y)は「縦 x 行、横 y 列」のグラフを作るという意味です。
  • 3つ目の引数 z は何番目にグラフを表示するかを意味します。

近似直線の描いてみる

最後に散布図のグラフに近似直線を描いてみましょう。

近似直線を描くためには単回帰分析が必要ですが、単回帰分析と最小2乗法については以下の記事で紹介していますので、参考にしてください。単回帰分析 データ 評価関数単回帰分析と最小2乗法の求め方もしくは、こちらのサイトも参考になるのでご参照ください。
>> 最小二乗法 – Wikipedia

さらにNumPyでは、最小二乗法による近似直線の式を簡単に導出できるメソッドが用意されています。np.polyfit() です。こちらを用いることで、近似直線(一次関数)の式 y = ax + b の a と b を求めることができます。

python matplotlib 使い方 グラフ

np.polyfit() の引数は3つあります。


1番目と2番目の引数は、それぞれ横軸と縦軸のデータの配列です。


3つ目は、●次関数の●を示しています。


このメソッドの戻り値は y = ax + b のうち a と b の値が入ったタプルのデータです。

次に np.poly1d() を実行しています。これは先ほど出した式(一時関数)のオブジェクトを生成するという意味があります。


a * x + b と自分で式を記述しても良いですが、np.poly1d() と記載することで、plt.plot(x, f(x)) の中に f(x) と書くことができます。


np.polyfit()np.poly1d()plt.plot(x, f(x))  この流れをつかみましょう。

まとめ|Matplotlibの使い方【基礎から応用まで】

python matplotlib 入門

いかがでしたでしょうか。


Matplotlibの基本的な内容から具体的な描図の方法まで解説させて頂きました。


さらっと流していますが、この記事を読み終えた頃には最終的に最小2乗法を用いて単回帰分析を用いて近似曲線をpythonを使用して描くことができる様になっています。


もしわかりにくい箇所があれば、ご指摘いただければ幸いです。