pyplot图例与线条不匹配
我的图例颜色和线条颜色不一致。你们有没有什么建议,怎么解决这个问题,我哪里做错了?这段代码是从雅虎财经下载数据的,所以你可以直接在你的电脑上运行它,看到数据。谢谢你们的帮助!
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的影响,所以我把它移到了图例之后,并按照评论里的建议通过循环生成了单独的绘图语句,但看起来线条的颜色还是和图例里的名字不匹配。
1 个回答
1
你在调用 plt.plot
的时候已经给你的线条加上了标签,所以在调用 plt.legend
的时候就不需要再传入一堆标签了。换句话说,把
plt.legend(companies,loc='upper left')
替换成
plt.legend(loc='upper left')
这样就可以正常工作了。