【问题标题】:D3: ordinal scale not working with array of objectsD3:序数比例不适用于对象数组
【发布时间】:2015-03-02 21:01:46
【问题描述】:

仍在与 d3 斗争。

我尝试构建一个序数比例,其中域是一组对象。不知何故 rangeBands 不适用于这种类型的数组。它适用于字符串或数字数组。 谁能解释一下原因?

var number_data = [1,2,3,4,5];

var string_data = ["1","2","3","4","5"]

var object_data = [{"test":"1" },{"test":"2"},{"test":"3"},{"test":"4"},{"test":"5"}]

console.log("+++ Array of Numbers +++")
var scale= d3.scale.ordinal()
                .domain(number_data)
                .rangeBands([0,100]);

number_data.forEach(function(d){
    console.log(scale(d));
});

console.log("+++ Array of Strings +++")
scale.domain(string_data);

string_data.forEach(function(d){
    console.log(scale(d));
});

console.log("+++ Array of Objects +++")
scale.domain(object_data);

object_data.forEach(function(d){
    console.log(scale(d));
});

http://jsfiddle.net/tgtrtv9e/

【问题讨论】:

    标签: javascript arrays d3.js


    【解决方案1】:

    您不能使用具有序数刻度的对象。在内部,从输入到输出的映射使用 D3 映射,它将键(即输入)强制转换为字符串。对于对象,所有对象的结果是"[object Object]"。也就是说,所有对象在序数尺度上“看起来”都是一样的。

    【讨论】:

      猜你喜欢
      • 2016-04-24
      • 1970-01-01
      • 1970-01-01
      • 2021-10-18
      • 2012-07-29
      • 2019-09-06
      • 1970-01-01
      • 1970-01-01
      • 2012-03-29
      相关资源
      最近更新 更多