我可以推荐一些可能性:首先,尝试对交互进行对数缩放或通过 sigmoidal 函数运行它们以压缩范围。这将为您提供更平滑的间距视觉分布。
独立于这个缩放问题:看看 graphviz 中的一些渲染策略,特别是“neato”和“fdp”程序。从手册页:
neato draws undirected graphs using ``spring'' models (see Kamada and
Kawai, Information Processing Letters 31:1, April 1989). Input files
must be formatted in the dot attributed graph language. By default,
the output of neato is the input graph with layout coordinates
appended.
fdp draws undirected graphs using a ``spring'' model. It relies on a
force-directed approach in the spirit of Fruchterman and Reingold (cf.
Software-Practice & Experience 21(11), 1991, pp. 1129-1164).
最后,考虑一种缩放策略、吸引力和某种阻力系数而不是排斥力。实际上,将事物移近,然后可能再移远,可能只会让您产生循环行为。
考虑一个模型,在这个模型中,一切最终都会崩溃,但速度很慢。然后运行直到满足某些条件(一个节点穿过布局区域的中心或类似的)。
阻力或动量可以被编码为对运动的基本阻力,并相当于限制运动;它可以被不同地应用(事情可以根据它们走了多远,它们在空间中的位置,有多少其他节点靠近等等)。
希望这可以帮助。