Matplotlib 用于打印和填充的组合图例条目

Matplotlib 用于打印和填充的组合图例条目,matplotlib,legend,Matplotlib,Legend,这与类似,但Matplotlib除外。示例代码: import numpy as np import matplotlib.pyplot as plt x = np.array([0,1]) y = x + 1 f,a = plt.subplots() a.fill_between(x,y+0.5,y-0.5,alpha=0.5,color='b') a.plot(x,y,color='b',label='Stuff',linewidth=3) a.legend() plt.show()

这与类似,但Matplotlib除外。示例代码:

import numpy as np
import matplotlib.pyplot as plt

x = np.array([0,1])
y = x + 1
f,a = plt.subplots()
a.fill_between(x,y+0.5,y-0.5,alpha=0.5,color='b')
a.plot(x,y,color='b',label='Stuff',linewidth=3)
a.legend()

plt.show()
上述代码生成的图例如下所示:

如何创建一个图例条目,将
fill\u中的阴影与
plot
中的线条组合在一起,使其看起来像这样(Gimp制作的模型):


MPL支持对图例的元组输入,以便您可以创建复合图例条目(请参见第页的最后一个图)。但是,到目前为止,图例不支持在创建/返回之间填充_的PolyCollection,因此简单地将PolyCollection作为元组中的一个条目提供给图例将不起作用()

在修复程序到达之前,我建议结合使用“元组”图例输入功能。您可以使用
mpl.patches.Patch
界面(如代理艺术家页面所示),也可以只使用fill。e、 g:

import numpy as np
import matplotlib.pyplot as plt

x = np.array([0, 1])
y = x + 1
f, a = plt.subplots()
a.fill_between(x, y + 0.5, y - 0.5, alpha=0.5, color='b')
p1 = a.plot(x, y, color='b', linewidth=3)
p2 = a.fill(np.NaN, np.NaN, 'b', alpha=0.5)
a.legend([(p2[0], p1[0]), ], ['Stuff'])

plt.show()

谢谢!将
linewidth=0
添加到
fill
中就足够了,这将从图例条目中删除“frame”。如果您碰巧知道如何使图例键具有相同的长度,那么
plot
中的线条延伸到图例中
fill
矩形的左/右边缘,那就更好了。