gpt4 book ai didi

python - 图例未出现在 Matplotlib 堆积面积图中

转载 作者:IT老高 更新时间:2023-10-28 20:23:29 24 4
gpt4 key购买 nike

我正在使用 plt.fill_between() 创建堆叠线/面积图pyplot 的方法,在尝试了这么多事情之后,我仍然无法弄清楚为什么它没有显示任何图例或标签(即使我在代码中提供了它们)。代码如下:

import matplotlib.pyplot as plt
import numpy

a1_label = 'record a1'
a2_label = 'record a2'

a1 = numpy.linspace(0,100,40)
a2 = numpy.linspace(30,100,40)

x = numpy.arange(0, len(a1), 1)

plt.fill_between(x, 0, a1, facecolor='green')
plt.fill_between(x, a1, a2, facecolor='red')
plt.title('some title')
plt.grid('on')
plt.legend([a1_label, a2_label])
plt.show()

这是生成的图像(请注意,图例显示的是空框而不是标签): empty legend box at the top

救命!

最佳答案

fill_between() 命令创建了一个不受 legend() 命令支持的 PolyCollection。

因此,您将不得不使用另一个 matplotlib 艺术家(与 legend() 兼容)作为代理,而不将其添加到轴上(因此代理艺术家不会在主轴上绘制)并将其提供给图例功能。 (详情请参阅 matplotlib legend guide)

在您的情况下,下面的代码应该可以解决您的问题:

from matplotlib.patches import Rectangle

p1 = Rectangle((0, 0), 1, 1, fc="green")
p2 = Rectangle((0, 0), 1, 1, fc="red")
legend([p1, p2], [a1_label, a2_label])

image

关于python - 图例未出现在 Matplotlib 堆积面积图中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14534130/

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