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

如何调整matplotlib图例每列行数实现自定义文本排布

实现方法

你可以通过手动重排图例句柄顺序+补充不可见的哑图例项实现自定义列行数,完整可运行代码如下:

import matplotlib.pyplot as plt
import numpy as np

for i in range(10):
    plt.plot(np.linspace(0, 5, 5), np.random.randint(0, 10, 5), label=str(i))

# 获取已有图例句柄和标签
handles, labels = plt.gca().get_legend_handles_labels()
# 创建不可见的哑图例项,用于占位
dummy_handle = plt.Line2D([], [], visible=False)
# 补充2个占位项,凑够3列*4行=12个条目
handles += [dummy_handle, dummy_handle]
labels += ["", ""]
# 重排句柄顺序,适配行优先填充规则,实现4/4/2的列分布
new_handles_order = [0,4,8, 1,5,9, 2,6,10, 3,7,11]
handles = [handles[idx] for idx in new_handles_order]
labels = [labels[idx] for idx in new_handles_order]

# 生成图例
plt.legend(handles=handles, labels=labels, ncol=3, loc=1)
plt.show()

原方法失效原因

你之前直接添加plt.plot([], [], label='')未生效是因为matplotlib图例默认按行优先规则填充条目,直接在末尾追加的空占位项会落到第二列末尾,无法让第三列出现空缺,手动重排句柄顺序可以精准控制每个条目的展示位置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 17:06:03