昨天我们把时间序列呈现出来,计算了基本的风险,收益及相关的时间序列统计特征。
今天我们基于时间序列计算”因子“。我们的观点——”一切皆因子“。
以我们之前做了深入分析的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),思想者,行动派;用数字说基金,用基金做投资组合,践行财富自由之路)
联系客服