如何调整matplotlib绘图图例位置,将其放在图表左侧空白区域
实现步骤&修改后代码
你原有代码首先有个小混淆点:plt.subplot(122)返回的是子图(Axes)对象,你命名为fig容易和画布(Figure)对象混淆,修正命名后调整图例参数即可实现需求:
# 将返回的子图对象命名为ax2,避免和画布对象混淆 ax2 = plt.subplot(122) legend = [] plt.plot(k_array, NDCG, 'red') legend.append("utility overall NDCG") if data_loader.GSQb: plt.plot(k_array, GSQNDCG, 'orange') legend.append("GSQ NDCG") if data_loader.BSQb: plt.plot(k_array, BSQNDCG, 'purple') legend.append("BSQ NDCG") if data_loader.GWQb: plt.plot(k_array, GWQNDCG, 'black') legend.append("GWQ NDCG") # 核心图例配置 # loc='upper right' 表示图例的右上角锚定到bbox_to_anchor指定的坐标点 # bbox_to_anchor第一个参数为x坐标,小于0即位于子图左侧外侧,可调整数值控制左右偏移 # 不需要改图例大小的话删除fontsize参数即可保留默认大小 ax2.legend(legend, loc='upper right', bbox_to_anchor=(-0.15, 1), fontsize='large') # savefig必须加bbox_inches='tight'参数,自动调整画布边界避免图例被裁切 plt.savefig(metaCat + " best utility NDCGS", bbox_inches='tight')
参数调整说明
- 图例位置不合适可修改
bbox_to_anchor的数值:第一个数值越小(如-0.2)图例越靠左,越大(如-0.1)越靠右;第二个数值控制垂直位置,越大越靠上,越小越靠下 - 不需要修改图例大小的话删除
fontsize参数即可和原有图例大小完全一致
内容的提问来源于stack exchange,提问作者javaMan
相关产品推荐
相关产品推荐

