因此,在figure
中已添加了三個垂直子圖和add_subplot
,我該如何選擇我們說的中間圖?如何以編程方式在Matplotlib中選擇特定的子圖?
現在我做這個list解析:
[r[0] for r in sorted([[ax, ax.get_geometry()[2]] for ax in self.figure.get_axes()], key=itemgetter(1))]
在那裏我可以簡單地選擇我想要的指數,與相應的axes
。有沒有更直接的方式來做到這一點?
因此,在figure
中已添加了三個垂直子圖和add_subplot
,我該如何選擇我們說的中間圖?如何以編程方式在Matplotlib中選擇特定的子圖?
現在我做這個list解析:
[r[0] for r in sorted([[ax, ax.get_geometry()[2]] for ax in self.figure.get_axes()], key=itemgetter(1))]
在那裏我可以簡單地選擇我想要的指數,與相應的axes
。有沒有更直接的方式來做到這一點?
如果這個數字已經與鍵(參數,kwargs)次要情節,然後它會簡單地作出這樣的插曲電流和返回。
下面是一個例子:
import matplotlib.pyplot as plt
fig = plt.figure()
for vplot in [1,2,3]:
ax = fig.add_subplot(3,1,vplot)
ax.plot(range(10),range(10))
ax_again = fig.add_subplot(3,1,2)
ax_again.annotate("The middle one",xy=(7,5),xytext=(7,5))
plt.show()
中間的情節被再次調用,以便它可以被註解。
如果我使用原始通話設置背景,如果第二次獲取子圖時需要重新設置背景嗎?
是的。原始調用的參數和關鍵字用於創建唯一標識符。因此,爲了再次生成此唯一標識符,您需要再次傳遞相同的參數(網格定義,位置)和關鍵字。例如:
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(2,1,1,axisbg='red')
ax.plot(range(10),range(10))
ax = fig.add_subplot(2,1,2)
ax.plot(range(10),range(10))
ax_again = fig.add_subplot(2,1,1,axisbg='red')
ax_again.annotate("The top one",xy=(7,5),xytext=(7,5))
plt.show()
如果我用ax_again.change_geometry()
?
你會想到change_geometry,例如,從312到422,會改變你使用add_subplot的方式,但它不會。當您調用change_geometry時,似乎存在錯誤或未定義的行爲。使用參數和關鍵字生成的第一個add_subplot調用的原始唯一鍵不會更新。因此,如果要使用add_subplot調用返回軸,則需要使用原始參數和關鍵字調用add_subplot。欲瞭解更多信息,請按照這個問題報告: https://github.com/matplotlib/matplotlib/issues/429
我現在的猜測是,如果你改變任何屬性的副圖產生後,與add_subplot調用,唯一不會被調整。所以只要使用原始的參數和關鍵字,並希望這會奏效。
男人我花了數小時閱讀那些文檔,但我仍然設法忽略了這個重要部分。謝謝 – c00kiemonster
我希望我能從裏面理解matplotlib。這絕對會讓我的工作更輕鬆。我花了一段時間,從文檔中梳理出這些細節絕非易事。 我試圖看看你是否在最初的調用中傳遞了kwargs,你是否必須像第二次提示一樣在第二次傳遞它們。如果我想出任何東西,我會更新。 – Yann
所以事實證明,這個人物類有一個私人成員函數_make_key'(使)args和kwargs'的可哈希鍵';這用於識別子圖(我猜所有的座標軸都屬於圖)。所以是的,你需要精確地使用相同的參數和關鍵字。 – Yann