如何使用三种不同的数据维度计算我的域的范围?请考虑以下数据:
var data = [
{
"Date":"10-10-2013",
"High1" : 3049,
"High2" : 2100,
"high3" : 43
},
{
"Date":"09-10-2013",
"High1" : 3142,
"High2" : 2010,
"high3" : 23
},
{
"Date":"08-10-2013",
"High1" : 3099,
"High2" : 2190,
"high3" : 90
}
我想为High1绘制一条线,为High3绘制另一条线,为High3绘制另一条线,因此需要找到所有组合的范围,以便为图形创建y轴。
答案 0 :(得分:5)
var extents = ["High1", "High2", "high3"].map(function(dimensionName) {
return d3.extent(data, function(d) { return d[dimensionName] });
});
var extent = [d3.min(extents, function(d) { return d[0] }),
d3.max(extents, function(d) { return d[1] })];
首先单独计算每个维度的范围,然后选择全局最小值和最大值。
答案 1 :(得分:1)
诀窍是使用d3.max和d3.min的访问器。
d3.max(data, function(d){
return Math.max.apply(Math, [d.High1, d.High2, d.high3]);
})
d3.min(data, function(d){
return Math.min.apply(Math, [d.High1, d.High2, d.high3]);
})
如果您不理解申请的使用,请参阅此处JavaScript: min & max Array values?。
答案 2 :(得分:0)
在@ValarDohaeris回答的基础上,为了使它更具通用性并允许使用不同数量的系列:
definesPresentationContext = true
其中'系列'是包含数据中系列名称的数组。我在角度指令中使用它,允许我将任意数量的系列输入到折线图中