D3.js 在d3图表函数中访问json的不同部分

D3.js 在d3图表函数中访问json的不同部分,d3.js,D3.js,我正在尝试制作一个函数,这样我就可以使用一组数据绘制三个不同的图表 数据样本 var marketshare = [ {"store": "store1", "share": "5.3%", "q1count": 2, "q2count": 4, "q3count": 0}, {"store": "store2","share": "1.9%", "q1count": 5, "q2count": 10, "q3count": 0}, {"store": "store3",

我正在尝试制作一个函数,这样我就可以使用一组数据绘制三个不同的图表

数据样本

var marketshare = [
    {"store": "store1", "share": "5.3%", "q1count": 2, "q2count": 4, "q3count": 0},
    {"store": "store2","share": "1.9%", "q1count": 5, "q2count": 10, "q3count": 0},
    {"store": "store3", "share": "2.5%", "q1count": 3, "q2count": 6, "q3count": 0}
];
我想画三张图表。一个是q1count,一个是q2count,一个是q3count。我创建了一个可以使用

drawChart(divID,marketshare,chartWidth,countReference)
“divID”是一个字符串,用于标识图表的绘制位置。 “市场份额”是数据。 “chartWidth”是图表宽度。 “countReference”是一个字符串,表示我要使用对象中的哪些数据。例如,如果我想访问json的这一部分,这可能是“q2count”

我在拼接电话以获取数据时遇到了问题。下面是一个我试图记录最小数据点的示例

var minDataPoint = d3.min(marketshare, function(d){
    console.log("min d["+countReference+"] "+d[countReference]); //example return : min d[q2count] undefined
    console.log("min d.q2count "+d.q2count); //example return : min d.q2count 4 
    ...
});

我想我应该能够使用countReference来访问json的不同部分,但我没有这样做

我将首先按不同的qcount嵌套数据:


然后为每个嵌套元素创建图表。

d3
访问器函数中这样记录是很奇怪的。您没有记录最小值,而是将迭代记录为
d3
查找最小值。除此之外,您的代码按预期工作,除了(这是一个很大的例外),您需要从访问器返回感兴趣的值:

var countReference = "q2count";
var marketshare = [
    {"store": "store1", "share": "5.3%", "q1count": 2, "q2count": 4, "q3count": 0},
    {"store": "store2","share": "1.9%", "q1count": 5, "q2count": 10, "q3count": 0},
    {"store": "store3", "share": "2.5%", "q1count": 3, "q2count": 6, "q3count": 0}
];
var minDataPoint  = d3.min(marketshare, function(d,i) {
        console.log("min d["+countReference+"] " + d[countReference]); 
        console.log("min d.q2count " + d["q2count"]);
        return d[countReference]; //<-- return the value of interest which d3 will find the min of
});
console.log(minDataPoint);
例如

min d[q2count] 4
min d.q2count 4
min d[q2count] 10
min d.q2count 10
min d[q2count] 6
min d.q2count 6
4