下一个算法为我提供了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()
但是我得到一个错误。有人怎么做吗?
答案 0 :(得分:0)
您在绘制最后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]])