powerset & set-o-gram

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() 读取数据文件保存到变量中
最近的文章

MDHK - 第四次 Mission Day

2018年在香港参加的 Ingress Massion Day 活动。…

Daily继续阅读
更早的文章

数位 DP 小结

整理了一些数位 DP 的题目,从易到难。…

Algorithm继续阅读