Python量化交易基础讲堂:Matplotlib图表区间标记

2020-04-0420:00:59后端程序开发Comments2,005 views字数 1879阅读模式
Python量化交易基础讲堂:Matplotlib图表区间标记

接下来,我们手把手教大家如何来绘制标记着上证指数涨跌周期的图片。此处会涉及到matplotlib、pandas、tushare、numpy等Python第三方库的使用。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/18079.html

首先使用tushare的ts.get_k_data接口获取上证综指2008年至2019的日交易数据。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/18079.html

#获取上证综指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的plot()函数绘制上证指数的收盘价。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/18079.html

sh['close'].plot(figsize=(16,8))
复制代码
Python量化交易基础讲堂:Matplotlib图表区间标记

从图中可以看到2014年开始的那一轮牛市,从2014年7月持续到2015年6月,这11个月指数居然从2075.48点涨到了5178.19点。我们使用matplotlib的annotate ()函数在图表中标注下牛市的起点和终点。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/18079.html

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的axhline()函数将指数中位值设置为水平参考线(horizontal),用matplotlib的axvline()函数将指数最小值所在交易日设置为垂直参考线(vertical)。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/18079.html

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)
复制代码

接下来用matplotlib的axhspan()函数将牛市的起始点位设置为平行于x轴 的参考区域(horizontal),用matplotlib的axvspan ()函数将牛市的起始交易日设置为平行于y轴的参考区域 (vertical)。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/18079.html

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)

复制代码
Python量化交易基础讲堂:Matplotlib图表区间标记

接下来我们对图表的样式细节进行调整。比如去掉图形上边和右侧的边框、设置坐标轴上的刻度线位置、将刻度线放在坐标轴内侧。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/18079.html

# 样式调整
# 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')

复制代码
Python量化交易基础讲堂:Matplotlib图表区间标记

作者:元宵大师
链接:https://juejin.im/post/5ce7defb6fb9a07eec59a553
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/18079.html

文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/18079.html
  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/bc/18079.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定