如何在matplotlib子图场景下将图例放置在绘图区域外不重叠
解决方案
出现重叠的核心原因是画布默认的右侧边距不足以容纳放在外部的图例,可按以下步骤调整:
- 调整图例的锚点坐标,给图例留出足够的偏移空间,将
bbox_to_anchor的横坐标从1调整为略大于1的数值(比如1.15),代码修改为:
multi_fig.legend(labels = energy_data["Fuel"].unique(), bbox_to_anchor=(1.15, 1), loc="upper right")
- 调整画布布局,避免图例被画布边缘截断,在所有子图绘制完成后调用
tight_layout方法,通过rect参数为图例预留右侧空间:
# rect参数的四个值依次对应画布左、下、右、上的边界比例,右侧设为0.85即为图例预留15%的画布宽度 multi_fig.tight_layout(rect=[0, 0, 0.85, 1])
如果需要更灵活的边距控制,也可以用subplots_adjust手动设置右侧边距:
multi_fig.subplots_adjust(right=0.8)
如果图例内容较长,可以适当调大bbox_to_anchor的横坐标值,同时对应缩小tight_layout的rect右边界值,直到没有重叠且图例显示完整
内容的提问来源于stack exchange,提问作者phald
相关产品推荐
相关产品推荐

