PowerSet
mathematical foundations
- full intersection 只要是对应元素集合的交集就行,不管是否有其它集合存在
- expected size 用来预估大小,假定它们无关,通过比较预测数值和实际数值的大小关系判断over- or under-represented e(X) X的期望大小 deviation_raw(X) X的原始残差 deviation(X) 对于大的交集仍然存在偏差,因此需要归一化残差
visual
- classifying by degree
- 按照集合交叉的程度分类,并竖直排序,左边用标签标明
- 区域大小 1)初始所有宽度等宽并与最大宽度相等,计算所需要的高度 2)确保可读性,最小高度为10像素 3)确定最小高度后重新确定宽度,从左向右放置
- 区域顺序 按照交叉程度排序(可以反向)
- 折叠和展开区域 折叠后成为一个横柱,宽度和最大宽度相等,高度为10像素(双击或加号展开)
- visualizing the intersections
- 按照大小/偏差/特定集合/选择排序
- 布局计算
- strip treemap 算法
- 长宽比为<=9/2
- 标签和分类
- 采用分级的色彩
- 采用icon和glyph
- 采用文本标签 1)如果空间足够k个标签,将空间等分为k份 2)只能放开l个标签缩写,放最小的l-1个并在最后一个标签采用+(k-l+1)表示 3)不可能放下任意一个标签时,增加额外的空间放置标签
- 颜色
- 区分实际值和估计值
- 显示集合或者交集的属性(如时间)
用户互动
-
选择集合 在右边显示具体的子柱状图,选中具体的bar之后可以显示所有的包含该集合的交集 可以得到现有集合的并、交、补集
-
探索 用户可以控制类别的顺序、交集的顺序、颜色,过滤小数据 悬停显示提示信息,大小,属性摘要 点击后在元素视图中显示详细信息
-
细节
set-o-gram
参数
int numbercount 所有数据的和
int setCount 类别数
int[] setCounts 每一类数据
int[i][j] setFreq 类别i相交度j时的数据和
int[i][j][k] setFreqOverlap 类别i在相交度为j时在类别k中的数据大小
方法
- void setup() 初始化各种参数,在程序开始时执行一遍
- void draw()
画图 (程序自动持续不断的调用这个方法)
清空
设置合适的颜色(根据该点是否被鼠标选中/bool二位数组判断)
画图
rect(a,b,c,d) a float: x-coordinate of the rectangle by default b float: y-coordinate of the rectangle by default c float: width of the rectangle by default d float: height of the rectangle by default pushMatrix() function saves the current coordinate system to the stack popMatrix() restores the prior coordinate system
- void onHover() 鼠标悬停的时候显示数字
- void overlayText(int value,int x,int y) 在坐标x-15,y处显示value数值
- void mouseCLicked() 检测鼠标点击 分类 选中一个分类的所有数据 矩形 选中该矩形的所有数据 左侧 改变y轴 顶部 改变数据文件(读取下一个数据)
- keyTyped() 检测键盘按键 r/R 改变y轴 d/D 改变数据文件(读取下一个数据)
- void processData() 读取数据文件保存到变量中