为什么D3链接标签停止工作
Why did the D3 link labels stop working
我有以下代码,用于将我的json数据中的链接名称放在我的节点链接上。
// Append text to Link lines
var linkText = vis.selectAll(".gLink")
.data(json.links)
.append("text")
.attr("class", "link")
.attr("x", function (d) {
if (d.target.x > d.source.x) { return (d.source.x + (d.target.x - d.source.x) / 2); }
else { return (d.target.x + (d.source.x - d.target.x) / 2); }
})
.attr("y", function (d) {
if (d.target.y > d.source.y) { return (d.source.y + (d.target.y - d.source.y) / 2); }
else { return (d.target.y + (d.source.y - d.target.y) / 2); }
})
.style("font", "normal 12px Arial")
.attr("dy", ".35em")
.text(function (d) { return d.linkName });
json数据如下所示
var json = {
"nodes": [
{ "name": "Fabby MONDESIR", "dob": "5.24.97", "ImageUrl": "http://172.18.215.101/MugImageAsp/MUGImageASP.ASP?WCI=RetrieveImage&WCE=FD635099", "ChartComments": "In Jail", },
{ "name": "ADNES D BRONSON", "dob": "5.24.97", "ImageUrl": "http://172.18.215.101/MugImageAsp/MUGImageASP.ASP?WCI=RetrieveImage&WCE=FD635199", "ChartComments": "Armed", },
],
"links": [
{ "source": 0, "target": 1, "linkName": "FCC", "value": 8 },
{ "source": 0, "target": 2, "linkName": "Arr", "value": 10 }
]
}
以上json是静态的。我现在正试图用存储过程从SQL Sever中提取数据,并希望使用数据库中的主键作为链接中的源和目标。我修改了json,现在是这样的。请注意,这是我理解的json代码片段,在节点中没有第三个主题与链接数据中的1到3链接一起工作。
var json = {
"nodes": [
{ "sId": "1", "name": "Fabby MONDESIR", "dob": "5.24.97", "ImageUrl": "http://172.18.215.101/MugImageAsp/MUGImageASP.ASP?WCI=RetrieveImage&WCE=FD635099", "chartComments": "Chart Comments"},
{ "sId": "2", "name": "ADNES D BRONSON", "dob": "5.24.97", "ImageUrl": "http://172.18.215.101/MugImageAsp/MUGImageASP.ASP?WCI=RetrieveImage&WCE=FD635098", "chartComments": "Chart Comments" }
],
"links": [
{ "source": "1", "target": "2", "linkName": "FCC",},
{ "source": "1", "target": "3", "linkName": "Arr",}
]
}
要使修改生效,我必须添加这段代码:
var nodeMap = {};
json.nodes.forEach(function(x) { nodeMap[x.sId] = x; });
json.links = json.links.map(function(x) {
return {
source: nodeMap[x.source],
target: nodeMap[x.target]
};
});
链接工作正常,但由于某种原因,链接文本不再显示在行上。我不知道为什么这会导致链接文本停止工作json数据仍然能够做出正确的关联并绘制线条,所以有人知道为什么会发生这种情况吗?没有做任何其他更改,如果我恢复到原来的json结构并删除nodeMap代码,everythink再次工作。
谢谢佩里
文本应该来自linkName,但在映射json.links:
时不包含此内容。目前: json.links = json.links.map(function(x) {
return {
source: nodeMap[x.source],
target: nodeMap[x.target]
// add linkName when mapping//
};
});
为了纠正这个问题,我必须映射linkName以及源和目标。因此,工作代码现在看起来像这样
var nodeMap = {};
json.nodes.forEach(function (x) { nodeMap[x.SubjectID] = x; });
json.links = json.links.map(function (x) {
return {
source: nodeMap[x.source],
target: nodeMap[x.target],
linkName: x.linkName
相关文章:
- jQuery UI自动完成突然停止工作
- JavaScript打印功能使日历停止工作
- 下拉列表在使用z索引放置在前面后停止工作
- 由于响应中不存在“Access Control Allow Origin”标头,跨域请求停止工作
- 注入工厂时,Angular停止工作
- React Native DeviceEventEmitter键盘WillShow停止工作
- JavaScript在更改css时停止工作
- Chrome地理定位在更新后停止工作
- 重新启动jquery脚本后,角度停止工作
- 如何在离开标签时停止在标签中播放紫藤视频
- twitter引导崩溃在第一次点击后停止工作
- 更新Wordpress和我的平滑滚动停止工作
- Hammer.js过了一段时间就停止工作了
- 应用程序在“关闭”之后停止工作(控制台中没有错误);咕哝的构造”;
- 当我添加JavaScript时,链接按钮停止工作
- NetBeans调试突然停止工作
- 添加 tr 标签会导致函数停止工作
- “视频”标签后,触控事件在 iPad 上停止工作
- IE10视频标签突然停止工作
- 为什么D3链接标签停止工作