很多时候再用matplotlib画图例时,直接使用的是:
plt.legend(lab)
以为它会自动调整图例的位置,今天画了个雷达图,发现图例位置和想象中的不一样,如下:
经查资料,原来可以legend 下的loc和bbox_to_anchor参数对 图例的位置进行调整:
代码如下:
plt.legend(loc='String or Number', bbox_to_anchor=(num1, num2))
其中loc参数遵循以下的表格:
String | Number |
---|---|
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 |
在图中的位置如下图所示:
如果loc可以满足要求,那么可以不用第二个参数。
第二个参数 bbox_to_anchor 被赋予的二元组中,num1 用于控制 legend 的左右移动,值越大越向右边移动,num2 用于控制 legend 的上下移动,值越大,越向上移动。用于微调图例的位置。
最后问题就得以解决啦:
plt.legend(lab, loc='upper right', bbox_to_anchor=(1.2, 1))