绘图和fill_between的组合图例条目

Tor*_* T. 7 matplotlib legend

这类似于Matlab:除了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()
Run Code Online (Sandbox Code Playgroud)

上面的代码生成了一个如下所示的图例:

在此输入图像描述

如何创建一个组合着色fill_between和来自的阴影的图例条目,plot使它看起来像这样(在Gimp中制作的模型):

在此输入图像描述

far*_*rth 10

MPL支持元组输入,图例,以便您可以创建复合图例项(见最后一个数字页).但是,截至目前PolyCollections - fill_between创建/返回 - 不受图例支持,因此仅将PolyCollection作为元组中的条目提供给图例将不起作用(预计mpl 1.5.x将进行修复).

在修复程序到达之前,我建议将代理艺术家与'元组'图例输入功能结合使用.您可以使用mpl.patches.Patch界面(如代理艺术家页面上所示)或您可以使用填充.例如:

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()
Run Code Online (Sandbox Code Playgroud)

带有fill_between的复合图例

  • 谢谢!将 `linewidth=0` 添加到 `fill` 就足够了,它从图例条目中删除了 'frame'。如果您碰巧知道如何使图例键的长度相同,那么从`plot` 开始的线延伸到图例中`fill` 矩形的左/右边缘,那就更好了。 (2认同)