You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用多列时如何处理Matplotlib过长图例标签问题

Matplotlib多列图例溢出问题的解决方法

当Matplotlib图例设置多列(ncol参数)时,若存在长标签,很容易出现图例超出图像范围的情况,尤其是将图例放在靠近边缘的位置时。以下是两种通用解决方案,适配任意ncol值:

方法一:启用自动约束布局

通过开启constrained_layout,让Matplotlib自动调整画布元素的位置和尺寸,避免图例溢出。

修改后的代码:

import matplotlib.pyplot as plt

# 开启约束布局,自动适配元素位置
fig, ax = plt.subplots(constrained_layout=True)
x = [1, 2, 3, 4, 5]
y1 = [4, 6, 8, 2, 10]
y2 = [5, 1, 9, 3, 7]
plt.plot(x, y1, 'b-', label='Line 1')
plt.plot(x, y2, 'r--', label='Line 2', linewidth=2)
plt.plot(x, y2, 'r--', label='Line 3', linewidth=2)
plt.plot(x, y2, 'r--', label='Some Liiiiiiiiiiine', linewidth=2)
plt.plot(x, y2, 'r--', label='Line 5', linewidth=2)
plt.plot(x, y2, 'r--', label='Line 6', linewidth=2)
plt.plot(x, y2, 'r--', label='Line 7', linewidth=2)

plt.xlim(0, 6)
plt.ylim(0, 12)
plt.xlabel('x')
plt.ylabel('y')
plt.title('Fixed Problem with ncol')

ax.legend(fontsize=12, loc='lower center', ncol=2)
plt.show()

方法二:手动指定图例的画布定位

如果需要更精准的控制,可以将图例的定位基准从坐标轴改为整个画布,通过bbox_to_anchor和transform参数调整位置,确保图例完全在画布内。

修改后的代码:

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
x = [1, 2, 3, 4, 5]
y1 = [4, 6, 8, 2, 10]
y2 = [5, 1, 9, 3, 7]
plt.plot(x, y1, 'b-', label='Line 1')
plt.plot(x, y2, 'r--', label='Line 2', linewidth=2)
plt.plot(x, y2, 'r--', label='Line 3', linewidth=2)
plt.plot(x, y2, 'r--', label='Some Liiiiiiiiiiine', linewidth=2)
plt.plot(x, y2, 'r--', label='Line 5', linewidth=2)
plt.plot(x, y2, 'r--', label='Line 6', linewidth=2)
plt.plot(x, y2, 'r--', label='Line 7', linewidth=2)

plt.xlim(0, 6)
plt.ylim(0, 12)
plt.xlabel('x')
plt.ylabel('y')
plt.title('Fixed Problem with ncol')

# 将图例定位基准改为画布,bbox_to_anchor设置为画布底部中心偏下位置
ax.legend(fontsize=12, loc='upper center', ncol=2, 
          bbox_to_anchor=(0.5, -0.15), transform=fig.transFigure)
# 调整画布底部边距,避免图例被截断
plt.subplots_adjust(bottom=0.2)
plt.show()

关键说明

  • 方法一适合快速解决问题,无需手动调整参数,自动适配任意ncol和标签长度。
  • 方法二适合需要自定义图例位置的场景,bbox_to_anchor的坐标是画布的归一化坐标(0-1),可以根据需求调整数值;subplots_adjust用于调整画布边距,确保图例完整显示。

内容的提问来源于stack exchange,提问作者hesoyami

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 02:54:59