python matplotlib實(shí)現(xiàn)將圖例放在圖外
關(guān)于matplotlib如何設(shè)置圖例的位置?如何將圖例放在圖外?以及如何在一幅圖有多個(gè)子圖的情況下,刪除重復(fù)的圖例?我用一個(gè)簡(jiǎn)單的例子說(shuō)明一下。
import pandas as pdimport numpy as npimport matplotlib.pyplot as pltfig = plt.figure(1)ax1 = fig.add_subplot(2,2,1)ax2 = fig.add_subplot(2,2,2)ax3 = fig.add_subplot(2,2,3)ax4 = fig.add_subplot(2,2,4)df1 = pd.DataFrame(np.random.randn(3,5),columns = [’one’,’two’,’three’,’four’,’five’])df2 = pd.DataFrame(np.random.randn(3,5),columns = [’one’,’two’,’three’,’four’,’five’])df3 = pd.DataFrame(np.random.randn(3,5),columns = [’one’,’two’,’three’,’four’,’five’])df4 = pd.DataFrame(np.random.randn(3,5),columns = [’one’,’two’,’three’,’four’,’five’])df1.plot(ax = ax1, title = 'df1', grid = ’on’)df2.plot(ax = ax2, title = 'df1', grid = ’on’)df3.plot(ax = ax3, title = 'df1', grid = ’on’)df4.plot(ax = ax4, title = 'df1', grid = ’on’)plt.show()
運(yùn)行結(jié)果如下
可以看出,隨機(jī)生成了幾個(gè)dataframe,在一個(gè)figure()中生成了四個(gè)子圖,每個(gè)子圖的圖例都是dataframe.columns里的值,那么如何移除這些圖例?
import pandas as pdimport numpy as npimport matplotlib.pyplot as pltfig = plt.figure(1)ax1 = fig.add_subplot(2,2,1)ax2 = fig.add_subplot(2,2,2)ax3 = fig.add_subplot(2,2,3)ax4 = fig.add_subplot(2,2,4)df1 = pd.DataFrame(np.random.randn(3,5),columns = [’one’,’two’,’three’,’four’,’five’])df2 = pd.DataFrame(np.random.randn(3,5),columns = [’one’,’two’,’three’,’four’,’five’])df3 = pd.DataFrame(np.random.randn(3,5),columns = [’one’,’two’,’three’,’four’,’five’])df4 = pd.DataFrame(np.random.randn(3,5),columns = [’one’,’two’,’three’,’four’,’five’])df1.plot(ax = ax1, title = 'df1', grid = ’on’)df2.plot(ax = ax2, title = 'df1', grid = ’on’)df3.plot(ax = ax3, title = 'df1', grid = ’on’)df4.plot(ax = ax4, title = 'df1', grid = ’on’)ax1.legend_.remove() ##移除子圖ax1中的圖例ax2.legend_.remove() ##移除子圖ax2中的圖例ax3.legend_.remove() ##移除子圖ax3中的圖例plt.show()
可以看出ax1,ax2,ax3中的圖例都被移除了,但是上圖還不是很美觀?有沒(méi)有什么辦法將圖例放到圖外面呢?請(qǐng)看:
import pandas as pdimport numpy as npimport matplotlib.pyplot as pltfig = plt.figure(1)ax1 = fig.add_subplot(2,2,1)ax2 = fig.add_subplot(2,2,2)ax3 = fig.add_subplot(2,2,3)ax4 = fig.add_subplot(2,2,4)df1 = pd.DataFrame(np.random.randn(3,5),columns = [’one’,’two’,’three’,’four’,’five’])df2 = pd.DataFrame(np.random.randn(3,5),columns = [’one’,’two’,’three’,’four’,’five’])df3 = pd.DataFrame(np.random.randn(3,5),columns = [’one’,’two’,’three’,’four’,’five’])df4 = pd.DataFrame(np.random.randn(3,5),columns = [’one’,’two’,’three’,’four’,’five’])df1.plot(ax = ax1, title = 'df1', grid = ’on’)df2.plot(ax = ax2, title = 'df1', grid = ’on’)df3.plot(ax = ax3, title = 'df1', grid = ’on’)df4.plot(ax = ax4, title = 'df1', grid = ’on’)ax1.legend_.remove()ax2.legend_.remove()ax3.legend_.remove()ax4.legend(loc=2, bbox_to_anchor=(1.05,1.0),borderaxespad = 0.) ##設(shè)置ax4中l(wèi)egend的位置,將其放在圖外plt.show()
其中參數(shù)loc用于設(shè)置legend的位置
bbox_to_anchor用于在bbox_transform坐標(biāo)(默認(rèn)軸坐標(biāo))中為圖例指定任意位置。
以上這篇python matplotlib實(shí)現(xiàn)將圖例放在圖外就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. java實(shí)現(xiàn)圖形化界面計(jì)算器2. IntelliJ Idea2017如何修改緩存文件的路徑3. IntelliJ IDEA設(shè)置條件斷點(diǎn)的方法步驟4. IIS Express 取代 ASP.NET Development Server的配置方法5. python flask框架快速入門(mén)6. Spring-Richclient 0.1.0 發(fā)布7. javascript設(shè)計(jì)模式 ? 建造者模式原理與應(yīng)用實(shí)例分析8. 淺談SpringMVC jsp前臺(tái)獲取參數(shù)的方式 EL表達(dá)式9. Python使用oslo.vmware管理ESXI虛擬機(jī)的示例參考10. Express 框架中使用 EJS 模板引擎并結(jié)合 silly-datetime 庫(kù)進(jìn)行日期格式化的實(shí)現(xiàn)方法
