legend()的一個用法:
當我們有多個 axes時,我們如何把它們的圖例放在一起呢??
我們可以這么做:
import matplotlib.pyplot as plt import numpy as np x = np.arange(1, 11) fig = plt.figure(1) ax1 = plt.subplot(2, 1, 1) ax2 = plt.subplot(2, 1, 2) l1, = ax1.plot(x, x*x, 'r') #這里關鍵哦 l2, = ax2.plot(x, x*x, 'b') # 注意 plt.legend([l1, l2], ['first', 'second'], loc = 'upper right') #其中,loc表示位置的; plt.show()
在legend的參數中, loc參數設置圖例的顯示位置的:
'best' : 0, (only implemented for axes legends)(自適應方式) 'upper right' : 1, 'upper left' : 2, 'lower left' : 3, 'lower right' : 4, 'right' : 5, 'center left' : 6, 'center right' : 7, 'lower center' : 8, 'upper center' : 9, 'center' : 10,
另外,還有控制位置的重要參數:bbox_to_anchor(num1, num2), bbox_to_anchor被賦予的二元組中,第一個數值用於控制legend的左右移動,值越大越向右邊移動,第二個數值用於控制legend的上下移動,值越大,越向上移動。
其它參數看這里有:
Keyword Description loc a location code prop the font property (matplotlib.font_manager.FontProperties 對象) eg song_font = matplotlib.font_manager.FontProperties(fname='simsun.ttc', size=8) fontsize the font size (和prop互斥,不可同時使用) markerscale the relative size of legend markers vs. original 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 a frame around the legend. If None, use rc fancybox if True, draw a frame with a round fancybox. If None, use rc shadow if True, draw a shadow behind legend ncol number of columns 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 length 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.