问题描述
我试图引起人们注意所选节点的血统
最初,我只是尝试隐藏不相关的节点,但是位置不是确定的,因此会将先前隐藏的节点放在不隐藏的随机位置
现在我正在尝试缩小不相关的节点,但是节点值/比例的东西似乎没有按预期工作,并且最大大小被忽略了
例如,如果我将最小大小设置为1,将最大大小设置为24 并将初始值设置为24 我希望节点数为24,或者最大允许大小
然后,当我将不相关的节点的大小设置为1后在不相关的节点上运行nodes.updateonly()时,它也会缩放未修改的节点。
我希望所选的节点保持相同的大小
理想情况下,我想要类似的东西 最小1,最大20 初始尺寸19
在选择集上,将相关节点设置为20,将不相关节点设置为1。 取消选择后,一切恢复为19
visjs是否支持此功能?或者我错过了扩展功能的要点(如果是,还有其他方法吗?)
此处示例: http://jsfiddle.net/rona1xyv/
// create an array with nodes
var nodes = new vis.DataSet([{
id: 1,label: 'a',level: 0,},{
id: 2,label: 'b',{
id: 3,label: 'c',level: 0
},{
id: 4,label: 'd',level: 2
},{
id: 5,label: 'e',level: 4
},{
id: 6,label: 'f',{
id: 7,label: 'g',{
id: 8,label: 'h',level: 6
},{
id: 9,label: 'i',level: 8
},{
id: 10,label: 'j',{
id: 11,label: 'k',level: 4
}
]);
// create an array with edges
var edges = new vis.DataSet([{
from: 3,to: 4
},{
from: 4,to: 5
},{
from: 3,to: 6
},{
from: 2,{
from: 6,to: 7
},{
from: 1,to: 8
},{
from: 7,{
from: 8,to: 9
},{
from: 10,to: 11
},{
from: 11,to: 8
}
]);
// create a network
var container = document.getElementById('mynetwork');
// provide the data in the vis format
var data = {
nodes: nodes,edges: edges
};
var options = {
nodes: {
shape: "Box",value: 24,scaling: {
min: 1,max: 24,label: {
enabled: true,min: 1,max: 24
},edges: {
arrows: 'to',smooth: {
type: "dynamic",forceDirection: "none",roundness: 0.5,}
},layout: {
improvedLayout: true,//clusterThreshold: 150,hierarchical: {
enabled: true,//levelSeparation: 250,nodeSpacing: 100,//treeSpacing: 200,blockShifting: true,edgeminimization: true,//parentCentralization: true,direction: 'LR',// UD,DU,LR,RL
sortMethod: 'directed',// hubsize,directed
shaketowards: 'roots' // roots,leaves
}
}
};
// initialize your network!
var network = new vis.Network(container,data,options);
network.on("click",function(params) {
// reset hidden of all nodes at the start of the click
allNodes = nodes.get();
allNodes.forEach(function(element) {
element.opacity = 1;
element.value = 24;
// element.hidden = false;
});
relatednodes = getAllRelatednodes(params.nodes[0],"from");
relatednodes = relatednodes.concat(getAllRelatednodes(params.nodes[0],"to"));
if (params.nodes.length > 0) {
allNodes = nodes.get();
allNodes.forEach(function(element) {
if (!relatednodes.includes(element.id)) {
element.opacity = 0.3;
element.value = 1;
// element.hidden = true;
}
});
}
nodes.updateOnly(allNodes);
network.stabilize();
network.fit();
});
function getAllRelatednodes(nodeId,direction) {
var allRelatednodes = [nodeId];
i = 0;
while (allRelatednodes[i]) {
x = network.getConnectednodes(allRelatednodes[i],direction);
allRelatednodes = allRelatednodes.concat(x);
i++;
}
return allRelatednodes;
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)