4

RAP コンテキストで d3 ツリーマップ レイアウトを使用しています。したがって、私のツリーマップはビューに埋め込まれており、最初とサイズ変更後にこのビューを埋める必要があります。

ツリーマップの動的更新に関するいくつかのトピックを読みましたが、どれも私の問題に正確に対処していないと感じました。

this._treemap = d3.layout.treemap()
    .value(function(d){return d._value})
    .children(function(d) { return d._items })
    .size([800,300])
    .padding(4)
    .nodes(this);

 var cells = selection
    .data(this._treemap)
    .enter()
    .append("svg:g")
    .attr("class", "item")
    .append("rect")
    .attr("x", function(d){return d.x;})
    .attr("y", function(d){return d.y;})
    .attr("width", function(d){return d.dx;})
    .attr("height", function(d){return d.dy;})
    .attr("fill", function(d){return d.children ? color(d._text) : color(d.parent._text)})
    .attr("stroke", "black")
    .attr("stroke-width",1);

ツリーマップの初期化時に固定サイズが設定されます。すべての計算値 (値、x、y、dx、dy) は、サイズ セットによって異なります。このツリーマップを使用して、svg にいくつかの四角形を描画します。

ビューのサイズ変更を認識する更新機能が既にあり、ツリーマップ レイアウトの更新を何らかの方法で処理する多くの例がありますが、まとめることはできません。

_updateLayout: function() {

    this._width = this._chart._width;
    this._height = this._chart._height;
    console.log(this._height);
    console.log(this._width);
    this._layer = this._chart.getLayer( "layer" );

サイズと位置の新しい値で長方形を更新したいのですが、これらの値をレイアウトに取り込むにはどうすればよいですか? 新しいレイアウトを作成する以外に別のオプションがあるはずですよね?

4

1 に答える 1