通用图表
符号

功能
为数据对象绘制曲线图、饼 图、散点图等常规图表,可视化呈现其历史趋势或最新状态
要点
基本功能和操作

横轴、纵轴均为用户指定数据对象相关数据,图中各标注功能如下:
- 图表名称:双击可修改
- 显示模式按钮:可以选择呈现 图像 / 最新数据


-
图例区按钮:点击展开,再次点击收缩
-
图例区:显示维度、度量的数据对象信息,拖拽左侧的边界线可以控制图例区大小
- 4.1 图例:点击可以关闭该数据对象图像,再次点击打开

- 4.2 实体个体切换器:用法见下
-
图像(/数据)展示区
-
数据点明细
绘图数据
数据来源
数据对象在每个模拟Tick结束时更新状态,其历史状态数据和最新状态数据都可以用于绘图
历史数据绘图
可以展示数据对象相对于系统时间的趋势(横轴为Tick或Now),或相对于其它数据对象历史趋势的相关性(横轴纵轴均为指定数据对象,如下右图)


最新数据绘图
可以展示(多个)数据对象最新状态(对比)

数据格式
- 维度(如曲线图X轴)数据只能指定一个
- 度量(如曲线图Y轴)数据可以指定多个
- 具体支持数据格式情况如下表
| 绘图方式 | 维度选择 | 维度格式 | 度量格式 | 效果示意 |
|---|---|---|---|---|
| 历史数据 | 指定Value对象 | Number / Datetime | Number |
|
| 历史数据 | 指定Value对象 | Number / Datetime | Dict(自动) |
|
| 最新状态 | 按字段名 | (数据对象名,String) | Number |
|
| 最新状态 | 按字段名 | (数据对象名.键名,String) | Dict(自动) |
|
| 最新状态 | 指定List对象 | [Number] | [Number] |
|
绘图顺序
以历史趋势绘图时,你可以选择任意一种顺序绘图;以最新状态绘图时系统仅以数据记录顺序绘图
按维度值
-
系统实时按维度(如曲线图X轴)值(升序)对数据排序后绘制图表,相当于
data.sortby(X_value) -
维度值有可能出现重复,系统提供了为相同维度值聚合度量值的方法,如取最新值、最小、平均等,使得度量值相对于维度具有唯一性,相当于
data.groupby(X_value).method()(仅散点图时可以不聚合)
按记录
-
系统将按数据生成的记录顺序进行绘图,横轴会按记录顺序显示维度的每个具体值

- 以上两图是基于相同数据,但按不同绘图顺序绘制的效果
- 对X轴数据为[1, 1.5, 2, 3],Y轴数据为[1, 2, 3, 4]的曲线图来说,按维度值绘图时是一条折线,4个点中第2和第3点的横向间距较小;按记录绘图时一条直线,四个点的横向间距相等
支持动态切换图表类型
基于同样的绘图数据切换图表类型将实时呈现结果
支持实体种群查看
显示个体属性
-
图表支持快捷切换实体个体以查看个体属性值
-
可以点击右上角按钮展开图例栏后,点击个体切换钮切换显示的个体数据
-
也可以双击个体序号直接输入需要查看的个体ID切换显示个体数据

支持实体创建和消亡的实时变化
对应图表会动态增加新个体的数据和中断消亡个体的数据
设置方法
设置包括:选择图表类型、设置绘图数据和绘图顺序
选择图表类型

下拉菜单选择如上图,各种类型的详细设置方法如下
曲线图(通用设置方法)

绘图方式选择
单选:按历史数据 / 按最新状态
X轴配置
按历史数据时

-
指定数据对象
横轴可以指定Number或DateTime格式数据对象,比如系统内置变量
Tick,或Dict的键表示取对应值 -
指定X轴数据格式
Number, String, 或DateTime

当你想使用系统日历时间作为横轴时,前提是必须在全局配置了系统日历时间,才能有效绘图。
按最新数据绘图时

- 情况1:横轴选择按字段名,此时系统将Y轴所选对象名称作为维度值,Y轴对象取值作为度量值绘图
- 情况2:指定一个格式为[Number]的变量作为维度值,需要Y轴届时选择一个等长度的[Number]格式变量作为维度值绘图
- 详见数据格式支持情况表
绘图顺序

