2017-10-18 11 views
0

をソートするために、このblock(FIXED)私はthisと同様にソート機能を行うことを試みました。はどのようにグループ化されたバーチャートd3js v4の

技術的にはバーをソートしますが、ソートのチェックボックスをチェックして年をシフトすると意味がわかります。

私はそれが唯一の dataなく keysおよび/または copy変数に基づいていますが、私は任意の成功なしに言及した変数に基づいて方法のすべての種類のソートしようとした仕分けだという事実とは何かを持っていたと考え

わからないことが分からない場合は、何か助けてください!

+0

「合計」値でソートしているように見え、それに応じてバーが正しいように見えます。その値に基づいてソートされたすべてのグループの棒を欲しいですか? – Shashank

+0

私の質問で述べたように、バーは技術的にソートされていますが、他の例ではそうではありません。チェックボックスをオンにして、チェックボックスをオフにしてデータを更新すると、[ここ](https://bl.ocks.org/LemoNode/73dbb9d6a144476565386f48a2df2e3b)のように、データを更新してソートチェックボックスを切り替えると、バーはx位置にシフトしませんデータ。 あなたの質問については、いいえ、各グループの合計価値による並べ替えだけに興味があります。私は理にかなっていると思います。 –

+0

はい@ロベルト!わかった。私の悪い。私はすぐに解決策とリンクを追加します! – Shashank

答えて

1

ここに行く!あなたの前のコードではあまり変更は必要ありませんでした。

Plunker

だから、これはbarGroupsへのデータバインディングに関連していました。データがソートまたは変更されるたびに、新しいデータが "g.layer"にバインドされ、d3の更新方法によって、これはどのように動作するのでしょうか。

新しいコードの変更:

  • 変換なし属性でソートするデータの上に移動barGroupsコード。
  • x0ドメインが定義された後にグループに変換属性が追加されました。

関連するコード:

ソート機能上:

// bars 
let barGroups = g.selectAll("g.layer").data(data); 
barGroups.enter().append("g") 
    .classed('layer', true); 

barGroups.exit().remove(); 

X0ドメインが設定されると:

g.selectAll("g.layer").transition().duration(Globalvar.durations) 
    .attr("transform", function(d, i) { 
    return "translate(" + x0(d.State) + ",0)"; 
    }); 

は、この情報がお役に立てば幸い! :)

+0

優秀!説明もありがとう。 –

関連する問題