Вы используете устаревший код D3 версии 3.Вы можете проверить эту ссылку , чтобы увидеть, какие части d3 изменились в V4 и v5.
в вашем примере кода:
d3.scale.linear()
должно быть d3.scaleLinear()
d3.svg.line()
должно быть d3.line()
.interpolate("linear")
должно быть .curve(d3.curveBasis)
Кроме того, убедитесь, что ваш скрипт находится внутри элемента <body>
, а не в<head>
Вот исправленная и протестированная версия:
var lineData = [ { "x": 1, "y": 5}, { "x": 20, "y": 20},
{ "x": 40, "y": 10}, { "x": 60, "y": 40},
{ "x": 80, "y": 5}, { "x": 100, "y": 60}];
var xScale = d3.scaleLinear()
.domain([0, 300])
.range([0, 300]);
var yScale = d3.scaleLinear()
.domain([0, 300])
.range([0, 300]);
var lineFunction = d3.line()
.x(function(d) { return xScale(d.x); })
.y(function(d) { return yScale(d.y); })
.curve(d3.curveBasis);
var svgContainer = d3.select("body").append("svg")
.attr("width", 300)
.attr("height", 300);
var lineGraph = svgContainer.append("path")
.attr("d", lineFunction(lineData))
.attr("stroke", "blue")
.attr("stroke-width", 3)
.attr("fill", "none");