昨天我们把时间序列呈现出来,计算了基本的风险,收益及相关的时间序列统计特征。
今天我们基于时间序列计算”因子“。我们的观点——”一切皆因子“。
以我们之前做了深入分析的RSRS及其衍生指标体系,对于一个指标,我们先来可视化分析。
点击”指标可视化“,希望呼出独立窗口,用来呈现指标可视化的情况。
第一步,我们要加载数据,我们需要封闭一个”表格化“的控件,用来呈现表格数据。
class PandasGrid(wx.grid.Grid): def __init__(self,parent,nrow=10,ncol=20): super().__init__(parent,-1) self.CreateGrid(numRows=nrow, numCols=ncol) def show_df(self,df): self.ClearGrid() self.df = df self.SetRowSize(0, 60) self.SetColSize(0, 150) for i,col in enumerate(list(df.columns)): self.SetColLabelValue(i,col) for i,row in enumerate(list(df.index)): self.SetRowLabelValue(i, row) i = 0 for index, row in df.iterrows(): for j in range(len(row)): self.SetCellValue(i,j,str(row[j])) i += 1
Pandas的Dataframe可以直接呈现在界面上,这个很有用,我们大量的中间数据格式都是datafame,可以直接在界面上呈现出来。它继承自wx本身的的Grid。
PandasGrid的使用也非常简单,直接当成一个Page直接嵌到tabs里使用。
self.panel_raw = widgets.PandasGrid(tabs) tabs.AddPage(self.panel_raw,'原始数据') #当数据到达的时候,直接show_df即可,使用起来非常之方便。 if 'raw' in data_dict.keys(): raw = data_dict['raw'] self.panel_raw.show_df(raw)
另外有一个非常通用的组件,就是把matplotlib的画图,整合的wxpython的窗体里。
import matplotlib matplotlib.use("WXAgg") from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as FigureCanvas class MatplotlibPanel(wx.Panel): def __init__(self,parent,id=-1): super(MatplotlibPanel, self).__init__(parent,id) self.TopBoxSizer = wx.BoxSizer(wx.VERTICAL) self.SetSizer(self.TopBoxSizer) self.figure = matplotlib.figure.Figure(figsize=(4, 3)) self.ax = self.figure.add_subplot(111) self.canvas = FigureCanvas(self, -1, self.figure) self.TopBoxSizer.Add(self.canvas, proportion=-10, border=2, flag=wx.ALL | wx.EXPAND) def show_data(self,data): #print(data) self.ax.clear() data.plot(ax=self.ax) self.ax.grid(True) self.canvas.draw()
一、创建一个垂直化的boxsizer;
二、声明一个Figure对象,Figure对象上设定坐标轴——可以有子坐标轴。
三、从Figure里得到画布FigureCanvas,把画布添加到布局器BoxSizer里
明天继续特征提取以及可视化。
(公众号: 七年实现财富自由(ailabx),思想者,行动派;用数字说基金,用基金做投资组合,践行财富自由之路)
网友评论