有一招此一點點。如果您只是對解決方案感興趣,請向下滾動到最後。
plt.legend
返回一個Legend
對象的方法,允許您修改圖例的外觀。所以首先我們要保存Legend
對象:
legend = plt.legend(loc=0, fontsize=20)
我們正在尋找的方法是Legend.get_texts()
。這將返回一個Text
對象的列表,其對象的方法控制圖例文本的大小,顏色,字體等。我們只希望第二Text
對象:
text = legend.get_texts()[1]
的Text
對象有一個名爲Text.set_fontsize
方法。所以讓我們試試。總而言之,你的代碼到底應該是這樣的:
legend = plt.legend(loc=0,fontsize=20)
text = legend.get_texts()[1]
text.set_fontsize(40)
而這就是我們得到:
嗯。它看起來像這兩個的圖例條目都做得更大。這當然不是我們想要的。這裏發生了什麼,我們如何解決它?
它的缺點是每個圖例條目的大小,顏色等由FontProperties
類的實例管理。問題是這兩個條目共享相同的實例。所以設置一個實例的大小也會改變另一個實例的大小。
解決方法是創建一個新的獨立字體屬性實例,如下所示。首先,我們得到我們的文字,就像以前一樣:
text = legend.get_texts()[1]
現在,而不是立即設置大小,我們得到的字體屬性的對象,但隨後確保複製它:
props = text.get_font_properties().copy()
現在我們使這個新的,獨立字體屬性例如我們的文本的屬性:
text.set_fontproperties(props)
而且我們現在可以嘗試設置這個圖例項的大小:
text.set_size(40)
解決方案
代碼的結束,現在應該是這樣的:
legend = plt.legend(loc=0,fontsize=20)
text = legend.get_texts()[1]
props = text.get_font_properties().copy()
text.set_fontproperties(props)
text.set_size(40)
生產的情節看起來像
來源
2015-11-18 15:37:13
jme
這是一個很好的答案!不僅給出解決方案,還教你如何思考。 – buzhidao
很高興我能幫忙! – jme