在arbor.js(查询插件)中为边缘添加标签
Add label to edges in arbor.js (Query plugin)
如何在arbor.js中为边缘添加标签这是一个图形可视化库。
假设A和B是节点,E是边一种简单的方法是插入一个"文本节点"T并将A-T和T-B连接起来
但是我不想这样,还有别的办法吗?
下面是示例代码var theUI = {
nodes:{A:{color:"red", shape:"dot", alpha:1},
B:{color:"#b2b19d", shape:"dot", alpha:1},
C:{color:"#b2b19d", shape:"dot", alpha:1},
D:{color:"#b2b19d", shape:"dot", alpha:1},
},
edges:{
A:{
B:{length:.8},
C:{length:.8},
D:{length:.8}
}
}
}
var sys = arbor.ParticleSystem()
sys.parameters({stiffness:900, repulsion:2000, gravity:true, dt:0.015})
sys.renderer = Renderer("#sitemap")
sys.graft(theUI)
其中,A与B、C、D相连。如何向边缘提供标签?
arbor.js允许您编写代码来呈现整个图形。你可以在渲染方法中做任何你想做的事情,包括绘制可以存储在单独地图中的边缘标题。
在Renderer中重写方法:
redraw:function()
{
ctx.fillStyle = "white";
ctx.fillRect (0,0, canvas.width, canvas.height);
particleSystem.eachEdge (function (edge, pt1, pt2)
{
ctx.strokeStyle = "rgba(0,0,0, .333)";
ctx.lineWidth = 1;
ctx.beginPath ();
ctx.moveTo (pt1.x, pt1.y);
ctx.lineTo (pt2.x, pt2.y);
ctx.stroke ();
ctx.fillStyle = "black";
ctx.font = 'italic 13px sans-serif';
ctx.fillText (edge.data.name, (pt1.x + pt2.x) / 2, (pt1.y + pt2.y) / 2);
});
particleSystem.eachNode (function (node, pt)
{
var w = 10;
ctx.fillStyle = "orange";
ctx.fillRect (pt.x-w/2, pt.y-w/2, w,w);
ctx.fillStyle = "black";
ctx.font = 'italic 13px sans-serif';
ctx.fillText (node.name, pt.x+8, pt.y+8);
});
};
此代码期望在初始化时填充每条边的data属性。
我手动创建所有的节点和边使用我的自定义地图和方法addNode/adddge,但我想你可以改变一点你的代码初始化边与自定义数据:
var theUI = {
nodes:{A:{color:"red", shape:"dot", alpha:1},
B:{color:"#b2b19d", shape:"dot", alpha:1},
C:{color:"#b2b19d", shape:"dot", alpha:1},
D:{color:"#b2b19d", shape:"dot", alpha:1},
},
edges:{
A:{
B:{length:.8, data:{name:"A->B"}},
C:{length:.8, data:{name:"A->C"}},
D:{length:.8, data:{name:"A->D"}}
}
}
}
注:请看这个例子,我从中学到了很多。
edge.data
是{length:.8, data:{name:"A->B"}}
,因此将方法particleSystem.eachEdge()
的最后一行替换为以下代码
ctx.fillText (edge.data.data.name, (pt1.x + pt2.x) / 2, (pt1.y + pt2.y) / 2);
相关文章:
- 正在添加'X'按钮,在文本字段旁边使用javascript
- 如何在映射数组中添加换行符
- 正在将数据主题添加到所有项目
- ZeroClipboard-在复制之前添加到值
- 我可以在json对象中添加一个函数吗
- 将输入字段中的文本提交到我的数据库,同时将其添加到我的列表中
- 正在SharePoint 2013母版页中添加JQuery移动文件
- 如何添加浮动和非浮动,其他
- 添加文字和评论功能更新Div
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- 动态地改变“”的URL;添加新项目”;链接使用javascript/jquery
- 用于添加边缘的gremlin服务器查询
- 库存图表-添加偏移以避免在边缘绘制点
- 如何在 d3 图形中向边缘添加标签
- Javascript infovis工具包(JIT)在HyperTree中添加边缘事件侦听器
- Infovis JIT:向边缘添加点击侦听器
- 在arbor.js(查询插件)中为边缘添加标签
- 用Cytoscape.js添加一个边缘标签
- JIT添加子图单个边缘颜色
- 如何在vis.js中动态添加边缘到集群