1.圖例legend基礎語法及用法
legend語法參數如下: matplotlib.pyplot.legend(*args, **kwargs)
Keyword |
Description |
loc |
Location code string, or tuple (see below).圖例所有figure位置 |
prop |
the font property字體參數 |
fontsize |
the font size (used only if prop is not specified) |
markerscale |
the relative size of legend markers vs. original 圖例標記與原始標記的相對大小 |
markerfirst |
If True (default), marker is to left of the label. 如果為True,則圖例標記位於圖例標簽的左側 |
numpoints |
the number of points in the legend for line 為線條圖圖例條目創建的標記點數 |
scatterpoints |
the number of points in the legend for scatter plot 為散點圖圖例條目創建的標記點數 |
scatteryoffsets |
a list of yoffsets for scatter symbols in legend 為散點圖圖例條目創建的標記的垂直偏移量 |
frameon |
If True, draw the legend on a patch (frame). 控制是否應在圖例周圍繪制框架 |
fancybox |
If True, draw the frame with a round fancybox. 控制是否應在構成圖例背景的FancyBboxPatch周圍啟用圓邊 |
shadow |
If True, draw a shadow behind legend. 控制是否在圖例后面畫一個陰影 |
framealpha |
Transparency of the frame. 控制圖例框架的 Alpha 透明度 |
edgecolor |
Frame edgecolor. |
facecolor |
Frame facecolor. |
ncol |
number of columns 設置圖例分為n列展示 |
borderpad |
the fractional whitespace inside the legend border 圖例邊框的內邊距 |
labelspacing |
the vertical space between the legend entries 圖例條目之間的垂直間距 |
handlelength |
the length of the legend handles 圖例句柄的長度 |
handleheight |
the height of the legend handles 圖例句柄的高度 |
handletextpad |
the pad between the legend handle and text 圖例句柄和文本之間的間距 |
borderaxespad |
the pad between the axes and legend border 軸與圖例邊框之間的距離 |
columnspacing |
the spacing between columns 列間距 |
title |
the legend title |
bbox_to_anchor |
the bbox that the legend will be anchored.指定圖例在軸的位置 |
bbox_transform |
the transform for the bbox. transAxes if None. |
(1)設置圖例位置
使用loc參數
plt.legend(loc='lower left')
0: ‘best' 1: ‘upper right' 2: ‘upper left' 3: ‘lower left' |
4: ‘lower right' 5: ‘right' 6: ‘center left' |
7: ‘center right' 8: ‘lower center' 9: ‘upper center' 10: ‘center' |
(2)設置圖例字體
#設置字體大小
fontsize : int or float or {‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’}
(3)設置圖例邊框及背景
plt.legend(loc='best',frameon=False) #去掉圖例邊框
plt.legend(loc='best',edgecolor='blue') #設置圖例邊框顏色
plt.legend(loc='best',facecolor='blue') #設置圖例背景顏色,若無邊框,參數無效
(4)設置圖例標題
plt.legend(loc='best',title='figure 1 legend') #去掉圖例邊框
2.legend面向對象命令
(1)獲取並設置legend圖例
plt.legend(loc=0, numpoints=1)
leg = plt.gca().get_legend() #或leg=ax.get_legend()
ltext = leg.get_texts()
plt.setp(ltext, fontsize=12,fontweight='bold')
(2)設置圖例
legend = ax.legend((rectsTest1, rectsTest2, rectsTest3), ('test1', 'test2', 'test3'))
legend = ax.legend(loc='upper center', shadow=True, fontsize='x-large')
legend.get_frame().set_facecolor('red') #設置圖例legend背景為紅色
frame = legend.get_frame()
frame.set_alpha(1)
frame.set_facecolor('none') #設置圖例legend背景透明
(3)移除圖例
ax1.legend_.remove() ##移除子圖ax1中的圖例
ax2.legend_.remove() ##移除子圖ax2中的圖例
ax3.legend_.remove() ##移除子圖ax3中的圖例
3.案例:設置圖例legend到圖形邊界外
-
#主要是bbox_to_anchor的使用
-
box = ax1.get_position()
-
ax1.set_position([box.x0, box.y0, box.width , box.height* 0.8])
-
ax1.legend(loc='center', bbox_to_anchor=(0.5, 1.2),ncol=3)
4.案例:顯示多圖例legend
-
import matplotlib.pyplot as plt
-
import numpy as np
-
x = np.random.uniform(-1, 1, 4)
-
y = np.random.uniform(-1, 1, 4)
-
p1, = plt.plot([1,2,3])
-
p2, = plt.plot([3,2,1])
-
l1 = plt.legend([p2, p1], ["line 2", "line 1"], loc='upper left')
-
p3 = plt.scatter(x[0:2], y[0:2], marker = 'D', color='r')
-
p4 = plt.scatter(x[2:], y[2:], marker = 'D', color='g')
-
# This removes l1 from the axes.
-
plt.legend([p3, p4], ['label', 'label1'], loc='lower right', scatterpoints=1)
-
# Add l1 as a separate artist to the axes
-
plt.gca().add_artist(l1)
-
import matplotlib.pyplot as plt
-
line1, = plt.plot([1,2,3], label="Line 1", linestyle='--')
-
line2, = plt.plot([3,2,1], label="Line 2", linewidth=4)
-
# 為第一個線條創建圖例
-
first_legend = plt.legend(handles=[line1], loc=1)
-
# 手動將圖例添加到當前軸域
-
ax = plt.gca().add_artist(first_legend)
-
# 為第二個線條創建另一個圖例
-
plt.legend(handles=[line2], loc=4)
-
plt.show()