绘制股票图表

3 投票
2 回答
12476 浏览
提问于 2025-04-17 13:02

我刚开始学习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的示例代码,也详细介绍了日期格式和格式化的内容。

撰写回答