0

D3-javascript の配列から読み取って、JSON を動的に構築しようとしています。(以下のコードは私が実際に使用したものではありませんが、これに似ています)

 radius = [10,20,30];
   jsonradius = '[{';
   for i = 0 to radius.length {
       jsonradius += '"radius":';  
       jsonradius += 'radius[i]';
       jsonradius += ',';
   }
   jsonradius += '}]';

フラグを使用して、最後のエントリの後にカンマが配置されていないことを確認し、 text(jsonradius) 関数を使用して印刷すると完全な JSON として出力されます。'[{"radius":10,"radius":20,"radius":30}]'

しかし、次のようにアクセスしようとすると、値が返されません。

'd3.selectAll("circle").data(jsonradius).enter().select("circle").attr("r",function(d){return d.radius;});'

私はd3とjavascriptが初めてです。JSONを動的に構築する方法を教えてください。

4

3 に答える 3

1

JSON オブジェクトには、同じ名前の 3 つのフィールドが含まれています。エラーです。次のようなものでなければなりません。'[{"radius":10},{"radius":20},{"radius":30}]'

于 2013-11-04T08:27:18.330 に答える
0

経由でアクセスできるようにするために、データを JSON に変換する必要はありませんd3

radius配列自体を使用して、必要なことを実行できます。

d3.selectAll("circle").data([10, 20, 30]) // Use your array here
  .enter()
  .append('circle')  // not .select('circle')
  .attr('r', function (d) { return d; })
  // other properties.

そして、完全を期すために、JSON.strinfigy文字列を JSON との間で変換するために使用できます。

jsonRadius = JSON.stringify(radius.map(function (r) { return { radius: r }; }));
于 2013-11-04T10:24:40.560 に答える