在Cytoscape.js中设置节点位置

我正在使用出色的Cytoscape.js进行绘图。

我以前一直使用Cola选项,因为它使用力方向。

但是,我现在想可视化多个没有连接的图形,并意识到fCose在执行此操作方面要好得多。

我现在面临的问题是,当我已经有了坐标时,现在无法设置节点位置。

我可以通过使用Cola在布局选项中执行以下操作来实现此目的-

    name: 'cola',padding: layoutPadding,nodeSpacing: 40,edgeLengthVal: 20,animate: false,// setting this to false
    randomize: false,// and this to false allowed me to manually set the node position coordinates
    maxSimulationTime: maxLayoutDuration,boundingBox: { 
        x1: 0,y1: 0,x2: 10000,y2: 10000
    },edgeLength: function (e) {
        let w = e.data('weight');
        return w;
    }

还将Cola的默认值positions设置为undefined,我认为这意味着如果传递了坐标,则会对其进行相应的设置。

但是我的问题是fCose是,无论我做什么,传递节点中的节点的坐标时,渲染时的影响都为零。

fCose的默认设置中,我看到三个变量,我认为如果我进行了更改,将会产生效果-

    quality: "default",// Use random node positions at beginning of layout
    // if this is set to false,then quality option must be "proof"
    randomize: true,// Whether or not to animate the layout
    animate: true,

因此,我将quality设置为“证明”,并将randomizeanimate都设置为false

我也尝试添加positions: undefined,但是以上更改均未对节点定位产生任何影响。我如何用fCose做到这一点?

cloud529 回答:在Cytoscape.js中设置节点位置

在fCoSE中,如果randomize为true,则节点最初会散布到随机位置,然后算法尝试查找图的良好布局。

如果randomize为false,则算法从节点的当前位置开始。从当前位置来看,我的意思是在每个细胞景观节点中找到的位置属性。如果要从所需位置开始布局,则首先需要使用node.position()nodes.positions()将这些位置分配给节点,然后使用randomize:false开始布局。否则,布局当前不直接接受初始位置。

,

我不得不使用cytoscape js解决相同的问题,并且通过使用“预设”布局选项实现了这一目标。

如果您想在JSON元素中自行指定节点位置,则可以使用预设布局-默认情况下,它不会设置任何位置,而将节点保留在当前位置(即在options.elements中指定) >初始化时间)。

本文链接:https://www.f2er.com/3100318.html

大家都在问