Ich muss folgende D3 Code in index.html:Wie passe ich eine Polynomkurve mit D3 an?
<!DOCTYPE html>
<svg width="960" height="500"></svg>
<script src="https://d3js.org/d3.v4.min.js"></script>
<script>
var svg = d3.select("svg"),
margin = {top: 60, right: 20, bottom: 40, left: 50},
width = +svg.attr("width") - margin.left - margin.right,
height = +svg.attr("height") - margin.top - margin.bottom,
g = svg.append("g").attr("transform", "translate(" + margin.left + "," + margin.top + ")");
var x = d3.scaleLinear()
.rangeRound([0, width]);
var y = d3.scaleLinear()
.rangeRound([height, 0]);
var line = d3.line()
.x(function(d) { return x(d.error); })
.y(function(d) { return y(d.close); });
d3.tsv("data.tsv", function(d) {
d.error = d.error;
d.close = +d.close;
return d;
}, function(error, data) {
if (error) throw error;
x.domain(d3.extent(data, function(d) { return d.error; }));
y.domain(d3.extent(data, function(d) { return d.close; }));
g.append("g")
.attr("transform", "translate(0," + height + ")")
.call(d3.axisBottom(x))
.select(".domain")
.remove();
g.append("g")
.call(d3.axisLeft(y))
.append("text")
.attr("fill", "#000")
.attr("transform", "rotate(-90)")
.attr("y", 6)
.attr("dy", "0.71em")
.attr("text-anchor", "end")
.text("Error (%)");
g.append("path")
.datum(data)
.attr("fill", "none")
.attr("stroke", "steelblue")
.attr("stroke-linejoin", "round")
.attr("stroke-linecap", "round")
.attr("stroke-width", 1.5)
.attr("d", line);
});
</script>
Die data.tsv sieht wie folgt aus:
error close
100 93.24
200 -85.35
300 53.89
400 -18.57
500 198.1
600 -8.4
700 98.623
800 9.89
900 118.56
1000 98.71
Ich möchte eine Kurve an die Datenpunkte passen. Im Moment verbindet dieser Code nur die Datenpunkte mit geraden Linien. Es sieht wie folgt aus:
Ich frage mich, wie kann ich stattdessen eine Polynomkennlinie passen.