web-dev-qa-db-ja.com

Ipythonでmatplotlibプロットとインターレースされた印刷ステートメントをインラインで表示する方法は?

印刷ステートメントの出力を、Ipythonノートブックセルで印刷およびプロットされた順序で、プロットとインターレースしたいと思います。たとえば、次のコードを考えてみます。

ipython notebook --no-browser --no-mathjaxでipythonを起動)

%matplotlib inline
import matplotlib.pyplot as plt

i = 0
for data in manydata:
    fig, ax = plt.subplots()
    print "data number i =", i
    ax.hist(data)
    i = i + 1

理想的には、出力は次のようになります。

data number i = 0
(histogram plot)
data number i = 1
(histogram plot)
...

ただし、Ipythonでの実際の出力は次のようになります。

data number i = 0
data number i = 1
...
(histogram plot)
(histogram plot)
...

Ipythonの直接的な解決策、またはインターレース出力を取得するための回避策または代替解決策はありますか?

22
foghorn

簡単な解決策があります。プロットした後、matplotlib.pyplot.show()関数を使用します。

これは、コードの次の行を実行する前にグラフを表示します

%matplotlib inline
import matplotlib.pyplot as plt

i = 0
for data in manydata:
    fig, ax = plt.subplots()
    print "data number i =", i
    ax.hist(data)
    plt.show() # this will load image to console before executing next line of code
    i = i + 1

このコードは要求どおりに機能します

18
Rahul Gupta