Matplotlib-チャートオブジェクトのplt.show()
Aug 28 2020
ここに本当に簡単な例があります。関数から返されたaxオブジェクトからプロットを作成しています:
import matplotlib.pyplot as plt
x = ['a', 'b', 'c']
y = [1, 2, 3]
def make_plot():
fig, ax = plt.subplots()
ax.set_title('test bar chart')
return ax
chart = make_plot()
chart.bar(x, y)
plt.show() #why does this show the chart?
私の質問は最後のplt.show()についてです。明らかに、これはチャートの出力を示しています。しかし、なぜ?私には、plt.show()が何かに結び付けられているようには見えません。私は自分の持っているchartすべてのパラメータとその他もろもろと私のチャートを含むオブジェクトを、。しかし、plt.show()はこれとどのように相互作用することを知っていますか?クラスインスタンスのようにchart.show()、のようなものがある方が直感的に思えchartます。
回答
2 Keon Aug 28 2020 at 01:42
良い質問!chartを呼び出すと作成される軸ですplt.subplots()。Pyplotは、いわゆる「ステートフル」APIです。plt。*関数を呼び出すと、pyplotの内部状態が変更され、将来の呼び出しに影響を与える可能性があります。を呼び出すplt.subplots()と、新しく作成されたサブプロット軸を含む新しく作成されたFigureがあることがわかります。
同様に、を呼び出すとplt.plot()、最新の軸が何であるかについてのレコードが保存され、そのプロットにデータがプロットされます。
ピプロットのソースコードを見るとmanager、現在のプロットを格納するために使用するグローバル変数がどのように含まれているかがわかりmanager、プロットを作成するときに更新されます。
さらに、がありFigure.show()ます。ピプロットを回避したい場合は、次のようになります