YutaKaのPython教室

Python の文法やライブラリ、API、環境構築について画像・動画・ソースコード付きで徹底解説!

matplotlib inline の謎解明! |「書けと言われたので書いています」から卒業

upyter Notebookでmatplotlibを使用する場合には、インポートする前に

  • %matplotlib inline

と記述しますよね?では…

  • なぜinlineと入力しているのでしょうか?
  • 入力し忘れても動くことがあるのはなぜでしょうか?
  • %matplotlib notebookというコマンドもあるのをご存じでしょうか?

この記事では、matplotlib inlineの謎について解説していきたいと思います!

 

Jupyte Notebookのmatplotlibの読み込み|%matplotlib inline

Jupyter Notebookでmatplotlibを使用する場合、次のように読み込むことが多いと思います。

%matplotlib inline
import matplotlib.pyplot as plt

%matplotlib inlineを指定してから、matplotlib.pyplotをインポートしています。

pyplotモジュールについて詳しく知りたい方は、まず次の記事をご覧ください)

このとき%matplotlib inlineには、どんな意味があるのでしょうか?

今回は、%matplotlib inlineの謎について解説していきます。

%matplotlib inlineを指定したときの挙動

%matplotlib inlineを指定したときの挙動:

  • グラフがアウトプット行に出力される
  • plt.show()を省略してもグラフが出力される
  • plt.show()でアウトプット行に2つ以上のグラフ表示可能

グラフがアウトプット行に出力される

%matplotlib inlineを実行してプロットを作成すると、アウトプット行に図が出力されます。

アウトプット行内(in line)にグラフが出力されるので、まさにinlineです。

Jupyter Notebookでは、アウトプットを確認しながらスクリプトを書くことが多いので、

  • いちいちポップアップが出ない
  • アウトプット行にグラフを表示できる

というのはとても便利です。

plt.show()を省略してもグラフが出力される

対話側実行環境やエディタでは、グラフの表示のためにplt.show()を実行する必要があります。

一方、%matplotlib inlineを使用したnotebook環境ではplt.show()を省略してもグラフが出力されます。

plt.show()の書き忘れはよくあるので、とても便利な機能だと思います。

一点注意したいのが、plt.show()を省略するとアウトプット行にオブジェクトの場所が出力されます。

もし、これを表示させたくない場合はplt.show()を省略せずに記述しましょう

plt.show()でアウトプット行に2つのグラフ表示

インプット行にplt.show()が記述されていると、その段階でグラフが出力されます。

これを利用すると、スクリプトをplt.show()で区切ることで2つ以上のグラフを1つのアウトプット行に表示できます。

x = np.linspace(0, 2*np.pi)
 
# 1つ目のグラフを描く
plt.plot(x, np.sin(x))
plt.show() # ここで1つ目のグラフ出力
  
# 2つ目のグラフを描く
plt.plot(x, np.cos(x))
plt.show() # ここで2つ目のグラフ出力

クイックに結果を確認する場合には手軽で良い方法だと思います。

とはいっても、これはあくまで異なる2つの図を出力しているだけです。

2つ以上のグラフを作成して、配置やタイトルなども調整したい場合はsubplotを使用しましょう。

【PR】Matplotlib関連の書籍はこちら

%matplotlib inlineの意味 =「バックエンドの指定」

%matplotlib inlinematplotlibのバックエンドをinlineに設定するという意味です。

matplotlibのバックエンドについて解説していきます。

バックエンドとは?

バックエンドとは、グラフを出力するためのmatplotlibの内部処理です。

通常、ユーザーはフロントエンドと呼ばれるスクリプト部分を記述しています。

  • フロントエンド:ユーザーが記述するスクリプト
  • バックエンド:matplotlib内の処理、グラフの出力形式に応じて処理する

matplotlibではバックエンドの種類を変更することによって、グラフの出力形式を

  • inlineモードで出力
  • pngファイルで出力・保存
  • インタラクティブモードで出力(出力した図を操作して拡大などができる)

などに変更することができます。

他にもたくさんのバックエンドが存在します。

%matplotlib inlineは、バックエンドをアウトプット行出力用に設定するという意味です。

バックエンドの確認方法

バックエンドを確認したい場合には

  • matplotlib.get_backend()

を実行します。

%matplotlib inline
import matplotlib
 
matplotlib.get_backend()
# 'module://ipykernel.pylab.backend_inline'

