我的图例与线条颜色不匹配。知道我如何解决这个问题以及我做错了什么吗?该代码从 yahoo finance 下载数据,因此您应该能够按原样在您的计算机上运行它并自己查看数据。感谢您的帮助!
import pandas.io.data as web
import datetime
import pandas as pd
import matplotlib.pyplot as plt
start = '5/1/2007'
end = '10/1/2007'
event = datetime.date(2007,6,27)
companies = ['AAPL','MSFT','BBRY','IBM']
all_data = {}
for ticker in companies:
all_data[ticker] = web.get_data_yahoo(ticker, start,end)
price = pd.DataFrame({tic:data['Adj Close']
for tic, data in all_data.iteritems()})
volume = pd.DataFrame({tic:data['Volume']
for tic, data in all_data.iteritems()})
rels = price/price.ix[event]
plt.figure(figsize=(15,5))
for i in companies:
plt.plot(rels.index,rels[i],label=i,lw=4.0)
plt.legend(companies,loc='upper left')
plt.axvline(x=event)
plt.grid(True)
plt.show()
编辑:我注意到图例正在拾取 axvline,所以我将其移到图例之后,并按照评论中的建议通过循环生成单独的绘图语句,但看起来这些线仍然与中的正确名称不匹配传说。
最佳答案
您已通过调用 plt.plot
标记了您的线条,因此您无需在调用 plt.legend
时传递另一组标签。换句话说替换
plt.legend(companies,loc='upper left')
与
plt.legend(loc='upper left')
一切都应该正常进行。
关于python - pyplot 图例不匹配行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25614506/