数据可视化的网络图布局算法
将屏幕视为一个大表,将节点放入相应的表中。
第一条线是列优先,从上到下排列在第一列的方格中。
如果第二线、第一节点位于第一线中,则以此节点为基础,进行方式
从左到右排列在表中,如果第一个节点不在第一条线上,则按列优先顺序从上到下排列在第二个表中
第三线、第一节点可分为四种情况。 在第一线中、第二线中、第一线和第二线中,不在任何一条线上。
在第一条线的时候,第一条线是沿着列方向排列的,所以这条线是沿着行方向排列的。
在第二条线中,由于第二条线在行方向上排列,所以该线在列方向上排列。
同时一线和二线时,采用斜右下方向排列。
任何一条线都按与第一条线相同的方式处理,并按列优先排列。 如果现在排在第五排的话,这条线就是第六排。
从第二行开始,针对正在处理的节点检查其是否为新节点。
对于旧节点,也就是说,如果出现在前一行中,则不需要指定新的表位置。 但是,这个节点的位置还记录在这条线上。
对于新节点,必须根据算法指定表的位置。
要检查从第二线分配的表的位置是否已经被占用,请分配该位置。
占用后,检查下一个位置直到不占用。
算法的流程图如下。
如果网络拓扑显示在以下二维阵列中:
[ 1,2,3,4 ]、[ 2,5,6,7,8 ]、[ 3,9,8 ]、[ 6,10,11 ] ]
程序运行结果的示例如下图所示。