2017-07-26 9 views
0

私はMike Bostockのアニメーションスタック(seen here)の修正版をしばらく使っていました。ここで他の人の助言を得て、私はD3バージョン3のすべてのチャートをバージョン4に変換しようとしていたので、すべてが互換性があります。v3からv4へのstack()コールの変換

残念ながら、なぜこのコードセグメントがコンパイルされないのかわかりません。それは "Uncaught TypeError"を投げています。私は、スタック()に渡された配列を必要とする新しいバージョンと関係があると言いました。

var stack = d3.stack() 
    .values(data, function(d) { return d.values; }) 
    .x(function(d) { return d.date; }) 
    .y(function(d) { return d.value; }) 
    .out(function(d, y0) { d.valueOffset = y0; }); 

これはD3バージョン4で正しく行う必要がありますか?

編集:私もthis link to a support request on githubが見つかりましたが、そこに誰もこのチャートを変換する方法を説明できないようです。

+0

v4スタック関数はcsvのようなデータを期待しています。データ構造を変更する必要があります。 –

答えて

0

D3 V4 d3.stack()コンストラクタはvaluesxyout連鎖する方法を持っていません。それは第3版の構文です。ドキュメントhereを確認してください。積み上げ棒グラフのthis exampleを見てください。 d3.stackは、この例で使用するよう、注意してください:

... 
    g.append("g") 
    .selectAll("g") 
    .data(d3.stack().keys(keys)(data)) 
    .enter().append("g") 
... 

更新: 私はD3のV4への質問で述べたマイク・ボストックで「bl.ocks」を書き直しました。このフィドルを見てください - https://jsfiddle.net/levvsha/vrbq7ebz/

+0

新しいバージョンのスタックメソッドでは、やり方が簡単にできないと言っていますか?私はD3が大好きですが、新しいバージョンがバージョン3と論理的に互換性がないのは非常に不満です。 – Keith

+1

@Keith残念ながら、それは本当です。 D3の一部は第4版で書き直されました。私は3番目のバージョンから4番目にコンポーネントをアップグレードする経験があります。私はあなたが4番目のバージョンと更新された答えに言及した "bl.ocks"を書き直しました。これを見てください - https://jsfiddle.net/levvsha/vrbq7ebz/。 これは、コンポーネントの書き換えに役立ちます。 –

+0

それは動作します!それはあなたのミハイルを行うのは素晴らしい、本当に実例を感謝します。 – Keith

関連する問題