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 - 第四次MissionDay

随便写写了…0 - 突如其来的计划3月2号收到八云发来HK要举办MD的消息后,就一直在低保和刷两排之间徘徊。4月初收到鲁蓝要举办AP大赛的消息,激动的一拍大腿「不能再咸鱼了我要努力制霸全场」。然后愉快的将目标定在了12个。1 - 九点多才勉强出门的尖沙咀低保逃课学第一定律:只要逃课就能遇到同学。是的去地铁站的路上,我居然能遇到两个来上课的同学,当然这并不能阻止我去MD的决心。过了两趟爆满的地铁后,尼酱来的那趟地铁出人意料的人并不怎么多。顺利在地铁上会合,并赶到了第一站 —— 尖沙咀。出站时...…

Daily继续阅读
更早的文章

数位DP小结

概述一般是求小于等于数字N的某些特征数字个数,或者是区间[L,R]的之间的某些特征数字个数,后者一般可以转换成求差的方式来做。模板数字处理函数:int f(int num){ int ans; int pos = 0; while(num){ digit[++pos]=num%10; num=num/10; } return dfs( pos, s , true );}其中:digit为处理串的每个数位的数值。s为初始的状态。如果有...…

Algorithm继续阅读