Closed. This question needs details or clarity。它当前不接受答案。
想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
5年前关闭。
我有一个CSV文件,其中包含100行(视情况而定)和1100列(视情况而定)
(每种情况下有1100个功能)。
我想使用20列(例如55-74)并将其可视化,而不是1100列。如何选择这些数据(100 x 20)并将其用于代码中?
问题是,在不事先知道这些键的名称的情况下,它们可能对您没有太大用处。另外,在这些神秘的20列中存储了什么样的值?它们都是同一类型吗?
从技术上讲,您仍然可以使用这些值,例如:
这将创建包含每行第7列中的值的div ...不完全一样,因为对象键/值对未按定义的顺序存储或检索。
您可能需要重新考虑数据的结构。如果列的索引比名称更相关,则它们可能应该是您的行。
更新
如果您知道您感兴趣的列的标签,那么这将成为一个简单得多的问题。然后,您可以使用访问器功能输出所选数据,如下所示:
这次,访问器函数返回给您具有属性
想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
5年前关闭。
我有一个CSV文件,其中包含100行(视情况而定)和1100列(视情况而定)
(每种情况下有1100个功能)。
我想使用20列(例如55-74)并将其可视化,而不是1100列。如何选择这些数据(100 x 20)并将其用于代码中?
最佳答案
从理论上讲,这可以做到...
您可以使用访问器函数创建仅包含指定范围的20列的输出数据:
d3.csv('path/to/your/file.csv')
// this is run once for each row of your data
.row(function accessor(d) {
// make an array of all the keys (1100 of them)
var keys = d3.map(d).keys();
// create an empty object
var outputDatum = {};
// fill it with the key/value pairs from indexes 55 - 74
for (var i = 55; i < 75; i++) {
outputDatum[keys[i]] = d[keys[i]];
}
// return the object you built
return outputDatum;
})
// this is the callback that runs when the data is ready
.get(function callback(error, data) {
// use the data to make something
});
问题是,在不事先知道这些键的名称的情况下,它们可能对您没有太大用处。另外,在这些神秘的20列中存储了什么样的值?它们都是同一类型吗?
从技术上讲,您仍然可以使用这些值,例如:
function callback(error, data) {
d3.selectAll('div')
.data(data)
.enter().append('div')
.text(function(d) { return d3.values(d)[6]; }
}
这将创建包含每行第7列中的值的div ...不完全一样,因为对象键/值对未按定义的顺序存储或检索。
您可能需要重新考虑数据的结构。如果列的索引比名称更相关,则它们可能应该是您的行。
更新
如果您知道您感兴趣的列的标签,那么这将成为一个简单得多的问题。然后,您可以使用访问器功能输出所选数据,如下所示:
d3.csv('path/to/your/file.csv')
.row(function(d) {
return {
x: d.featureX,
y: d.featureY,
z: d.featureZ
};
})
.get(function(e, data) {
d3.selectAll('div')
.data(data)
.enter().append('div')
.text(function(d) { return d.x; });
});
这次,访问器函数返回给您具有属性
x
,y
和z
的数据,这些属性表示被调用的原始数据(在本示例中为featureX
,featureY
和featureZ
)。然后,本示例将为每行的featureX创建一个div。关于javascript - 从CSV文件中选择一些列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24500827/
10-11 13:21