Разбор дат BC в d3 .v5 из файла csv - PullRequest
1 голос
/ 29 июня 2019

Я преобразовал таблицу из википедии, отображающую все войны в мировой истории, в CSV-файл, чтобы построить точечную диаграмму из этих данных.

Форматирование CSV:

War,Deathrange,Geometricmean(Note 1),Date,Combatants,Location,Notes
Conquests of Cyrus the Great,"100,000+","100,000",549 BC–530 BC,Persian Empire vs. various states,Middle East,"Number given is the sum of all deaths in battle recorded by writers during this time period, does not take into account civilian deaths, the actual number may be much greater."
Greco–Persian Wars,

Я хочу получить первую дату «Дата» - например, «549» - по оси X. Радиус точек должен соответствовать продолжительности войны.

Выпуск Я не знаю, как разобрать даты "BC" в d.3

Пока я сделал: Мой подход заключается в том, чтобы найти числа в строке с помощью регулярного выражения.

let dataset = await d3.csv("../wars.csv");
let dateNumber = dataset[0].Date.match(/\d+/g);

Чтобы проверить, содержит ли дата «BC» и преобразовать ее в «минус», я сделал:

 if (dataset[0].Date.includes("BC")) {
        const warStart = "-" + dateNumber[0];
        const warEnd = "-" + dateNumber[1];
        console.log(warStart + " and ends " + warEnd)

    }

Понятия не имею, как применять этот подход ко всем датам - и не только [0] .

Я пытался

 const dates = d => d.Date.match(/\d+/g);
    console.log(dates);

И консоль ведет лог:

function dates()

Но нет дат, даже при индексации, например, "даты [1]"

Так как же я могу проанализировать даты, содержащие "BC", в формате CSV в формате, который позволяет функциям времени d3 отображать их на оси x?

Поскольку я очень новичок в JS и d3, я ценю полезные ресурсы.

Лучший и спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...