- 选择:按X轴值绘图/按记录绘图
- 按历史数据绘图时,可以选择任意一种
- 按最新状态绘图时,只能按记录顺序
Y轴配置
无论横轴如何配置,纵轴配置方法相同
添加对象
点击按钮添加一个新的对象
选择目标对象
-
按数据格式表,Y轴需要Number格式或[Number]时,所以你可以直接选择符合格式的数据对象

-
按数据格式表,Y轴需要Dict格式变量或容器时,选择对象后,可在二级选择中指定Number格式值对应的键(构造过的),从而以确定方式绘图

-
也可以不再进行二级选择,从而以动态的方式绘图,即系统会自动绘制所有为Number格式的值

由于Dict格式变量或容器的键值对可以在建模中动态添加并修改,所以相对于确定性绘图,动态绘图更适合在这样的场合使用。
例如上两图中都是绘制Container1,其初始化只构造了"x"和"y"两个键,所以确定性绘图时,只能选择这两个键,"z"键资源是在过程中放入容器的,就可以使用动态绘图绘制。
指定聚合方法
-
当绘图顺序为按X轴值时,对曲线图而言必须指定当X轴值重复时的聚合方法,以避免绘图交叉混乱,如下图

- 最大值
- 最小值
- 平均值
- 和
- 计数
- 任意值
- 最早值
- 最新值(系统默认)
-
当绘图顺序按记录时,度量无聚合

堆积曲线图
设置方法与曲线图完全一致
柱图
设置方法与曲线图完全一致
堆积柱图
设置方法与曲线图完全一致
散点图
- 当采用历史数据绘图时,纵轴可以选择不聚合
由于系统每个Tick都会返回数据对象的状态值,即便状态并未变化,所以,如果不聚合可能会有很多重复数据画在同一个坐标点上。
例如,你想用散点图呈现一个交易者单次交易的收益率和预测准确率之间的关系,而该交易者每10个Tick交易一次,这意味着100个Tick运行中有10次交易,但我们的数据却有100组,使用度量值聚合就会得到想要的10组不重复的数据。
所以除非你确定无论如何每个Tick都需要绘制一个点时选择不聚合,其它情况下都应选择聚合。
- 其它设置方法与曲线图完全一致
饼图

- 饼图设置方法与曲线图完全一致
- 只是应用的场合更多是最新状态绘图,目的是呈现多个数据最新状态比例
- 当扇区值为负时,不呈现该扇区
各种图表的常用场合:
- 曲线图和堆积曲线图,通常使用历史数据、横轴为
Tick或Now,以展现历史趋势。 - 柱图和堆积柱图,通常用于较短的历史趋势,也适用于最新状态的多个数据大小对比,无论数据正负。
- 饼图常使用最新状态绘图,因为适合反映各个数据最新状态的相对比例变化,但不适合数据正负变化的场合。
- 散点图通常使用历史数据绘图,不关心时间顺序,反映Y序列相对于X序列历史趋势的相关性。
这不是强制用法,取决于你的需求。
案例
每个Tick我们分别对变量Result1和Result2进行均匀分布随机采样,Result1 = random(0,10),Result2 = random(10,20),于是我们可以得到2个不相关的时间序列(因为两者独立采样),分别以不同图表展现。
显然这种情况下选择曲线图更合适,当然这取决于你的需求。
在模型1基础上我们增加了变量Result3,同样每Tick计算赋值,Result3 = Result1 + normal(0,2),显然Result3应该与Result1具有显著相关性。
我们设置散点维度X为Result1,度量Y为Result1自己(褐色)、Result2(黄色)、和Result3(蓝色)。
分别用以下方式展现效果如模型运行结果,凡是以X轴值绘图方式的图表,Result1自己都将呈现严格45°的完全相关性。
- 图1:散点图按X轴值顺序绘图
- 图2:曲线图按X轴值顺序绘图
- 图3:曲线图按记录顺序绘图
- 图4:柱图按X轴值顺序绘图
显然,这种情况下更适合使用散点图,当然这取决于你的需求。
图A:选择3个Number格式变量,以对象名为维度、以对象取值为度量绘制。
图B:选择1个List格式变量作为维度,以其它2个[Number]格式变量为度量绘制。
图C:以3个Dct的Key为维度,以它们的Value为度量绘制。
当然采用哪种类型的图表呈现取决于你的需求。




