#javascript #protovis
#javascript #protovis
Вопрос:
Я пытаюсь визуализировать набор данных flickr с помощью protovis. Я понимаю часть визуализации, но, тем не менее, у меня есть вопрос о доступе к данным. Мне был предоставлен пример визуализации, и он обращается к данным следующим образом:
var data = pv.range(250).map(function(row) {
return {
views: parseInt(Data.data(row, 2)), //refers to the 4 row and 2nd collumn in CSV
users: Data.data(row, 6),
date: Data.data(row, 8))), //more collumns excist but for now we only use these
};
});
Насколько я понимаю, часть набора данных теперь хранится в переменных data, а именно views, users и date. Можно ли использовать эту переменную как словарь?
Что я пытаюсь сделать, так это проверить, есть ли даты, в которые один пользователь встречается более 2 раз. Я думал о циклическом просмотре данных var следующим образом:
dateUserDict {};
for (d=0; d < data.date.length; d ){
for (i=0; i < data.users.length; i ){
for (j=0; j < data.users.length; j ){
if (data.users[i] == data.users[j]){
userCounter //this should count the number of occurences of a specific user on a specific date
dateUserDict[data.date] = [data.user][userCounter]}
}
}
}
Похоже, это не работает. Я пытаюсь сохранить события (количество раз, когда пользователь встречается с определенной датой) в словаре. Если я получу словарь, как описано, я смогу легко визуализировать все это. Но именно это преобразование из первого dict (data) во второй (dateUserDict) меня беспокоит!
Любая помощь или толчок высоко ценятся!
Спасибо
джоррит
Ответ №1:
Предоставленная вами функция создаст массив объектов Javascript.
var data = pv.range(250).map(function(row) {
return {
views: parseInt(Data.data(row, 2)), //refers to the 4 row and 2nd collumn in CSV
users: Data.data(row, 6),
date: Data.data(row, 8))), //more collumns excist but for now we only use these
};
});
Результат будет выглядеть примерно так:
var data = [ {views:10, users: 9, date: '09/13/1975'}, ... ]
Итак, вместо использования data.users.length используйте data.length , а вместо data.users[i] вы должны использовать data[i].users и т.д.
Комментарии:
1. извините за запоздалую реакцию, но вы правы. 2d-объекты всегда меня смущают 😉