【发布时间】:2016-02-23 09:54:30
【问题描述】:
当我得到错误颜色未定义时,尝试使用 D3.js 绘制折线图。但是,当我在教程中查找它时,它没有在任何地方定义。是否应该以其他方式定义颜色?我所做的基本上是读取数据文件并为我的图表设置必要的组件。我是 D3 的初学者,我不确定我的编码风格是否正确。
d3.csv("test.csv", function (error, data) {
console.log("inital data", data);
var labelvar = "OutDistance";
var varNames = d3.keys(data[0]).filter(function (key) { return key !== labelvar });
color.domain(varNames);
var seriesData = varNames.map(function (name) {
return {
name: name,
values: data.map(function (d) {
return { name: name, label: d[labelvar], value: +d[name] };
})
};
});
console.log("seriesData", seriesData);
x.domain(data.map(function (d) {
return d.OutDistance;
}));
y.domain([
d3.min(seriesData, function (c) {
return d3.min(c.values, function (d) { return d.value; });
}),
d3.max(seriesData, function (c) {
return d3.max(c.values, function (d) { return d.value; })
})
]);
var series = d3.selectALL(".series").data(seriesData)
.enter().append("g")
.attr("class" , "series");
series.append("path")
.attr("class","line")
.attr("d" , function(d) {return line(d.values);})
.style("stroke" , function(d){return color(d.name);})
.style("stroke-width", "4px")
.style("fill" , "none");
var line = d3.svg.line()
.interpolate("cardinal")
.x(function(d){return x(d.label) + x.rangeBand() / 2 ;})
.y(function(d) {return y(d.value);});
});
【问题讨论】:
-
在该特定示例中,
color定义为:var color = d3.scale.ordinal().range(["#001c9c","#101b4d","#475003","#9c8305","#d3c47c"]);您可以看到他使用的完整代码here。
标签: javascript d3.js