たしかにinlineになっているようですね。

%matplotlib inlineは必要ない?

%matplotlib inlineを入力し忘れても、アウトプット行にグラフが表示された経験がある方もいるかと思います。

なぜでしょうか?

実は、notebook使用時のデフォルトのバックエンドはinlineになっているという情報があります。

そのため、比較的新しいバージョンのmatplotlibを使用していれば、%matplotlib inlineは必要がないようです。

ただ、具体的な情報ソースが見つからないので、とりあえずinlineは書いておいた方が良さそうです。

%matplotlib notebook|インタラクティブモード

このバックエンドでは、図をインタラクティブモードで出力します。

インタラクティブモードには:

  • 図の領域の大きさ変更
  • 図の平行移動、拡大・縮小
  • アニメーション出力時に使用

することができるという特徴があります。

インタラクティブモードの出力例を紹介します。

%matplotlib notebook
import matplotlib.pyplot as plt
import numpy as np
 
x = np.linspace(0, 2*np.pi)
y = np.sin(x)
 
plt.plot(x, y)
plt.show()

次のようなインタラクティブモードでグラフが出力されます。

各ボタンは次のような機能を持っています。

インタラクティブモードは便利な反面デメリットがあります。

  • 終了ボタンを押さないと別のセルのグラフまで同じグラフに出力されてしまう

という点です。

複数のインプット行でグラフを出力する場合、いちいち終了ボタンを手で押す必要があるので不便ですね。

複数のインプット行でグラフを出力する場合はinlineの方が便利です。

おわりに:matplotlib関連記事の紹介

今回は、matplotlibインポート時に指定する%matplotlib inlineの謎について解説しました。

もっとMatplotlibを自由自在に操作したい!という方へのおススメコンテンツはこちらです!

≫Matplotlib inline の謎解明! |「書けと言われたので書いています」から卒業
≫Matplotlib inline の謎解明! |「書けと言われたので書いています」から卒業
Jupyter Notebookでmatplotlibを使用する場合には、インポートする前に%matplotlib inlineと記述します。なぜinlineと入力しているのでしょうか?この記事では、matplotlib inlineの謎について解説していきたいと思います!
www.yutaka-note.com/entry/matplotlib_inline
 
≫Matplotlib plt.textよく使うもの徹底解説|テキスト表示をマスター!
≫Matplotlib plt.textよく使うもの徹底解説|テキスト表示をマスター!
グラフ内にテキストでコメントを記入することってよくありますよね?グラフにコメントがあると、グラフの大事な部分を強調して説明できます。この記事では、matplotlibでグラフ内にテキストを表示する方法、テキストの見た目の変更方法について図解・サンプルコード付きで解説しています!
www.yutaka-note.com/entry/2020/01/08/080413
 
≫Matplotlib color 色の指定 | 一文字指定からカラーマップの使い方まで徹底解説
≫Matplotlib color 色の指定 | 一文字指定からカラーマップの使い方まで徹底解説
伝わるグラフを作るためのポイントはなんでしょうか?いかに視覚的にわかりやすいか、これが大切です。それには重要な要素に色をつけて、視覚的にうったえることが超大切!この記事では、matplotlibでの色の指定方法について、基本から応用まで徹底解説!
www.yutaka-note.com/entry/matplotlib_color
 
≫Matplotlib 軸周り完璧マスターガイド | 軸・軸目盛・目盛り線の設定
≫Matplotlib 軸周り完璧マスターガイド | 軸・軸目盛・目盛り線の設定
Matplotlibで大変なのが軸周りの設定!グラフの「この要素」を変更するには、「どのメソッド」を使えばいいのかわからない…。という方のために、Matplotlibの軸・目盛り・目盛り線の設定について総まとめしました!これで軸周りの設定がだいぶ楽になります。軸周り完ぺきマスターガイド!
www.yutaka-note.com/entry/matplotlib_axis
 
≫Matplotlib 棒グラフを徹底解説|複数系列・積み上げ棒グラフ全てOK
≫Matplotlib 棒グラフを徹底解説|複数系列・積み上げ棒グラフ全てOK
Matplotlibで棒グラフを作成する方法がよくわからない…。 棒グラフで悩むなら、MatplotlibあきらめてExcel使おうかな…。 と思ったことはありませんか?そんな方のために、Matplotlibの棒グラフ作成方法を徹底的に解説しました!複数系列?積み上げ棒グラフ?全部大丈夫!
www.yutaka-note.com/entry/matplotlib_bar
 
