我有一组生成的值来绘制线函数。但是,当我调用数组时,该函数只返回数组的单个值,而不是列,因此绘制一条直线(http://tributary.io/inlet/8822590)。这里的语法是什么?提前谢谢。
// Create data
var v1 = 4.137,
t = 10,
x = [],
y = [];
for (i = 0.1; i < 190; i += 0.1) {
x.push(i);
y.push((Math.pow((v1 / i), 1 / t) - 1) * 100);
}
var data = [x, y];
// Scale data
var xscale = d3.scale.linear()
.domain(d3.extent(data, function (d) {
return d[0];
}))
var yscale = d3.scale.linear()
.domain(d3.extent(data, function (d) {
return d[1];
}))
var line = d3.svg.line()
.x(function (d) {
return xscale(d[0])
})
.y(function (d) {
return yscale(d[1])
});
var svg = d3.select("svg");
var path = svg.append("path")
.data([data])
.attr("d", line) //this calls the line function with this element's data
.style("fill", "none")
.style("stroke", "#000000")
.attr("transform", "translate(" + [96, 94] + ")")
答案 0 :(得分:1)
D3期望一行的数据是一个数组数组,其中每个元素确定一行,内部数组中的每个元素都是行的点。你已经传入了一个包含两个元素的数组(一行),所以你得到两个点。
要绘制所有点,请将坐标作为单独的元素推送:
for (i = 0.1; i < 190; i += 0.1) {
data.push([i, (Math.pow((v1/i),1/t)-1)*102]);
}
其余代码基本保持不变。完整示例here。