0

強制指向グラフを作成していますが、私が知る限り、コードは正しく記述されています。このコードを実行すると、DOM は正確に表示されます。それでも、何も表示されません。

var type_node_list = typeNodes(data);
shuffle(type_node_list);
initializePosition(type_node_list);

var links = typeLinks(type_node_list);

var svg = d3.select('#root');

var link = svg
    .append('g')
    .attr('id', 'links')
    .selectAll('line')
    .data(links)
    .enter()
    .append('line')
    .attr('class', 'link');

var type_nodes = svg
    .append('g')
    .attr('id', 'nodes')
    .selectAll('.node')
    .data(type_node_list)
    .enter()
    .append(createTypeNode);

function updateTypeNodeLocations() {
    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;});

    type_nodes
        .attr('x', nodeX)
        .attr('y', nodeY);
}
updateTypeNodeLocations();
/*
var position_the_types = d3.forceSimulation()
  .nodes( type_node_list )
  .force("charge",d3.forceManyBody().strength(-10))
  ;
position_the_types.on('tick',updateTypeNodeLocations());
*/

最初の部分を機能させようとしているので、シミュレーション部分はコメントアウトされています。コメントを外すと、処理が明らかに完了していないにもかかわらず、「tick」イベントが 1 回だけ呼び出されます。JavaScript コンソールには、それを説明するものは何もありません。

完全なコードについては、http://jsfiddle.net/jarrowwx/gof5knaj/36/を参照してください。

今朝はうまくいきましたが、何かが変わり、今は何もうまくいかないようです。D3 github を確認したところ、最後のコミットは 11 日前だったようで、ライブラリの変更が原因である可能性は低いです。

誰かが前にこのようなことを経験したことがありますか? 私が間違っていることについての指針はありますか?D3 バグを発見しましたか?

4

1 に答える 1

0

問題は私の機能にありますcreateTypeNode

次の方法で画像要素を作成しましたdocument.createElement('image')。それはうまくいきません。JavaScript で画像を作成するには、名前空間を使用する必要があります。

参照: javascript を使用してプログラムで SVG 画像要素を作成する

于 2016-11-16T03:16:28.753 に答える