≫Matplotlib 散布図を徹底解説!|基本設定からバブルチャートまで
≫Matplotlib 散布図を徹底解説!|基本設定からバブルチャートまで
Matplotlibで散布図を作成する方法がよくわからない…。散布図って何のためにあるの?全部、plt.plotでグラフ作ればよくない?という方のために、「Matplotlibの散布図の作成方法、散布図を応用したデータの可視化例」についてまとめしました!
www.yutaka-note.com/entry/matplotlib_scatter
 
≫Matplotlib 円グラフ作成方法|Excel風グラフ、ドーナツグラフも解説
≫Matplotlib 円グラフ作成方法|Excel風グラフ、ドーナツグラフも解説
Matplotlibで円グラフを作成する方法がよくわからない…。何を設定すれば、自分の描きたい円グラフになるのかわからない!という方のために、「Matplotlibの円グラフ作成方法」、「Excel風の見た目に設定する方法」、「グラフやラベルの設定方法」についてまとめしました!これで自由に円グラフを作成できます!
www.yutaka-note.com/entry/matplotlib_pie
 
≫Matplotlib subplotの使い方徹底図解!|一つの図に複数グラフを描く
≫Matplotlib subplotの使い方徹底図解!|一つの図に複数グラフを描く
Matplotlibで一つの図の中に複数のグラフを並べるにはどうすればいいの?subplotでグラフを並べられるらしいけど、使い方がよくわからない!という方のために、「plt.subplot()の基本的な使い方」を画像付きで解説していきます!plt.subplot()でプロットをキレイに配置して、見やすく人に伝わるグラフを目指しましょう!
www.yutaka-note.com/entry/2020/01/02/232925
 
≫【完全保存版】Matplotlib plt.plot徹底解説 | 基本操作を総まとめ!
≫【完全保存版】Matplotlib plt.plot徹底解説 | 基本操作を総まとめ!
Matplotlibのplt.plotを使用したグラフを作成、グラフの見た目変更、タイトルや軸の設定など基本事項について徹底解説!!この記事を読めば、plt.plotで手軽に手早く簡単に、キレイなグラフ作成可能に!?
www.yutaka-note.com/entry/matplotlib_pyplot
 
≫Matplotlib アニメーション作成入門編 |ArtistAnimation徹底解説!
≫Matplotlib アニメーション作成入門編 |ArtistAnimation徹底解説!
Matplotlibではアニメーションも作成できますが、初めての人には少し複雑です…。「 Matplotlibでアニメーションを描きたいけど、何から始めればいいの?」という方のために、 Matplotlibでアニメーションを超簡単に作成・保存する方法、アニメーション作成用の超基本テンプレを画像・サンプルコード付きで紹介していきます!
www.yutaka-note.com/entry/matplotlib_artist_anim
 
≫Matplotlib FuncAnimation徹底解説|更新用関数はこう作ればいい!
≫Matplotlib FuncAnimation徹底解説|更新用関数はこう作ればいい!
Matplotlibではアニメーションも作成できますが、初めての人には少し複雑です…。「Matplotlibでアニメーションを描きたいけど、よくわからない!」、「FuncAnimationで更新用関数作るって何?意味不明!!」という方のために、FuncAnimationでアニメーションを作成する超基本、更新用関数の作成方法、重要メソッドを画像・サンプルコード付きで紹介していきます!
www.yutaka-note.com/entry/matplotlib_func_anim
 
Matplotlib plt.figure()を使う理由|FigureとAxesの関係を把握しよう
Matplotlib plt.figure()を使う理由|FigureとAxesの関係を把握しよう
Matplotlibでグラフを描くとき「FigureとかAxesとかMatplotlib独特の単語が多くてよくわからない」、「Figureを作った後、結局どうやってプロットすればいいの?」という方のために、FigureとAxesの関係性を図解!FigureにAxesを追加する方法厳選3パターンを解説します!覚えておきたいFigureの設定・操作(サイズ変更、レイアウト調整など)も画像・サンプルコード付きで解説!
www.yutaka-note.com/entry/matplotlib_figure
 

Twitter@YutaKaでは、ほぼ毎日pythonに関する情報を発信しています。

気楽にツイートしているので、気軽にフォローしてください!