1

初めてのユーザーなので、プロトコルの偶発的な違反を許してください. 私は、D3 で生成されたコード ダイアグラムの外側のリングを形成する弧を取り、それらを一種の棒グラフに変換しようとしています。各グループの弧は、異なる外側半径を持っています。これが不可能であることを示唆する D3 ドキュメントには何も見つかりませんでしたが、解決策はまだ見つかりませんでした。トリッキーな部分は、私が保存しているcsvファイルから関連する数値を実行して取得する関数を取得し、それに応じて円弧の外径を変更することです。これが私がこれまでに持っているものです(「Andrew RPのAndrew's Chord Example」から変更):

d3.csv('teams.csv', function(cities) {
d3.json('matrix1.json', function(matrix) {

// Compute the chord layout.
layout.matrix(matrix);

// Add a group per neighborhood.
var group = svg.selectAll(".group")
.data(layout.groups)
.enter().append("g")
.attr("class", "group")
.on("mouseover", mouseover);


// Add the group arc.
var groupPath = group.append("path")
.attr("id", function(d, i) { return "group" + i; })
.attr("d", d3.svg.arc().innerRadius(innerRadius).outerRadius(innerRadius + function(d, i) {return cities[i].conservation;}))
.style("fill", function(d, i) { return cities[i].color; });

しかし、プログラムを実行すると、外側の円弧が表示されず、ブラウザーの開発者ペインに「d」を解析できないというエラー メッセージが表示され、outerRadius(…) 内の関数の実行に問題があることが示されます。ヘルプやアドバイスをいただければ幸いです。ありがとう!

4

1 に答える 1

3

このコードは正しくありません:

.outerRadius(innerRadius + function(d, i) {return cities[i].conservation;})

innerRadius+を合計しようとしていreference to functionます。 function(d, i) {return cities[i].conservation;}関数呼び出しではなく、この関数へのポインター参照のみです。この関数は直接呼び出されず、後で実行される outerRadius に引数として渡されるだけです。あなたの例では、と呼ばれてinnerRadius + function(d, i) {return cities[i].conservation;}います。それらは互換性のない型 (innerRadius はおそらく整数であり、関数 (... は関数型) であるため、メソッドが呼び出され、100 が変数の値である .outerRadius に.toString()文字列を渡します。コードは次のようになります。"100function (d, i) {return cities[i].conservation;}"innerRadius

.outerRadius(function(d, i) {return innerRadius + cities[i].conservation;})
于 2015-06-08T19:39:11.017 に答える