我可以使用以下语法绘制收盘价:
gg = ggplot(stock_prices.ix['2013-01-01': '2013-12-31'], aes('date', 'close')) + geom_line()
然而,我不知道如何在同一个情节上绘制“高”和“低”价格,任何想法?
答案 0 :(得分:0)
在金融中绘制“高”和“低”(连同“开盘”和“收盘”)的标准做法是烛台绘图。 以下代码可以帮助您开始绘制烛台:
步骤1.导入。
import datetime as dt
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
from matplotlib.finance import candlestick_ohlc
import pandas as pd
from pandas_datareader import data
第2步。下载。
start = dt.datetime(2015,1,1)
spy = data.DataReader('^GSPC', 'yahoo', start)
如果您已经拥有OHLC格式的数据,则可以轻松跳过此步骤。
第3步。准备数据。
此时,您将获得以下格式的数据:
spy.head()
Open High Low Close Volume Adj Close
Date
2015-01-02 2058.899902 2072.360107 2046.040039 2058.199951 2708700000 2058.199951
2015-01-05 2054.439941 2054.439941 2017.339966 2020.579956 3799120000 2020.579956
2015-01-06 2022.150024 2030.250000 1992.439941 2002.609985 4460110000 2002.609985
2015-01-07 2005.550049 2029.609985 2005.550049 2025.900024 3805480000 2025.900024
2015-01-08 2030.609985 2064.080078 2030.609985 2062.139893 3934010000 2062.139893
要进一步移动,您需要将索引作为日期数而不是作为时间戳的单独列,而不是通过以下方式实现:
spy['Date2'] = spy.index.map(lambda x: mdates.date2num(x))
步骤4.烛台绘图。
现在您已准备好所有数据,您可以绘制:
fig, ax = plt.subplots()
ax.xaxis_date()
ax.xaxis.set_major_formatter(mdates.DateFormatter("%Y-%m-%d"))
plt.xlabel("Date")
plt.ylabel("Price")
plt.title("SP500")
candlestick_ohlc(ax, spy[['Date2', 'Open', 'High', 'Low','Close']].values, width=.6, colorup='g', alpha =.4);
修改强>
如果您仍然希望只有2条单独的行用于高和低,则以下代码行将执行此操作:
spy[['High','Low']].plot();