Matplotlib pyplot:更改图例中的NCOL

Matplotlib pyplot:更改图例中的NCOL,matplotlib,multiple-columns,legend-properties,Matplotlib,Multiple Columns,Legend Properties,我正在用pyplot绘制一个大数据集和一些回归。数据根据附加值着色。我决定将图例中的列数设置为2 数据点看起来不错,但对于回归,我想回到ncols=1。是否可以在一个图例中执行此操作 (我知道,我可以声明两个图例,但我希望避免这种情况…matplotlib中的图例是OffsetBox的集合。 原则上,您可以通过手动重新排列这些偏移框来更改图例中的“ncol”。 当然,这需要一些matplotlib内部的知识,对于普通用户来说是很困难的。不知道什么是最好的方式来揭露这一点。下面是创建两个图例并将它

我正在用pyplot绘制一个大数据集和一些回归。数据根据附加值着色。我决定将图例中的列数设置为2

数据点看起来不错,但对于回归,我想回到ncols=1。是否可以在一个图例中执行此操作


(我知道,我可以声明两个图例,但我希望避免这种情况…

matplotlib中的图例是OffsetBox的集合。 原则上,您可以通过手动重新排列这些偏移框来更改图例中的“ncol”。 当然,这需要一些matplotlib内部的知识,对于普通用户来说是很困难的。不知道什么是最好的方式来揭露这一点。下面是创建两个图例并将它们合并为一个图例的简单代码

import matplotlib.pyplot as plt
import matplotlib.legend as mlegend

ax = plt.subplot(111)
l1, = ax.plot([1,2,3])

leg1 = ax.legend([l1], ["long lable"], ncol=1)

leg2 = mlegend.Legend(ax, [l1, l1, l1, l1], tuple("1234"), ncol=2)

leg1._legend_box._children.append(leg2._legend_box._children[1])
leg1._legend_box.align="left" # the default layout is 'center'

plt.show()

我不知道你在问什么。你想要的图例是第2部分的列,第1部分的列?完全正确。有些标签很短,即只有一个数字,有些则长得多。90%的人确信这不能用一个传奇来完成。好吧,我将尝试设置两个看起来像一个传奇的传奇。仍然需要弄清楚,发邮件给mpl邮件列表是否值得,核心开发人员(谁能肯定地回答这个问题)不这么看。太好了,这与我的想法非常接近。谢谢。