d3.js: как импортировать данные в формате csv с типами float и string

Очень плохо знаком с d3 и javascript, но потратил около четырех часов на решение этой проблемы и пока не нашел решения.

В моем наборе данных.csv, который я хотел бы использовать, есть как строковые, так и числа с плавающей запятой (см. Пример набора здесь: http://individual.utoronto.ca/lannajin/d3/pcadummyset.csv), и в настоящее время у меня возникают проблемы с импортом.

d3.csv("http://individual.utoronto.ca/lannajin/d3/pcadummyset.csv")
    .row(function (d) {
    return {
        metric: d.metric,
        Var: d.Var,
        param: d.param,
        PC1: +d.PC1, // convert "PC1" column to number
        PC2: +d.PC2, // convert "PC2" column to number
        Type: d.Type
    };
})
    .get(function (error, rows) {
    console.log(rows);
});

Где я пробовал варианты (для строк 7 и 8) как:

PC1: d.parseFloat("PC1"),
PC1: parseFloat(d.PC1),
PC1: d.parseFloat.PC1,

и т.п.

Основная проблема заключается в том, что мои символы с плавающей точкой (ПК1 и ПК2) имеют форму 1.0e-02, а не 0,001, что означает, что я не могу просто использовать оператор "+" для преобразования моих данных в число с плавающей точкой. Вместо этого я должен использовать функцию parseFloat, которую я, к сожалению, не знаю, как использовать.

Когда я изменяю структуру на решение, предлагаемое Импортированием CSV без заголовков в D3 - данные с числами и строками,

data = d3.csv.parseRows("http://individual.utoronto.ca/lannajin/d3/pcadummyset.csv").map(function(row) {
    return row.map(function(value, index) {
        if(index == 2) {
            return value;
        } else {
            return +value;
        }
    });
});

Понятно, что данные читаются, но не отображаются на графике, поскольку значения PC1 и PC2, вероятно, считываются в виде строк. Я попытался интегрировать функцию parseFloat, но она все равно не будет отображать мои значения.

Помогите, пожалуйста!

0 ответов

Другие вопросы по тегам