plt.show()を省略したい

Pythonのmatplotlibで図を描画しようとするプログラムを作成。

いざ実行すると、plt.show()が抜けていて、図がでないということがないでしょうか。

どうにかplt.show()を省略できないのかということでいろいろ調べました。

JupyterNotebookの場合

どうやら以下のように一文挿入することでplt.show()が省略できるようです。

%matplotlib inline

また、以下のように記述すると、よりインタラクティブに操作ができます。

%matplotlib notebook

JupyterNotebookを用いない場合

現に私は、JupyterNotebookは使っていません。ですので、JupyterNotebook以外での方法がないのか模索しました。

すると、IPythonでもplt.show()を省略できるようです。

1行目に%matplotlib inlineを指定することで、plt.show()を省略できます。

また、私の環境(OS:Ubuntu、Ipython 7.19.0、python 3.8.5)では、%matplotlib inlineをしても図は表示されませんでした。

<Figure size 432×288 with 1 Axes>とあり、図は出ているようですが、ターミナル上であるためでないようです。

In[1]: %matplotlib inline
In[2]: import matplotlib.pyplot as plt
In[3]: import numpy as np
In[4]: xx=np.linspace(-10,10,100)
In[5]: yy=np.sin(x)
In[6]: plt.plot(x,y)
<Figure size 432×288 with 1 Axes>
In[7]: 

%matplotlib notebookでは、代わりにqtを使えとのことです。

In[16]: %matplotlib notebook
Warning: Cannot change to a different GUI toolkit: notebook. Using qt instead.

なので、%matplotlib qtを用います。すると、別ウィンドウで図が出ました。

In[1]: %matplotlib qt
In[2]: import matplotlib.pyplot as plt
In[3]: import numpy as np
In[4]: xx=np.linspace(-10,10,100)
In[5]: yy=np.sin(x)
In[6]: plt.plot(x,y)
Out[6][:<matplotlib.lines.Line2D at 0x7f8507bd8190>]
In[7]: 

まとめ

JupyterNotebookやIPythonでないと省略できないということでした。

これを機にJupyterNotebookを使ってみたいと思います。