Это связано с тем фактом, что я новичок в D3, и это, вероятно, простая ошибка, которую я упускаю - я знаю, что так и должно быть.Что-то с тем, как я пытаюсь получить доступ к данным.
Пытаюсь немного разобраться с этим парнем.(возможно, я смотрел на это слишком долго)
Я играл с ним до тех пор, пока моя строка наконец не появилась вообще, но теперь она не отображает полную строку, только два очка -это цифры, в которых я не уверен.
Заранее спасибо!
РЕДАКТИРОВАТЬ: цель состоит в том, чтобы использовать lineData [0] для построения одной линии вдоль оси x lineData 1 (месяцы).В конце концов, lineData 2 будет использоваться для второй строки, но просто пытается заставить первую строку работать в данный момент.
EDIT: можно найти обновленный код (согласно предложениям Шашанка)здесь: https://codepen.io/anon/pen/RevxYG?editors=0010
Мой обновленный график выглядит лучше, но все еще видит значения NaN:
Вот мой код:
let lineData = [
[4, 2, 0, 3, 3, 4, 52, 3, 0, 3, 3, 1],
[0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0],
["Oct", "Nov", "Dec", "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep"]
]
console.log("lineData", lineData)
// set dimensions of the line chart
let width = 393,
height = 285;
// set the scales
let yScale = d3.scaleLinear()
.domain([0, 52])
.range([height - 40 , 0]);
let xScale = d3.scaleOrdinal()
.range([0, width - 40]);
// create the line
let line = d3.line()
.x(function(d, i) { return xScale(i); })
.y(function(d) { return yScale(d[0]); });
// create svg container
let lineChart = d3.select(element)
.append("svg")
.attr("viewbox", "0 60 960 600")
.attr("preserveAspectRatio", "xMinYMin meet")
.attr("width", width)
.attr("height", height)
.attr("class", "line-chart")
lineChart.append("path")
.datum(lineData)
.attr("d", line)
.attr("fill", "none")
.attr("stroke", "rebeccapurple")
.attr("stroke-width", 2)
lineChart.selectAll("dot")
.data(lineData)
.attr("d", line)
.enter()
.append("circle")
.attr("r", 3.5)
.attr("cx", function(d, i) { return xScale(i)})
.attr("cy", function(d) { return yScale(d[0])})
.attr("fill", "rebeccapurple")
lineChart.append("g")
.attr("transform", "translate(20, 245)")
.call(d3.axisBottom(xScale))
lineChart.append("g")
.attr("transform", "translate(20, 0)")
.call(d3.axisLeft(yScale))
Данные передаются через функцию.
данные:
и мой график выглядит так:
и мои генерируемые пути / точки выглядят так: