合并图例图标matplotlib

uurv41yg  于 2023-04-21  发布在  其他
关注(0)|答案(1)|浏览(164)

我试图用matplotlib在图例中用一个图标显示一个图和它的置信区间。在过去,我用写:

fig, ax1 = plt.subplots(1, 1)
curve = ax1.plot(...)
curve_fil = ax.fill_between(...)
fig.legend([(curve[0], curve_fill[0])], ["label here"], ...)

这是可行的,并允许我产生这样的情节:

但是现在我得到以下错误:

TypeError: 'PolyCollection' object is not subscriptable

如果我删除[0],只提供图作为参数,我得到

AttributeError: 'NoneType' object has no attribute 'create_artists'

如果我尝试创建自定义补丁,如:

patch = mpatches.Patch(color='r')
fig.legend([(curve[0], patch)], ["label here"])

然后我得到:

TypeError: 'Polygon' object is not subscriptable

这一切意味着什么?我开始拉头发从我的头上这一个...我知道类似的问题已经张贴,但由于所有的建议,已被标记为有效的答案没有为我工作,我deceddid张贴这一个。

km0tfn4u

km0tfn4u1#

张贴为我可能的未来参考,并帮助任何人谁想要做同样的事情:

from matplotlib.lines import Line2D
legend_elements = [Line2D([0], [0], linestyle = "dashed", marker = "o", color='#00ff3f', label = '1 Hz Data, Interpolation'), Line2D([0], [0], linestyle = "dashed", marker = "o", color='#35b6ff', label = '10 Hz Data, Interpolation'), Line2D([0], [0], linestyle = "dashed", marker = "o", color='#ff469c', label = '10 Hz Data, Interpolation')]
ax.legend(handles = legend_elements)

Matplotlib Documentation

相关问题