4

これは私の最初の質問であり、素晴らしい d3.js はまったく初めてです。12 個のオブジェクトと多くのプロパティを含む geojson ファイルからコロプレス マップを作成しようとしています。

d3.min と d3.max でカラースケール (量子化) のドメインを計算したいのですが、何かが間違っているに違いありません。min と max の値はまだ定義されていません (webinspektor を信じるなら)。ドメインタグに数値を使用すると、すべて正常に機能します。

誰かが私を助けてくれることを願っています。ご回答ありがとうございます。

これが私のコードです:

d3.json("IKSK_LK_Goe_31463.json", function (collection) {




                overlay.afterAdd = function () {                    // Add the container when the overlay is added to the map.


                    color.domain([
                            //1,30
                            d3.min(collection, function(d) {return d.features.properties.EINWOHNER;}),
                            d3.max(collection, function(d) {return d.features.properties.EINWOHNER;})
                            ]); 
                            console.log(d3.max(collection, function(d) {return d.features.properties.EINWOHNER;}));
4

4 に答える 4

3

他の人が述べたように、d3.max への入力は配列でなければなりません。d3.values(collection); を使用して値の配列を作成する場合は、入力がオブジェクトでないことを確認してください。

var collection = {
  '01': { foo: 'bar', value: 10 },
  '02': { foo: 'baz', value: 20 }
};

var collection_array = d3.values(collection);
// --> [{ foo: 'bar', value: 10 }, { foo: 'baz', value: 20 }]
d3.max(collection_array, function (d) { return d.value});
// --> 20

頑張ってください!

/ヴィレ

于 2014-05-10T21:25:16.393 に答える
2

d.features.properties.EINWOHNERが整数値の場合、またはそこから整数値を抽出したい場合 (これが最小値と最大値の意味です) は、次のようにその前に a を追加します'+'

    d3.min(collection, function(d) {return +d.features.properties.EINWOHNER;}),
    d3.max(collection, function(d) {return +d.features.properties.EINWOHNER;})]);
于 2014-01-06T12:28:13.223 に答える
1

他の人が述べたように、数値変数の前に + を追加すると役立つ場合があります。

最小/最大を取得し、それをドメインとして使用するための優れたシンプルな d3 関数は次のとおりです。

d3.extent(配列[, アクセサ])

自然順序を使用して、指定された配列の最小値と最大値を返します。これは、d3.min と d3.max を同時に呼び出すことと同じです。

したがって、 color.domain(d3.extent(...)) もドメインを適切に設定します。

それが役に立てば幸い :)

于 2015-02-23T20:38:20.300 に答える
0

次のようなものを使用します。

var xx = [{x:'one',y:1}, {x:'two',y:2}]; //array
var maxOfY = d3.max(xx, function(d){ return d.y;});
于 2015-12-23T11:00:02.283 に答える