Как получить доступ к словарной структуре в Protovis (Javascript) - PullRequest
2 голосов
/ 15 апреля 2011

Я пытаюсь визуализировать набор данных 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
     };
  });

Как я понимаю, часть набора данных теперь хранится в переменных данных, а именно в представлениях, пользователях и дате. Доступна ли эта переменная как словарь?

Что я пытаюсь сделать, это проверить, есть ли дата, когда один пользователь встречается более 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 Ответ

1 голос
/ 28 апреля 2011

Предоставленная вами функция создаст массив объектов 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 и т. д.

...