程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python Matplotlib legend函數:為每條折線添加圖例

編輯:Python

對於復式折線圖來說,應該為每條折線都添加圖例,此時可以通過 legend() 函數來實現。

對於該函數可傳入兩個 list 參數,其中第一個 list 參數(handles 參數)用於引用折線圖上的每條折線;第二個 list 參數(labels)代表為每條折線所添加的圖例。


有什麼python相關報錯解答自己不會的、或者源碼資料/模塊安裝/女裝大佬精通技巧 都可以來這裡:(https://jq.qq.com/?_wv=1027&k=dwzSWSBK)或者+V:python10010問我

下面程序示范了為兩條折線添加圖例:


上面程序在調用 plot() 函數繪制折線圖時,

獲取了該函數的返回值。

由於該函數的返回值是一個列表,

而此處只需要獲取它返回的列表的第一個元素(第一個元素才代表該函數所繪制的折線圖),

因此程序利用返回值的序列解包來獲取。

上面程序中,第 11 行代碼用於為 ln2、ln1 所代表的折線添加圖例(按傳入該函數的兩個列表的元素順序一一對應),

其中 loc 參數指定圖例的添加位置,該參數支持如下參數值:

‘best’:自動選擇最佳位置。

‘upper right’:將圖例放在右上角。

‘upper left’:將圖例放在左上角。

‘lower left’:將圖例放在左下角。

‘lower right’:將圖例放在右下角。

‘right’:將圖例放在右邊。

‘center left’:將圖例放在左邊居中的位置。

‘center right’:將圖例放在右邊居中的位置。

‘lower center’:將圖例放在底部居中的位置。

‘upper center’:將圖例放在頂部居中的位置。

‘center’:將圖例放在中心。

運行上面程序,將會發現應程序並沒有繪制圖例,

這是因為 Matplotlib 默認不支持中文字體。

如果希望在程序中修改 Matplotlib 的默認字體,

則可按如下步驟進行:

使用 matplotlib.font_manager 子模塊下的 FontProperties 類加載中文字體。

在調用 legend() 函數時通過 prop 屬性指定使用中文字體。

將上面程序中第 11 行代碼改為如下幾行代碼:


上面程序使用 FontProperties 類來加載 C:Windows\Fonts\simkai.ttf 文件所對應的中文字體,

因此需要保證系統能找到該路徑下的中文字體。

再次運行上面程序,將看到如圖 1 所示的效果。


在使用 legend() 函數時可以不指定 handles 參數,只傳入 labels 參數,這樣該 labels 參數將按順序為折線圖中的多條折線添加圖例。因此,可以將上面第 5 行代碼改為如下形式:

plt.legend(labels=[‘Java基礎’,‘Android基礎’],

loc=‘lower right’,prop=my_font)

上面代碼只指定了 labels 參數,該參數傳入的列表包含兩個字符串,其中第一個字符串將作為第一條折線(虛線)的圖例,第二個字符串將作為第二條折線(短線、點相間的虛線)的圖例。

Matplotlib 也允許在調用 plot() 函數時為每條折線分別傳入 label 參數,這樣程序在調用 legend() 函數時就無須傳入 labels、handles 參數了。例如如下程序:


上面程序在調用 plot() 函數時傳入了 label 參數,這樣每條折線本身己經具有圖例了,因此程序在調用 legend() 函數生成圖例時無須傳入 labels 參數。

正如從上面程序中所看到的,每次繪制中文內容時都需要設置字體,那麼是否能改變 Matplotlib 的默認字體呢?答案是肯定的。在 Python 的交互式解釋器中輸入如下兩行命令:

import matplotlib

matplotlib.matplotlib_fname()

‘D:\Python\Python36\lib\site-packages\matplotlib\mp1-data\matplotlibrc’

其中 matplotlib_fname() 函數會顯示 Matplotlib 配置文件的保存位置,此處顯示該文件的存儲路徑為 D:\Python\Python36\lib\site-packages\matplotlib\mpl-data\matplotlibrc。打開該文件,找到如下這行代碼:

#font.family:sans-serif

上面這行代碼用於配置 Matplotlib 的默認字體,取消運行配置代碼之前的注釋符號(#),並將後面的 sans-serif 修改為本地己有的中文字體。例如使用微軟雅黑字體,只要將上面的配置代碼修改為如下形式即可:

font.family: Microsoft YaHei

通過上面設置,即可改變 Matplotlib 的默認字體,這樣即可避免每次調用 legend() 函數時都需要額外指定字體。


有什麼python相關報錯解答自己不會的、或者源碼資料/模塊安裝/女裝大佬精通技巧 都可以來這裡:(https://jq.qq.com/?_wv=1027&k=dwzSWSBK)或者+V:python10010問我


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved