2017-09-27 1 views
1

plt.plot(x,y)plt.show()のコマンドがmatplotlib.pyplotの間で実行される基本的なバックボーンプロセスを知りたいと思っていました。それをビット、コードの一部詳しく説明しplt.plot(x、y)とplt.show()はどのように機能しますか?

plt.plot(x , y) 
plt.show() 

所望グラフ(それに問題はない)を示します。また

、コード:

plt.plot(x , y) 
plt.plot(p , q) 
plt.show() 
だけでなく正常に動作します

x & yとp & qで作成された2つのプロットを示しています。

ここでは、ipythonで動的にコーディングすると非常に興味深いものがあります。

関係なく、私はそれがすべてでグラフを表示しません(私は一度それを呼ばれるした後) plt.show()を呼び出す回数を今すぐ
In [73]: plt.plot(x , y) 
#normal plotting function. 
In [78]: plt.show() 
#shows a graph as intended. 
In [79]: plt.show() 
#shows nothing. 

、。 なぜそうですか?

PS:私の理解のために、このプロセスでオブジェクトが作成され、削除されている可能性があります。しかし、どちらも私は確信も確信もしていません。

ありがとうございます。

+0

これは本当に重複していると思われます。再表示するように数字などを保存することができます - 一度 'show()'が完了したらhttps://stackoverflow.com/questions/5524858/matplotlib-show-doesnt-work-twice – doctorlove

+0

@doctorloveはい質問を投稿する前に、ハイパーリンクされた質問の質問に遭遇しました。私はどのように(そして、もし可能な場合)なぜこれが起こるかを知りたがっていました。私は、 'show()'が呼ばれたら、それが完了したことを理解しています。質問は*どのように行われているかです。 –

答えて

3

Pyplotは、いわゆる "statemachine"を使用しているか、いわゆる "statemachine"です。それは現在の軸と図形への多数の図と参照を格納します。 showが呼び出されると、すべての数字が表示され、showが返されると、それらはステートマシンから削除されます。

showへの以降の呼び出しでは、これ以上表示される数字がないため、出力は表示されません。

したがって、showがスクリプト内で1回だけ呼び出されるという(おそらく未書き込みまたは暗黙の)仮定があります。

数字はステートマシンから削除されますが、閉じられるまでメモリに残りますが、注意する必要はありません。したがって、特定の状況下で、また、必要なワークフローに応じて再利用される可能性があります。

+0

リンクされたトピックの引用によれば、スクリプトの最後の行として、一度呼び出されるという意図で明示的にコード化されています。 – Uvar

+0

このステートマシンの動作は、オブジェクトの作成と削除によって制御されるのですか?これは(全く異なる)概念です。 –

+0

内部でオブジェクトが作成されていることを確認します。言われているように、それらは削除されず、むしろ何らかのコレクションから削除されます。 – ImportanceOfBeingErnest

関連する問題