之前,如果你想保存顯示它後面的數字再次繪製它,你需要堅持圖形實例。調用show
之後plt.savefig
不起作用的原因是當前數字已被重置。
pyplot
跟蹤哪些數字,軸等是「當前」(即尚未與show
一起顯示)的幕後。 gcf
和gca
分別獲取當前圖形和當前軸實例。 plt.savefig
(和基本上任何其他pyplot
方法)只是plt.gcf().savefig(...)
。換句話說,獲取當前圖形實例並調用它的savefig
方法。同樣plt.plot
基本上是plt.gca().plot(...)
。
調用show
後,「當前」圖形和座標軸列表爲空。
一般來說,最好直接使用figure和axes實例來繪製/保存/顯示/ etc,而不是使用plt.plot
等來隱式地獲取當前的圖形/座標軸和座標圖。使用pyplot
(尤其是交互式)使用pyplot
沒有任何問題,但它可以讓你更容易地在腳下拍攝自己。
對於plt.show()
使用pyplot
並生成圖形和軸對象,但直接使用圖形或軸方法。 (例如,ax.plot(x, y)
而不是plt.plot(x, y)
等)。這樣做的主要優點是明確的。你知道你正在繪製什麼對象,並且不必理解pyplot狀態機的作用(儘管它也不難理解狀態機接口)。
由於做事「推薦」的方式爲例,做這樣的事情:
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-1, 1, 100)
y = x**2
fig, ax = plt.subplots()
ax.plot(x, y)
fig.savefig('fig1.pdf')
plt.show()
fig.savefig('fig2.pdf')
如果你想用的pyplot
接口的一切,然後就抓住數字實例調用show
前。例如:
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-1, 1, 100)
y = x**2
plt.plot(x, y)
fig = plt.gcf()
fig.savefig('fig1.pdf')
plt.show()
fig.savefig('fig2.pdf')
編輯nm,找出這是非交互式 – tacaswell
+1,Joe。這,國際海事組織,說明爲什麼pyplot接口的使用應保持在最低限度。 –