for循环python中的图例

用户9891079

下一个算法为我提供了 9 个资产之间相关性的漂亮图(vDT 是一个带有日期的列表,mPR 是 45 个资产 x 1042 个时间点的相关矩阵,asX 是一个资产列表):

plt.figure(figsize=(10, 5))
plt.plot(vDT, mPR[0,:], 'xkcd:gold', label=asX[0] + asX[1])
plt.plot(vDT, mPR[1,:], 'xkcd:tan', label=asX[0] + asX[2])
plt.plot(vDT, mPR[2,:], 'xkcd:light yellow', label=asX[0] + asX[3])
plt.plot(vDT, mPR[3,:], 'xkcd:yellow', label=asX[0] + asX[4])
plt.plot(vDT, mPR[4,:], 'xkcd:orange', label=asX[0] + asX[5])
plt.plot(vDT, mPR[5,:], 'xkcd:red', label=asX[0] + asX[6])
plt.plot(vDT, mPR[6,:], 'xkcd:deep red', label=asX[0] + asX[7])
plt.plot(vDT, mPR[7,:], 'xkcd:pink', label=asX[0] + asX[8])
plt.plot(vDT, mPR[8,:], 'xkcd:hot pink', label=asX[0] + asX[9])
plt.plot(vDT, mPR[9,:], 'xkcd:salmon', label=asX[1] + asX[2])
plt.plot(vDT, mPR[10,:], 'xkcd:light purple', label=asX[1] + asX[3])
plt.plot(vDT, mPR[11,:], 'xkcd:purple', label=asX[1] + asX[4])
plt.plot(vDT, mPR[12,:], 'xkcd:aqua', label=asX[1] + asX[5])
plt.plot(vDT, mPR[13,:], 'xkcd:sky blue', label=asX[1] + asX[6])
plt.plot(vDT, mPR[14,:], 'xkcd:blue', label=asX[1] + asX[7])
plt.plot(vDT, mPR[15,:], 'xkcd:royal blue', label=asX[1] + asX[8])
plt.plot(vDT, mPR[16,:], 'xkcd:light green', label=asX[1] + asX[9])
plt.plot(vDT, mPR[17,:], 'xkcd:dark green', label=asX[2] + asX[3])
plt.plot(vDT, mPR[18,:], 'xkcd:lime green', label=asX[2] + asX[4])
plt.plot(vDT, mPR[19,:], 'xkcd:forest green', label=asX[2] + asX[5])
plt.plot(vDT, mPR[20,:], 'xkcd:light brown', label=asX[2] + asX[6])
plt.plot(vDT, mPR[21,:], 'xkcd:grey', label=asX[2] + asX[7])
plt.plot(vDT, mPR[22,:], 'xkcd:black', label=asX[2] + asX[8])
plt.plot(vDT, mPR[23,:], 'xkcd:teal', label=asX[2] + asX[9])
plt.plot(vDT, mPR[24,:], 'xkcd:cyan', label=asX[3] + asX[4])
plt.plot(vDT, mPR[25,:], 'xkcd:maroon', label=asX[3] + asX[5])
plt.plot(vDT, mPR[26,:], 'xkcd:light rose', label=asX[3] + asX[6])
plt.plot(vDT, mPR[27,:], 'xkcd:blood', label=asX[3] + asX[7])
plt.plot(vDT, mPR[28,:], 'xkcd:berry', label=asX[3] + asX[8])
plt.plot(vDT, mPR[29,:], 'xkcd:light yellow green', label=asX[3] + asX[9])
plt.plot(vDT, mPR[30,:], 'xkcd:french blue', label=asX[4] + asX[5])
plt.plot(vDT, mPR[31,:], 'xkcd:butter yellow', label=asX[4] + asX[6])    
plt.plot(vDT, mPR[32,:], 'xkcd:orangish brown', label=asX[4] + asX[7])
plt.plot(vDT, mPR[33,:], 'xkcd:deep magenta', label=asX[4] + asX[8])
plt.plot(vDT, mPR[34,:], 'xkcd:caramel', label=asX[4] + asX[9])
plt.plot(vDT, mPR[35,:], 'xkcd:chestnut', label=asX[5] + asX[6])
plt.plot(vDT, mPR[36,:], 'xkcd:heather', label=asX[5] + asX[7])
plt.plot(vDT, mPR[37,:], 'xkcd:sea', label=asX[5] + asX[8])
plt.plot(vDT, mPR[38,:], 'xkcd:tomato', label=asX[5] + asX[9])
plt.plot(vDT, mPR[39,:], 'xkcd:orangish brown', label=asX[6] + asX[7])  
plt.plot(vDT, mPR[40,:], 'xkcd:lavender blue', label=asX[6] + asX[8])
plt.plot(vDT, mPR[41,:], 'xkcd:leaf', label=asX[6] + asX[9])
plt.plot(vDT, mPR[42,:], 'xkcd:dark sand', label=asX[7] + asX[8])
plt.plot(vDT, mPR[43,:], 'xkcd:vibrant blue', label=asX[7] + asX[9])
plt.plot(vDT, mPR[44,:], 'xkcd:dark coral', label=asX[8] + asX[9])
plt.xticks(rotation=75)
plt.legend(loc='center left', bbox_to_anchor=(1, 0.5))
plt.title('Plot correlations')
plt.savefig('BSE_stocks+index_Correlations.jpg', bbox_inches='tight')
plt.show()

但是我想在 for 循环中写这个,所以我试过:

plt.figure(figsize=(10, 5))
for i in range(45):
    plt.plot(vDT, mPR[i,:])
plt.xticks(rotation=75)
plt.legend(loc='center left', bbox_to_anchor=(1, 0.5))
plt.title('Plot correlations')
plt.savefig('BSE_stocks+index_Correlations2.jpg', bbox_inches='tight')
plt.show()

这给了我正确的图片,但现在我没有图例。所以我试过:

plt.figure(figsize=(10, 5))
for i in range(45):
    for n in range(iN):
        plt.plot(vDT, mPR[i,:], label= asX[n] + asX[n+1])
plt.xticks(rotation=75)
plt.legend(loc='center left', bbox_to_anchor=(1, 0.5))
plt.title('Plot correlations')
plt.savefig('BSE_stocks+index_Correlations2.jpg', bbox_inches='tight')
plt.show()

但后来我得到一个错误。有没有人怎么做??

谢尔多

您最后一个代码中的错误(我们尚不知道)似乎是由于超出限制或覆盖图而引起的,因为您正在绘制45xiN与绘制图的原始长代码相反的图数量45我创建了一个解决方法来避免第二个for循环。我创建了两个用于标签的索引列表。通过这样做,您只需要一个for循环。以下是代码。您可以打印列表indices以确保索引组合与您的第一个长代码匹配。

# Create indices for labels
indices  = [(i, j) for i in range(10) for j in range(10) if i < j]
x, y = zip(*indices)

plt.figure(figsize=(10, 5))
for i in range(45):
    plt.plot(vDT, mPR[i,:], label= asX[x[i]] + asX[y[i]]) 

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章