matplotlib 図を描く(% matplotlib inlineと、fig = plt.figure())

pythonでグラフを描きたい時、Googleで『基礎』を知りたくて検索しても、まず『図の配置の仕方』から始まって、肝心のグラフの説明は後回しで、心が折れそうになります。

確かに基礎は基礎ですが、とにかく意中のグラフを描きたいのが初心者のホントのトコロ。

最低限のお作法を踏んだ上で、すぐにグラフにとりかかりませよう。

嫌になる前に、とにかくまず描いてしまいましょう。


matplotlibをインポートする

matplotlibを使う際は、matplotlibライブラリをインポートします。その際に、「% matplotlib inline」も併せて記述します。こちらは、Jupyter Notebookで、ノートブック上にグラフを描画する際に必要な記述です。

要は、Jupiternotebookを使っておけば、「% matplotlib inline」を記述するとスルッとグラフが描けます。

import matplotlib.pyplot as plt
%matplotlib inline

実行結果:

特に結果はありません。エラーでなければ正しくインポートされています。


% matplotlib inlineを活かしたグラフ

折れ線グラフは、.plot()関数で描けます。 .plot(x軸,y軸)が基本構造になります。

label = [10,27,39,51,72]
data = [1,2,3,4,5]
plt.plot(label,data)

実行結果:

無題

簡単な図が描けました。

裏技的な教えですが、この図を保存したい場合、Jupiternotebookに描かれた図をドラッグもしくはクリックし、左クリックより『名前を付けて保存』でも保存可能。

グラフタイトル、x軸およびy軸のラベルを入れる

Excelでグラフを描くように、デフォルトで何もかもが出ないのがpythonでの描写。タイトルも軸の名前も自分で指定します。

1回限りの図ならExcelで描けば良いですが、ループで回したり、何度も作る場合はpythonでコードを保存しておくと楽です。

label = [10,27,39,51,72]
data = [1,2,3,4,5]

plt.plot(label,data)
plt.title("lebel/data")
plt.xlabel("label")
plt.ylabel("data")
plt.show()

実行結果:

無題

また、グラフのポイントを入れる場合や、グリッドを表示する場合は、以下を足すと便利です。

label = [10,27,39,51,72]
data = [1,2,3,4,5]

plt.plot(label,data,marker = "x")
plt.title("lebel/data")
plt.xlabel("label")
plt.ylabel("data")
plt.grid(True)
plt.show()

実行結果:

無題

少し華やかになりました。


fig = plt.figure()のグラフ

Excelでグラフを描く場合、xとyを指定して描きます。グラフを描く時に『前処理』や『土台作り』はしなくても良いです。Jupiternotebookで、% matplotlib inlineを記述しておく場合も簡易にグラフが確認できます。

しかし、一般的にコードを使って図を描く場合は、まず”今から描きまっせ!”という『土台作り』をしなくてはなりません

初心者は面倒に感じますが、これを覚えておくと、グラフの幅が広がります。

では、いきましょう。

fig = plt.figure()

これを描いてから、グラフ作業に移ります。

イメージとして、pandasなどで使う、データフレームを作るための場を用意しておく『 dataframe = [] 』のような感じです。

空の 『fig』 に描きたいグラフを足す という理解で良いと思います。


1つしかグラフを作らない場合 fig.add_subplot(111)

土台作りの次は、グラフの位置を伝えます。

Excelでグラフを作る時は、ドラッグで好きな所にグラフを移動できますが、コードで書く場合は、配置を伝えることが必要です。

それに必要な関数が、fig.add_subplot( 行, 列 , 番目) になります。

イメージとしては、こんな感じです。

画像4

ax = fig.add_subplot(2, 3, 1) #2行3列の1番目、黄色の部分に図を描きたい時
ax = fig.add_subplot(2, 3, 1) #2行3列の6番目、緑色の部分に図を描きたい時

1つだけのグラフの場合、ax = fig.add_subplot(1, 1, 1) とします。(111)と『,』を省略する場合もあります。

引き続き、こちらの関数に、x軸とy軸の引数を渡します。

ax = fig.add_subplot(111, xlabel= "label", ylabel="data")

こうね。

で、ここで土台が整いました。

実際のグラフを描く記述を足します。axという変数に.plot()で加工するイメージです。

ax.plot(x軸,y軸)で描いていきます。マーカーを付けたい場合は、y軸の後にmarker = "x"と記述するとよし。

一連のコードを見てみましょう。

label = [10,27,39,51,72]
data = [1,2,3,4,5]

fig = plt.figure()
ax = fig.add_subplot(111, xlabel= "label", ylabel="data") #位置、x軸、y軸してい
ax.plot(label,data,marker = "x") #グラフを描く記述
ax.grid(True)#グリッド
fig.suptitle('lebel/data')#タイトル

事項結果:

無題

できました。

同じ図ですが、描き方が違うことが体感できたでしょうか。

個人的には、%matplotlib inlineが好みですが、2つの使い方があることを覚えておくと吉です。


この記事が気に入ったらサポートをしてみませんか?