我试图创建一个函数,这样我就可以使用一组数据绘制三个不同的图表。
数据样本......
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"是一个字符串,指的是我想要使用的对象中的数据。例如,这可能是" q2count"如果我想访问json的那一部分。
我在将调用拼接在一起以获取该数据时遇到问题。以下是我尝试记录最小数据点的示例...
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的不同部分,但这并没有发生在我身上。
答案 0 :(得分:0)
我会先用不同的qCounts嵌套数据: http://matthewfieger.com/posts/me/2014/06/27/nesting_data_for_d3.html
而不是为每个嵌套元素创建图表。
答案 1 :(得分:0)
从d3
访问者函数中记录这种情况很奇怪。您没有记录最小值,您正在记录迭代,d3
找到最小值。除此之外,您的代码按预期工作 EXCEPT (并且除了它之外)您需要从访问者返回感兴趣的值:
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
示例here。