2017-02-15 3 views
0

Мне было трудно получить два столбца из файла CSV, с которым я планирую создать базовую гистограмму. Я планировал получить 2 массива (по одному для каждого столбца) в пределах одного массива, который я бы использовал как таковой для построения гистограммы. Как только вы начнете с D3, как вы можете сказать.D3 Загрузка в CSV-файл с использованием только определенных столбцов

В настоящее время при загрузке данных я получаю массив объектов, а затем беспорядок, чтобы получить два столбца пар ключ-значение. Я не уверен, что мое мышление правильно ...

Я вижу этот же вопрос:

d3 - load two specific columns from csv file

Но как бы я использовать выборы и ввести(), чтобы достичь своей цели?

+1

Почему вы не просто карта каждого свойства? –

+2

можете ли вы поделиться некоторым кодом того, что вы пробовали? Имейте в виду, что вы можете манипулировать структурой данных перед подачей на d3, если это упрощает обработку при рисовании визуализации – Nobita

ответ

3

Вы не можете загрузить только 2 столбца большего CSV, но вы можете загрузить все это и извлечь нужные столбцы.

Произнесите CSV, как это:

col1,col2,col3,col4 
aaa1,aaa2,aaa3,aaa4 
bbb1,bbb2,bbb3,bbb4 
ccc1,ccc2,ccc3,ccc4 

И вы загрузите его с

csv('my.csv', function(err, data) { 
    console.log(data) 
    /* 
    output: 
    [ 
     { col1:'aaa1', col2:'aaa2', col3:'aaa3', col4:'aaa4' }, 
     { col1:'bbb1', col2:'bbb2', col3:'bbb3', col4:'bbb4' }, 
     { col1:'ccc1', col2:'ccc2', col3:'ccc3', col4:'ccc4' } 
    ] 
    */ 
}) 

Если вы хотите только col2 и col3 (и вы не хотите, чтобы просто оставить другие столбцы «данные там, которые не должны быть проблемой в любом случае), вы можете сделать это:

var cols2and3 = data.map(function(d) { 
    return { 
    col2: d.col2 
    col3: d.col3 
    } 
}); 

console.log(cols2and3) 
/* 
    output: 
    [ 
    { col2:'aaa2', col3:'aaa3' }, 
    { col2:'bbb2', col3:'bbb3' }, 
    { col2:'ccc2', col3:'ccc3' } 
    ] 
*/ 

. I. приведенный выше код создавал новый массив объектов с двумя реквизитами для каждого объекта.

Если вы хотите просто массив значений в столбце - не объекты со значениями обеих колонок - вы можете:

var col2data = data.map(function(d) { return d.col2 } 
var col3data = data.map(function(d) { return d.col3 } 

console.log(col2) // outputs: ['aaa2', 'bbb2', 'ccc2'] 
Смежные вопросы