ツリーマップにやや近いが三角形のスタイルのカスタム d3 レイアウトを作成する必要があります。理解できるように、次のスクリーンショットを示します: ピラミッド レイアウト
ご覧のとおり、かなりきちんと動作し、私のニーズに合っています。コード化するために、ツリーマップ レイアウト コードに基づいてコードを作成しました。
d3.layout.pyramid= function () {
var hierarchy = d3.layout.hierarchy(), round = Math.round, size = [ 1, 1 ], padding = 0;
function populate (nodes, currentHeight, currentHeightPadded, currentBase, currentSumedWeight) {
...
}
function populate_layers (layer, nodes,currentHeight,currentLength, currentSumedArea,currentSumedWeight) {
...
}
function pyramid(d) {
var nodes = hierarchy(d), root = nodes[0];
populate(root.children.slice(),0,0,0,0);
return nodes;
}
pyramid.padding = function(x) {
if (!arguments.length) return padding;
padding = x;
return pyramid;
};
pyramid.size = function(x) {
if (!arguments.length) return size;
size = x;
return pyramid;
};
return d3_layout_hierarchyRebind(pyramid, hierarchy);
};
私の問題は、そうするために、d3.v2.js
ファイルを直接編集する必要があったことです。私の場合、一部のプライベート関数は外部からアクセスできないためd3_layout_hierarchyRebind
です。明らかに、それがベストプラクティスではないことはわかっていますが、d3_layout_hierarchyRebindis
外部からは見えない別のスクリプトでファイルを外部化することはできません。
d3 に関連する問題なのか JavaScript に関連する問題なのかはわかりませんが、この小さな問題の解決を手伝っていただけるかどうかを知りたいです。
前もって感謝します!