循环蟒蛇中的情节图例



下一个算法给了我一个很好的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]]) 

最新更新