2015-12-28 69 views
3

哪個對象包含屬性ylim()?在下面的代碼中(我已經導入了所需的軟件包並正確繪製了x1y1)設置y軸限制,我必須使用plt.ylim(),爲什麼這樣呢?在我的腦海中,我會使用ax1.ylim(),因爲y軸屬於ax對象實例。有人可以解釋爲什麼這是不正確的?matplotlib圖中的fig和axx屬性

我在這裏看到了這個帖子:

Why do many examples use "fig, ax = plt.subplots()" in Matplotlib/pyplot/python

這有助於澄清這一點,但我仍然不能確定。 謝謝!

x1 = df_mstr1['datetime'].values 
y1 = df_mstr1['tons'].values 
fig1, ax1 = plt.subplots() 
ax1.stackplot(x1, y1, color='blue') 
plt.ylim(0,300) 
fig1.savefig('page.pdf', format = 'pdf') 
+1

不知道我理解的問題,但你可以用'ax.set_ylim((下限,上限) )'設置限制(http://matplotlib.org/api/axes_api.html#matplotlib.axes.Axes.set_ylim)。 'matplotlib'鼓勵兩種不同的使用方式,您可以在http://matplotlib.org/faq/usage_faq.html#coding-styles中閱讀更多內容。混合兩種風格(根據我的經驗)不是一個好主意。 – karlson

+0

這是評論的答案。如果您將其作爲答覆發佈,我會將其標記爲您的答案。 – Prevost

回答

1

您可以使用ax.set_ylim((lower, upper))設置限制(http://matplotlib.org/api/axes_api.html#matplotlib.axes.Axes.set_ylim)。

matplotlib鼓勵兩種不同的使用方式。 OO風格,提供最大的靈活性和matlab風格,大量使用全局狀態。後者對快速交互式勘探非常有用,前者是準備生產的精細調整地塊的方法。

您可以閱讀更多關於here

我建議堅持一種風格,因爲這兩個線索混合麻煩(至少這是我經歷的)

5

我想它的方式是,pyplot.ylim()是便捷功能(這不是技術上的屬性)提供MATLAB般的功能,最近設置的當前軸的y限制值(一個創建或繪製),而ax1.set_ylim()設置您命名爲ax1的特定軸對象(可能有多個)的y軸限制。

plt.ylim()適用於不需要太多定製的快速繪圖。當您需要跟蹤更多與您的情節相關的對象時,更加面向對象的ax1.set_ylim()會更好,以便更加清晰地定製它們(並跟蹤您定製的內容)。