vis.js 改变节点颜色也会影响边颜色
vis.js change node color also affect edge color
我使用这个函数从它的 id 更改节点颜色但是我发现以该节点开始的边缘也会改变颜色
例子
如果我将节点 2 更改为红色
从 2 连接到 1、4、5 的边 8、7、6 也变为红色
function draw() {
nodes.add([
{id: 1, label: 'Node 1'},
{id: 2, label: 'Node 2'},
{id: 3, label: 'Node 3'},
{id: 4, label: 'Node 4'},
{id: 5, label: 'Node 5'}
]);
edges.add([
{id:9, from: 3, to: 1},
{id:8, from: 2, to: 1},
{id:7, from: 2, to: 4},
{id:6, from: 2, to: 5}
]);
这是我的代码:
network.on( 'click', function(params) {
idnode = params.nodes;
idedge = params.edges;
});
function red() {
idnode2 = idnode;
nodes.update({id: idnode2, color: "red"});
}
我的理解是,这正是 vis.js 的工作原理:默认情况下,边缘颜色是原始节点(的边界)的颜色(您当然可以更改它,就像您对节点)。
有关详细信息,请参阅选项的文档:color.inherit
in http://visjs.org/docs/network/edges.html
我发现如果我在选项中设置边缘颜色。边缘颜色不会再改变。
我们需要在全局选项中禁用继承 属性,例如:
var options = {
nodes: {
shape: 'dot',
scaling: {
customScalingFunction: function (min,max,total,value) {
return value/total;
},
min:20,
max:100
}
}
,
edges:{
scaling: {
customScalingFunction: function (min,max,total,value) {
return value/total;
},
min:1,
max:200
},
color: {
//color:'#848484',
highlight:'#848484',
hover: '#d3d2cd',
inherit: false,
opacity:1.0
}
}
};
然后在添加边缘时,我们应该包括颜色:
edges.add({from: 1, to: 2, value:10,color:{color:'#ff383f'}});
或者您可以用颜色更新边缘:
edges.update({id:10,color:{color:'#ff383f'}});
禁用 options.edges.color.inherit 中的继承属性:
let options = {
edges: {
color : {
inherit: false
}
}
}
我使用这个函数从它的 id 更改节点颜色但是我发现以该节点开始的边缘也会改变颜色
例子
如果我将节点 2 更改为红色
从 2 连接到 1、4、5 的边 8、7、6 也变为红色
function draw() {
nodes.add([
{id: 1, label: 'Node 1'},
{id: 2, label: 'Node 2'},
{id: 3, label: 'Node 3'},
{id: 4, label: 'Node 4'},
{id: 5, label: 'Node 5'}
]);
edges.add([
{id:9, from: 3, to: 1},
{id:8, from: 2, to: 1},
{id:7, from: 2, to: 4},
{id:6, from: 2, to: 5}
]);
这是我的代码:
network.on( 'click', function(params) {
idnode = params.nodes;
idedge = params.edges;
});
function red() {
idnode2 = idnode;
nodes.update({id: idnode2, color: "red"});
}
我的理解是,这正是 vis.js 的工作原理:默认情况下,边缘颜色是原始节点(的边界)的颜色(您当然可以更改它,就像您对节点)。
有关详细信息,请参阅选项的文档:color.inherit
in http://visjs.org/docs/network/edges.html
我发现如果我在选项中设置边缘颜色。边缘颜色不会再改变。
我们需要在全局选项中禁用继承 属性,例如:
var options = {
nodes: {
shape: 'dot',
scaling: {
customScalingFunction: function (min,max,total,value) {
return value/total;
},
min:20,
max:100
}
}
,
edges:{
scaling: {
customScalingFunction: function (min,max,total,value) {
return value/total;
},
min:1,
max:200
},
color: {
//color:'#848484',
highlight:'#848484',
hover: '#d3d2cd',
inherit: false,
opacity:1.0
}
}
};
然后在添加边缘时,我们应该包括颜色:
edges.add({from: 1, to: 2, value:10,color:{color:'#ff383f'}});
或者您可以用颜色更新边缘:
edges.update({id:10,color:{color:'#ff383f'}});
禁用 options.edges.color.inherit 中的继承属性:
let options = {
edges: {
color : {
inherit: false
}
}
}