1
이 없다하지만 난 오류가 계속 :D3 힘 지시 그래프 노드는 내가 <a href="http://hughsk.github.io/colony/" rel="nofollow">http://hughsk.github.io/colony/</a>에서 불통 코드를 사용하고 어떤 속성 "무게"
이것은 force.nodes에서 유래Uncaught TypeError: Cannot read property 'weight' of undefined
(노드) 함수를 들어 이 문서에서는 start()가 생성 될 때 레이아웃에 의해 기본값이 초기화되므로 무게를 설정할 필요가 없다고 말합니다.
체중 값이 초기화되지 않도록 내가 잘못하고있는 것을 누군가가 볼 수 있습니까? tick
에,
links.forEach(function (link) {
//var source, target;
for (var i = 0; i < nodes.length; i++) {
if (nodes[i].pages == link.source) {
link.source = nodes[i];
}
}
for (var i = 0; i < nodes.length; i++) {
if (nodes[i].pages == link.target) {
link.target = nodes[i];
}
}
link.source.children = link.source.children || []
link.source.children.push(link.target)
link.target.parents = link.target.parents || []
link.target.parents.push(link.source)
return link;
})
다음 :
var colony = {
"nodes":[
{
"pages":123,
"name":"Test",
"id":2
},
{
"pages":456,
"name":"Test2",
"id":3
}
],
"links":[
{
"source":123,
"target":456,
"weight":100
}
]
}
var nodes = colony.nodes
, links = colony.links
, scale = 1
, focus
var width = 960
, height = 960
, link
, node
, text
, textTarget = false
var colors = {
links: 'FAFAFA'
, text: {
subtitle: 'FAFAFA'
}
, nodes: {
method: function(d) {
return groups[d.group].color
}
, hover: 'FAFAFA'
, dep: '252929'
}
}
links.forEach(function(link) {
var source = function(nodes,link){
for (var i = 0; i < nodes.length; i++){
if (nodes[i].id == link.source){
return nodes[i];
}
}
}
, target = function(nodes,link){
for (var i = 0; i < nodes.length; i++){
if (nodes[i].id == link.target){
return nodes[i];
}
}
}
source.children = source.children || []
source.children.push(link.target)
target.parents = target.parents || []
target.parents.push(link.source)
})
var groups = nodes.reduce(function(groups, file) {
var group = file.mgroup || 'none'
, index = groups.indexOf(group)
if (index === -1) {
index = groups.length
groups.push(group)
}
file.group = index
return groups
}, [])
groups = groups.map(function(name, n) {
var color = d3.hsl(n/groups.length * 300, 0.7, 0.725)
return {
name: name
, color: color.toString()
};
})
var force = d3.layout.force()
.size([width, height])
.charge(-50 * scale)
.linkDistance(20 * scale)
.on('tick', function() {
link.attr('x1', function(d) { return d.source.x; })
.attr('y1', function(d) { return d.source.y; })
.attr('x2', function(d) { return d.target.x; })
.attr('y2', function(d) { return d.target.y; })
node.attr('cx', function(d) { return d.x; })
.attr('cy', function(d) { return d.y; })
if (textTarget) {
text.attr('transform'
, 'translate(' + textTarget.x + ',' + textTarget.y + ')')
}
})
var vis = d3.select('body')
.append('svg')
.attr('width', width)
.attr('height', height)
force.nodes(nodes)
.links(links)
.start()
오류는 '체중'이 누락되었음을 나타내지 않습니다. 오히려, 그것은 'weight'매개 변수를 가져야하는 무언가가 완전히 정의되지 않았 음을 나타냅니다. 나는 비록 무엇을 말할 수 없습니다. – meetamit
이런 종류의 디버깅 질문에서는 jsFiddle을 제공하는 것이 좋습니다. –
@ChristopherChiche http://jsfiddle.net/xymay/ 그게 도움이되는지는 모르지만 실제로는 나타나지 않습니다. 그러나 거기에 그것은 – user2562348