绘制股票图表
我刚开始学习Python和Pandas,写了下面的代码来绘制标准普尔500指数的图表。
from pandas.io.data import DataReader
# returns a DataFrame
sp500 = DataReader("^GSPC", "yahoo", start=datetime.datetime(1990, 1, 1))
sp500.plot(figsize = (12,8))
看起来这个图表把最高价、最低价、开盘价、收盘价、调整后的收盘价和交易量都放在了一张图上。有没有简单的方法可以只绘制调整后的收盘价,并把交易量放在下面,就像Yahoo和其他大多数金融网站那样?我也想看看如何绘制一个OHLC蜡烛图的例子。
2 个回答
0
这段代码可以让你画出数据框中“调整后收盘价”这一列和日期(索引)的关系图。
from pandas.io.data import DataReader
sp500 = DataReader("^GSPC", "yahoo", start=datetime.datetime(1990, 1, 1))
close = sp500['Adj Close']
close.plot()
plt.show()
同样的,你也可以用类似的方法来画出“交易量”的图。
vol = sp500['Volume']
vol.plot()
plt.show()
3
你可以在这里找到我对类似问题的回答,另外在这里可以获取关于matplotlib金融蜡烛图的更多信息。
如果你想从你的sp500数据中获取调整后的收盘价,可以用类似这样的代码:sp500["Adj Close"]
,然后把这个结果传给相应的matplotlib绘图命令:plt.plot(datelist, sp500["Adj Close"] )
,其中datelist是你在x轴上显示的日期列表。
我认为你可以通过引用sp500.index
来获取datelist,想了解更多信息可以查看这里。
至于你在将数据传给绘图命令时遇到的问题,可以用类似这样的代码:
datelist = [date2num(x) for x in sp500.index]
,这里的date2num函数来自matplotlib.dates包。
在设置好相关的子图后,你可以调用适当的填充命令来使用fill_between_alpha
填充线下的区域,就像你提到的Yahoo图表那样。
想要查看一个填充线图的示例,以及正确的日期打印,可以在这里找到,查看填充与透明度部分。
最初的链接中有一个matplotlib的示例代码,也详细介绍了日期格式和格式化的内容。