此问题在此处已有答案:
How do I make a single legend for many subplots?(共10个答案)
3天前关闭。
我正在做一个投资组合分析。我把投资组合的回报画在一个图表上。我可以画一个5年的图表,每一年都有自己的图表,每个图表中有2个投资组合。我在一个图表中有5个子图。对于每个子图,我有2条线,每个投资组合一条线。这是指相同的每个子情节(见图像)。所以我想只有一个图例为整个数字。
但是,在我尝试之后,它总是返回以下错误:'Figure'对象没有属性'figlegend'
我已经尝试了2种可能性(在matplotlib网站上显示)来制作figlegend,它们是:
periods= [0,60,120,180,240,300,360,420,480,540,600,660,720,780,840,900]
fig, axis = plt.subplots(5, 1)
fig.set_size_inches(15, 20)
fig.tight_layout(pad=5.0)
for i in range(5):
p = i+0
axis[i].plot(return_pf_market[periods[p]:periods[p+1]], "darkcyan")
axis[i].plot(return_pf_optimized[periods[p]:periods[p+1]], "lightgreen")
axis[i].set_title(year_str[p])
axis[i].set_xlabel(year_TR[p]+" to "+ year_TR[p+4])
fig.figlegend(['Standard Portfolio', 'Green Portfolio'])
plt.show()
或
fig, axis = plt.subplots(5, 1)
fig.set_size_inches(15, 20)
fig.tight_layout(pad=5.0)
for i in range(5):
p = i+0
axis[i].plot(return_pf_market[periods[p]:periods[p+1]], "darkcyan", label='Standard Portfolio')
axis[i].plot(return_pf_optimized[periods[p]:periods[p+1]], "lightgreen", label='Green Portfolio')
axis[i].set_title(year_str[p])
axis[i].set_xlabel(year_TR[p]+" to "+ year_TR[p+4])
axis.figlegend()
plt.show()
也许有人知道我的代码中有什么错误,使我得到这个错误?
1条答案
按热度按时间egdjgwm81#
我认为你要找的只是fig.legend()而不是“figlegend”。这个问题在这里得到了很好的回答:How do I make a single legend for many subplots?