如何显示节点属性,如person's的姓名、照片和地址
how to display the node attributes like person's name photo and address in a force directed graph
嗨,我正在制作d3.js库的力定向图示例,但我想固定所有节点的位置。当我点击节点时,我想显示一个弹出窗口,显示用户(节点)的图像和一些信息。
我会尽我所能回答,但你的问题有很多要回答的,所以这更多的是关于在哪里寻找更多信息的概述,以及让你沿着正确的道路开始的一点。
请原谅粗制滥造的链接(我还不能发布超过两个…)
通过将每个单独节点的布尔值"fixed"属性设置为true,可以固定节点的位置。
请参阅以下章节:#force.nodes([nodes])https://github.com/mbostock/d3/wiki/Force-Layout
要使节点可单击,可以在将新节点附加到节点选择时,将事件侦听器附加到节点选项。请参阅此处:Github/mbstock/d3/wiki/Selections#wiki on
要为每个节点添加更多属性,只需将数据添加到"节点"数组内的对象中,然后再将其加入到您的选择中。
下面是我对它进行的编辑,展示了如何添加拖动行为,以及鼠标"点击"侦听器事件来在fixed=true和false之间切换节点,并对添加额外节点属性的位置进行了一些评论,还可能进行函数调用以显示更多节点信息。https://gist.github.com/alexhornbake/6079321
以上内容是根据以下示例编辑的。当我感到困惑时,我仍然会参考这个例子,非常有用/简单的力布局例子:Gist GitHub/mbstock/1095795
为了补充Alex的答案,这里有一个简单的例子,假设您已经将属性name
与每个数据值相关联。因此,您希望为每个节点都有一个g
元素,而每个g
都将有一个circle
和一个text
。然后,您可以通过指数或值将两者联系起来,正如Mike Bostock在这里解释的那样。请注意,数据是自动从父级继承的。使用关联的点击事件将类添加或删除到将显示或隐藏的文本中。这可以使用selection.classed()
完成
var nodes = d3.select("body").append("svg:g")
.selectAll("g.nodeGroup")
.data(dataset)
.enter()
.attr("class", "nodeGroup")
.attr("x", function(d) { ...
...
.each(function(d) {
d3.select(this).append("circle")
.attr("r", function(p) { return p.value})
.on("click", function(p) {
d3.selectAll("g.nodeGroup text")
.filter(q) { return p.value == q.value}
.classed("show", true)});
d3.select(this).append("text")
.attr("text", function (P) { return p.name})
});
- 漂亮照片图片库中的Facebook赞按钮
- 图片照片库
- 后焦点更改为IE 11中的地址栏,而不是转移到表单中的下一个控件
- 使用正则表达式评估电子邮件地址时出现性能问题
- 跟踪用户点击Adsense广告的IP地址
- 将谷歌自动完成地址信息放在页面上,而不是表格中
- 使用API在我的网站Google-Map上显示搜索地址的纬度和经度
- 将照片从javascript发送到php
- 地址栏中url的缩短
- 需要比特币校验地址和json帮助
- XSS通过地址栏注入
- 是否可以创建一个带有进度条的跨浏览器AJAX照片上传器
- 照片滑块的条件语句
- 动态代码中存在系统应用程序地址错误
- 根据部门用户的选择,接收来自多个电子邮件地址的Wordpress Contactform7查询
- 为什么缩放按钮不会显示在照片擦除中
- 用于更改IP地址的输入框
- 如何使用默认的网络摄像头拍摄照片并将其保存在我的c#.net web应用程序中
- 电子邮件地址验证但创建帐户,即使电子邮件地址无效
- 如何显示节点属性,如person's的姓名、照片和地址