Python量化交易基础讲座:标记Matplotlib图表区间
接下来,我们将教你如何绘制代表上证指数涨跌周期的图。这包括使用第三方 Python 库,例如 matplotlib、pandas、tushare 和 numpy。
首先使用tushare接口ts.get_k_data
获取上证指数2008年至2019年的每日交易数据。
#获取上证综指2008年至2019的日交易数据
sh=ts.get_k_data('sh',start='2008-1-1', end='2019-1-1')
print(sh.head())
date open close high low volume code
183 2008-10-06 2267.39 2173.74 2267.39 2172.57 60938100.0 sh
184 2008-10-07 2101.09 2157.84 2183.00 2072.90 56902600.0 sh
185 2008-10-08 2095.91 2092.22 2127.08 2059.09 50759500.0 sh
186 2008-10-09 2125.57 2074.58 2130.87 2063.41 45071000.0 sh
187 2008-10-10 1995.96 2000.57 2027.83 1963.18 54077500.0 sh
复制代码
使用函数matplotlib(plotlib)上证指数收盘价。
sh['close'].plot(figsize=(16,8))
复制代码
图显示,牛市从2014年开始,从2014年7月持续到2015年6月。在那11个月里,指数实际上从2075.48点上涨到5178.19点。我们使用matplotlib函数annotate()
在图表上标记牛市的起点和终点。
plt.annotate('牛市起点',
xy=('2014-7-1',2054),
xytext=('2014-3-1',2500),
bbox = dict(boxstyle = 'round,pad=0.5',
fc = 'yellow', alpha = 0.5),
arrowprops=dict(facecolor='red',
shrink=0.05),fontsize=12)
复制代码
接下来,使用matplotlib 接下来,使用matplotlib函数 接下来我们调整图表的样式细节。例如,删除图形的上边缘和右边缘的边框,设置刻度在坐标轴上的位置,并将刻度放置在坐标轴内。 作者:元宵大师axhline()
函数将索引的中值设置为水平参考线(水平),并使用matplotlib axhline()函数。指数交易日的最小值设置为垂直参考线(垂直)。
plt.axhline(y=sh['close'].median(), c='r', ls='--', lw=2)
plt.axvline(x=sh[sh['close'].values == sh['close'].min()].index, c='g', ls='-.', lw=2)
复制代码
axhspan()
将牛市的起点设置为与x轴平行的参考区域(水平),并使用matplotlibaxvspan( ) 功能 设置牛市起始交易日与y轴平行(垂直)的参考区域。
plt.axhspan(ymin=2075.48, ymax=5178.19, facecolor='purple', alpha=0.3)
plt.axvspan(xmin='2014-7-1', xmax='2015-6-15', facecolor='g', alpha=0.3)
复制代码
# 样式调整
# spines设置图表left\right\bottom\top边框,此处去掉图形上边和右侧的边框
for spine in plt.gca().spines.keys():
print(spine)
if spine == 'top' or spine == 'right':
plt.gca().spines[spine].set_color('none')
# 设置坐标轴上的刻度线位置(其实这里的设置跟默认一样)
plt.gca().xaxis.set_ticks_position('bottom')
plt.gca().yaxis.set_ticks_position('left')
# 将刻度线放在坐标轴内侧
plt.tick_params(direction = 'in')
复制代码
链接:https://juejin.im/post/5ce7defb6fb9a07eec59a553
来源:掘金
。版权属于作者。商业转载请联系作者获取授权。非商业转载请注明出处。
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。