gpt4 book ai didi

python - 如何从情节中获取所有传说?

转载 作者:太空狗 更新时间:2023-10-30 02:31:00 24 4
gpt4 key购买 nike

我有一个包含 2 个或更多图例的地 block 。我如何“获取”所有图例以更改(例如)图例中的颜色和线型?

handles, labels = ax.get_legend_handles_labels() 只给我“第一个”图例,我用 plt.legend() 添加到图中。但我也想要其他图例,我用 plt.gca().add_artist(leg2) 添加了这些图例我该怎么做?

最佳答案

您可以从轴上获取所有子项并使用以下方法过滤图例类型:

legends = [c for c in ax.get_children() if isinstance(c, mpl.legend.Legend)]

但这真的有用吗?如果我像您提到的那样添加更多图例,我会看到多个 Legend 子项,但它们都指向同一个对象。

编辑:

坐标轴本身会保留最后添加的图例,因此如果您使用 .add_artist() 添加之前的图例,您会看到多个不同的图例:

例如:

fig, ax = plt.subplots()

l1, = ax.plot(x,y, 'k', label='l1')
leg1 = plt.legend([l1],['l1'])

l2, = ax.plot(x,y, 'k', label='l2')
leg2 = plt.legend([l2],['l2'])

ax.add_artist(leg1)

print(ax.get_children())

返回这些对象:

[<matplotlib.axis.XAxis at 0xd0e6eb8>,
<matplotlib.axis.YAxis at 0xd0ff7b8>,
<matplotlib.lines.Line2D at 0xd0f73c8>,
<matplotlib.lines.Line2D at 0xd5c1a58>,
<matplotlib.legend.Legend at 0xd5c1860>,
<matplotlib.legend.Legend at 0xd5c4b70>,
<matplotlib.text.Text at 0xd5b1dd8>,
<matplotlib.text.Text at 0xd5b1e10>,
<matplotlib.text.Text at 0xd5b1e48>,
<matplotlib.patches.Rectangle at 0xd5b1e80>,
<matplotlib.spines.Spine at 0xd0e6da0>,
<matplotlib.spines.Spine at 0xd0e6ba8>,
<matplotlib.spines.Spine at 0xd0e6208>,
<matplotlib.spines.Spine at 0xd0f10f0>]

这是否是你想做的事情还有待观察!?您还可以自己将线(或其他类型)与轴分开存储。

关于python - 如何从情节中获取所有传说?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24140196/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com