最近我读了很多关于 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,两者都很好。然而,有一个约束条件是图形需要创建或可以导出为高分辨率矢量图形。
简而言之,我的问题:
- 有没有一种很好的方法来可视化我拥有的数据类型?如果是这样,它是否以易于实现的形式存在(即库)?
- 如果问题没有简单的解决方案,换句话说,如果我需要在这种情况下发明轮子,我该如何自己实现这样的图表?什么是好的起点?我要特别注意什么?
谢谢!
编辑:我的潜在想法是将通用集合中的所有元素布局为具有所需颜色覆盖的六边形网格,然后绘制集合的边界。然而,这个想法有几个问题,特别是为元素指定位置的问题,因此集合不会在整个图上分裂。有什么意见/建议吗?