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( 行, 列 , 番目) になります。
イメージとしては、こんな感じです。
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つの使い方があることを覚えておくと吉です。
この記事が気に入ったらサポートをしてみませんか?