2015-08-28 3 views
1

у меня есть CSV-файл со следующей структурой, и я хочу, чтобы создать несколько линий диаграммы в d3:d3.nest с несколькими столбцами

date,value1,value2,value3 
1924-01-01,433.57,16.21,122.09 
1925-01-01,247.68,18.55,115.38 

Для этого мне нужно, чтобы получить следующую структуру:

date,category,n 
1924-01-01,value1,433.57 
1924-01-01,value2,16.21 
1924-01-01,value3,122.09 
1925-01-01,value1,247.68 
1925-01-01,value2,18.55 
1925-01-01,value3,115.38 

Я пробовал разные подходы, без успеха. Например:

d3.csv("data.csv",function(data) { 

var values = ['value1','value2','value3'] 

var nestedData=d3.nest() 
    .key(function(d) {return d.values;}) 
    .sortKeys(d3.ascending) 
    .entries(data) 

Что я делаю неправильно?

Заранее спасибо.

+0

[Этот пример] (http://bl.ocks.org/mbostock/3884955) выполняет именно то, что вы ищете. –

+0

Да ?! Я действительно смущен, моя проблема должна быть где-то в другом месте. Спасибо за ваш совет! Я продолжу поиск. – Flo

+0

В частности, вам не нужно использовать 'd3.nest()'. –

ответ

0

This example делает то же самое, что и вы ищете, без d3.nest(). Структура данных, происходит то же самое, как ваша (за исключением того, что это вкладка, а не через запятую):

date New York San Francisco Austin 
20111001 63.4 62.7 72.2 
20111002 58.0 59.9 67.7 
20111003 53.3 59.1 69.4 

Это код, который в примере, делает преобразование данных (комментарии добавлены для объяснения):

// get the names of all the different series (everything that's not called "date") 
color.domain(d3.keys(data[0]).filter(function(key) { return key !== "date"; })); 

// parse the dates 
data.forEach(function(d) { 
    d.date = parseDate(d.date); 
}); 

// restructure the data 
var cities = color.domain().map(function(name) { 
    // for each series, create an object with its name and its values 
    return { 
    name: name, 
    // extract the value for the series we're processing at the moment from the data 
    values: data.map(function(d) { 
     return {date: d.date, temperature: +d[name]}; 
    }) 
    }; 
}); 

Единственное, что вам нужно изменить, чтобы использовать этот код, это формат даты. Вы также можете изменить имена переменных, чтобы дать понять, с чем вы имеете дело.

+0

Большое вам спасибо! Со всеми вашими комментариями я действительно все понимаю, это очень воспитательно. Я ценю время, которое вы взяли на себя. – Flo

Смежные вопросы