【发布时间】:2016-04-17 00:24:58
【问题描述】:
很抱歉,但我花了大约 5 个小时来解决这个问题,但无法弄清楚发生了什么。我正在使用http://bl.ocks.org/mbostock 网站上的一些示例,并尝试将图例添加到堆叠条形图。
为此,我设置了一个比例和范围:
var z = d3.scale.ordinal()
.range(["#98abc5", "#8a89a6", "#7b6888", "#6b486b", "#a05d56", "#d0743c", "#ff8c00"]);
已加载数据我正在设置域:
z.domain(d3.keys(datasorted[0]).filter(function(key) { return key !== "xAxisD"; }));
如果我此时控制台日志...
console.log(z.domain().slice().reverse())
...我得到了我的期望,例如数据集中的键:
[“场景 1”、“场景 2”、“场景 3”]
然后我使用堆栈布局将数据修改为正确的格式:
var layers = d3.layout.stack()(element.map(function(c) {
return datasorted.map(function(d) {
return {x: d.xAxisD, y: d[c]};
});
}));
在此之后,我将一些组添加到已经创建的 SVG 中,其中的样式由作为“z”比例的一部分生成的颜色填充:
var layer = svg.selectAll(".layer")
.data(layers)
.enter()
.append("g")
.attr("class", "layer")
.style("fill", function(d, i) { return z(i) ; });
现在当我控制台登录时...
console.log(z.domain().slice().reverse())
...我的体重秤得到了额外的值:
[2, 1, 0, "场景 1", "场景 2", "场景 3"]
附加值的数量与数据集中的场景相同 - 例如它似乎使域增加了一倍。
我什至无法在 Google 搜索中说出这个问题,所以请向 StackOverflow 寻求帮助。
提前致谢。
编辑 - 添加数据排序的控制台日志:
[Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object]
0: Object
Strategy 1: 7967144.750000002
Strategy 2: 1925965.1996200003
Strategy 3: 198181.8768
xAxisD: "m01"
__proto__: Object
1: Object
2: Object
3: Object
etc
【问题讨论】:
标签: javascript d3.js dns scale