对 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,
等等
主要问题是我的浮点字符(PC1 和 PC2)的格式是 1.0e-02 而不是 0.001,这意味着我不能简单地使用“+”运算符将我的数据转换为浮点数。相反,我必须使用 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 函数,但它仍然不会绘制我的值。
请帮忙!