搭建自己的回测系统(九)数据可视化进阶

cat

收藏于 : 2019-01-13 15:40   被转藏 : 1   

在上一讲的基础上,我们会对金融数据可视化做更进一步的探索。


subplot2grid设置子图网络


上一讲中提到了通过add_subplot来增加子图,这种方法可以设置子图网格和子图在网格中的所在位置。在本讲中,我们会介绍一种更加灵活地设置网格的方法——subplot2grid,该方法可以设置各子图所占的行列数,其基本用法为:

subplot2grid(shape, loc, rowspan, colspan, **kwargs)

其中:shape是网格形状,loc是子图所在位置,rowspan是子图所占行数,colspan是子图所占列数


candlestick_ohlc方法绘制K线图


K线图(蜡烛图)是金融市场中常见的图形,在matplotlib中可以通过candlestick_ohlc方法绘制,其基本参数和用法是:

candlestick_ohlc(ax, quotes, width=0.2, colorup='k', colordown='r', alpha=1.0)

其中:参数ax为坐标轴,width为bar的宽度,colorup是上涨时显示的颜色,colordown是下跌时显示的颜色。


quotes为包含时间(time)、开盘价(open)、最高价(high)、最低价(low)、收盘价(close)的序列,candlestick_ohlc方法只会读取序列的前5个,因此可以传入任意长度的序列。另外需要注意的是time必须是浮点类型,一般需要用matplotliab中的date2num方法进行格式转换。


带成成交量的K线图绘制


运用上面的知识,我们可以开始K线图的设置了。整个图形分成两个子图,上面的子图是K线,而下面的子图是成交量柱状图。采用subplot2grid设置两个子图的位置:


ax1 = plt.subplot2grid((4,4),(0,0),rowspan=3,colspan=4)

ax2 = plt.subplot2grid((4,4),(3,0),rowspan=1,colspan=4)


以上表示K线图占据上面3*4的网格,成交柱状图占下面1*4的网格。


采用candlestick_ohlc和bar方法分别进行画图,根据上一讲的内容对图形的坐标轴进行设置,在此不再重述。在画完图后,我们还需要对图的样式进行调整:


plt.setp(ax1.get_xticklabels(),visible = False)

plt.setp(ax1.yaxis.get_ticklabels()[0], visible = False)

plt.subplots_adjust(bottom=0.20, top=0.90, hspace=0)


上面的代码中,第一行是隐藏K线图x轴的标签,第二行是隐藏K线图y轴的第一个标签(该标签会与下面的子图有重合),第三行是调整图形的边距并且使得两个子图之间无空隙。


完成上述操作后,就可以得到最终的图形了。


后续的工作

为了让K线图与股票软件中所看的一样,还需要其他许多额外的工作:

  • 在K线图上面加上5日、10日等不同周期的均线;

  • 柱状图会根据K线图的涨跌设置红色和绿色

  • 剔除非交易日,使图形连续


以上这些可以作为本讲的练习,大家可以自己动手尝试一下。本次讲解涉及的完整代码如下。




 阅读文章全部内容  
点击查看
文章点评
相关文章
cat 关注

文章收藏:5039

TA的最新收藏