1

d3とjavascriptは初めてですが、この問題を解決するために4時間ほど費やしましたが、まだ解決策が見つかりません.

使用したい .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,

主な問題は、float 文字 (PC1 と PC2) が 0.001 ではなく 1.0e-02 の形式になっていることです。つまり、単純に "+" 演算子を使用してデータを float に変換することはできません。代わりに、parseFloat 関数を使用する必要がありますが、残念ながら使用方法がわかりません。

Importing CSV without headers into D3 - data with numbers and stringsによって提供されるソリューションに構造を変更すると、

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 関数を統合しようとしましたが、それでも値がプロットされません。

助けてください!

4

0 に答える 0