量化交易回测可视化:matplotlib

matplotlib的使用需要先安装numpy。设计与matlib相似。

matplotlib维基)是Python编程语言及其数值数学扩展包 NumPy的可视化操作界面。

  • matplotlib模块

matplotlib.pyplot是最常用的模块。

  • pyplot常用功能

    • 绘制曲线
    x = np.linspace(1,10,10)
    y = 2 * x + 1
    plt.plot(x, y)
    plt.show()
    
    • 绘制多个窗口图片
    x = np.linspace(1,10,10)
    y = 2 * x + 1
    
    plt.figure()   # 定义一个窗口对象
    plt.plot(x, y)
    
    plt.figure(num = 5, figsize= (9,5))   # 定义一个窗口对象,窗口名,为figure5,尺寸为长9宽5
    plt.plot(x)   # 画一根线
    plt.plot(x,y, color= 'red', linewidth= 1,linestyle= '--')  # 在figure5中画2根线,color:颜色;linewidth:线宽;linestyle: 线的格式,'--'是虚线
    
    plt.show()
    
    • 修改坐标轴标尺\名称\字体转换与特殊字符
    plt.xlabel('x轴')   # x轴重命名
    plt.ylabel('y轴')   # y轴重命名
    
    new_ticks = np.linspace(10,25,30)
    plt.xticks(new_ticks)   # 更新x轴的刻度
    plt.yticks([10,15,20],['intersting', r'$haha\ who$', r'$do\ \alpha\ it$'])
    # y轴刻度标注,字母r表示正则表达式;$$表示转换字体格式;\alpha表示α
    plt.show()
    
    • 确定坐标轴\移动坐标轴\更改边框颜色
    # gca = 'get currnet axis'
    ax = plt.gca()   # 获取轴
    ax.spines['right'].set_color('none')  # 图形的脊梁,就是四个边框
    ax.spines['top'].set_color('none')   # 去掉图形的顶部和右部的边框
    # 此时,图形还没有固定的坐标轴
    ax.xaxis.set_ticks_position('bottom')   # 设置下面的标尺为x轴
    ax.yaxis.set_ticks_position('left')   # 左边框标尺为y轴标尺
    
    ax.spines['bottom'].set_position(('data', -1))   # 设定底边(也就是横轴)在y轴的-1取值位置
    ax.spines['left'].set_position(('data', 0))   # data之外还有其他确定坐标轴位置的方式。比如axes是百分比
    plt.show()
    
    • legend图例
    plt.figure()
    l1, = plt.plot(x,y1, label='first')   # label = 图例名称
    l2, = plt.plot(x,y2, color= 'red', linewidth= 1,linestyle= '--', label= 'second')
    plt.legend(handles= [l1,],labels= ['noe', 'now'], loc= 'best')   # 需要这个命令才会显示图例,可以重新设置labels
    plt.show()
    exit()
    

    需要注意,只输入label参数并不会直接显示图例

    • annotation标注
    x0 = 1
    y0 = 2 * x0 + 1
    plt.scatter(x0, y0, s= 10, color= 'b')  # 画一个点。s:大小;b=blue
    plt.plot([x0,x0],[y0,0],'k--',lw= 2.5)   # 画一条虚线,两个点确定一条线,k表示黑色,lw线宽
    
    plt.annotate(r'$2x+1=%s$' % y0, xy= (x0,y0), xycoords='data', xytext=(+20,-26), textcoords= 'offset points', fontsize=10, arrowprops=dict(arrowstyle='->',connectionstyle='arc3,rad=.2'))
    # 正则表达式描述标注内容;xy标注坐标点;xycoords依据的坐标;xytext文本开始位置;textcoords文本坐标依据;fontsize文本大小;arrowprops标注线格式
    
    plt.text(-11,3,r'$this\ is\ the\ text\mu\ \sigma_i\ \alpha_t$', fontdict={'size': 10, 'color':'b'})
    
    plt.show()
    

    在这里插入图片描述

    • tick能见度

如果tick被线遮挡,可以通过调整能见度提升图形的呈现效果。

  • 各类图形

    matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, verts=None, edgecolors=None, *, data=None, **kwargs)
    

    s:大小;c:颜色;alpha:透明度

    matplotlib.pyplot.bar(x, height, width=0.8, bottom=None, *, align='center', data=None, **kwargs)
    

    facecolor=’#9999ff’

    edgecolor=‘white’

  • 参考

  1. 十分钟入门Matplotlib(Python 科学计算系列的第一篇文章)
  2. 官网示例

.
.
.
2019-04-02 17:57:55

猜你喜欢

转载自blog.csdn.net/The_Time_Runner/article/details/88977627