将集合层次结构可视化为颜色编码的图形
我最近一直在阅读很多关于Java和Javascript的图形库,但我还没有找到一个好方法来做我想做的事情。
从本质上讲,我有一个关于一堆元素(最多几千个)的集合层次结构。这些集合可以完全或部分重叠,完全覆盖或彼此完全不相交。我想做的是显示以下信息:
- 集合的大小(相对于其他集合)
- 根据集合所涵盖的元素计算的集合的“热”值(以颜色代码表示)
- 集合的完整拓扑在单个图形中(以便向用户显示重叠,交集等)
编辑:也许我应该举个例子来说明我所说的集合和元素以及部分重叠的层次结构是什么意思。以下是我处理的那种集合的过度简化版本(请注意,数字和字母表示彼此可比较的元素):1
10
a
h
X
Set1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}
Set2 = {1, 2, 3, 4, 5, 6}
Set3 = {1, 2, 3}
Set4 = {1, 4, 5, 6, 7}
Set5 = {a, b, c, d, e, f, g, h}
Set6 = {a, b, c, d, e}
Set7 = {a, b, c, 7}
Set8 = {2, 4, 7, 8, c, f}
Set9 = {X}
我不确定如何以直观的方式显示此信息。我看过Voronoi ¹,²图,我真的很喜欢视觉上,但是它们具有不同的数学背景,所以我认为我无法以适当的方式描绘我所拥有的层次结构。我想在运行时(在Java的情况下)创建这些图形,或者在HTML部署的情况下使用Javascript,两者都完全没问题。但是,有一件事是约束性的,那就是图形需要创建,或者可以导出为高分辨率矢量图形。
简而言之,我的问题:
- 有没有一种很好的方式来可视化我拥有的数据类型?如果是这样,它是否以易于实现的形式存在(即库)?
- 如果没有简单的解决方案,换句话说,如果在这种情况下我需要发明我的轮子,我该如何自己实现这样的图表?什么是好的起点?我需要特别注意什么?
谢谢!
编辑:我的潜在想法是将通用集合中的所有元素布局为具有所需颜色叠加的六边形网格,然后绘制集合的边界。然而,这个想法有几个问题,特别是为元素指定位置的问题,以便集合不会在整个图中全部拆分。任何意见/建议?