【问题标题】:Keeping two nodes next to each other when drawing a vis.js network绘制 vis.js 网络时保持两个节点彼此相邻
【发布时间】:2025-12-31 23:30:01
【问题描述】:

我正在尝试使用 vis.js 使用分层布局绘制家谱。一些节点代表一对夫妻,他们通过一条边相互连接。我希望这样的节点对彼此相邻放置 - 但是 vis.js 将它们与中间的其他节点分开。

有没有办法指示 vis.js 将两个节点保持在一起并将它们彼此相邻绘制?

这些是我正在使用的当前网络选项:

var tree_options = 
{
    nodes: 
    {
        borderWidth: 1,
        borderWidthSelected: 1,
        shape: "box",
        color: 
        {
            border: 'lightgray',
            background: 'white',
            highlight: 
            {
                border: 'lightgray',
                background: 'lightblue'
            },
            hover: 
            {
                border: 'lightgray',
                background: 'lightblue'
            }
        }
    },
    edges: 
    {
        smooth: 
        {
            type: 'cubicBezier',
            forceDirection: 'vertical',
            roundness: 0.5
        },
        color: 'lightgray'
    },
    layout: 
    {
        hierarchical: 
        {
            direction: 'UD',
            nodeSpacing: 150,
            parentCentralization: true,
            sortMethod: 'directed'
        }
    },
    interaction: 
    {
        dragNodes: true
    },
    physics: false
};

【问题讨论】:

    标签: vis.js vis.js-network


    【解决方案1】:

    鉴于它是一个分层网络,您是否尝试在每个节点上为“级别”设置一个值?

    查看示例:http://visjs.org/examples/network/layout/hierarchicalLayoutUserdefined.html

    【讨论】:

    • 是的,我正在为每个节点设置一个级别。我的问题是,具有相同级别并代表丈夫+妻子的 2 个节点不一定在图中彼此相邻 - 在某些情况下,其他节点位于它们之间。我的问题是是否有某种方法可以确保这两个节点“绑定”在一起并彼此相邻显示。在您提供的示例中 - 假设我希望节点 1 和 11 彼此相邻绘制。
    • 我能想到的唯一可能性是:(a) 在两个节点之间有一条边并指定一个短边长 (b) 以某种方式找出并设置这些节点的 x,y (c ) 改变物理
    • 感谢您的回复,我确实尝试过使用各种参数“玩”,但现在无法使其正常工作。
    • 嘿郁金香,你能做到这一点吗?我也陷入了类似的困境。
    最近更新 更多