2016-01-06 4 views
1

Heres my problem. У меня есть работающая панель управления dc.js и некоторые данные внутри нее. Столбец данных содержит текстовые данные (twitter info). Как-то возможно извлечь этот конкретный столбец из crossfilter? Моя цель состоит в том, чтобы создать несколько диаграмм, а перекрестный фильтр, содержащий текстовые данные, должен подаваться в облако слов на основе d3, чтобы я мог также выполнить фильтрацию на основе детализации, которая также обеспечивает постоянный и поперечный фильтры. Я попробовал size.top (бесконечность), но возвращает все пары значений ключа в данных. Мне просто нужны значения для определенного ключа во всем наборе данных. Надеюсь, мой вопрос имеет смысл.Извлечь колонку из перекрестного фильтра

EDIT: Более исследования показывают, что Wordcloud будет принимать данные в ключевой пары значений, где ключевым является слово и значение его частота появления. Поэтому я предполагаю, что это тоже нужно будет реализовать. Если есть готовность реализовать библиотеку, пожалуйста, сообщите мне об этом. Это немного меняет ситуацию по сравнению с перекрестным фильтром. Мне нужно выбросить эту рассчитанную пару значений ключа (подходящую для потребления облачного слова) всякий раз, когда срабатывает фильтр. Как это сделать?

Ждем ваших слушаний.

Беста, Anmol

ответ

1

Ответ на первую часть вопроса: Возможно dimension.top (бесконечность), а затем использовать аксессор, чтобы получить необходимые значения. Не совсем эффективно, но это то, что есть.

Ответ на 2-й части вопроса:

Вам нужно groupAll, я думаю. Вы хотите взять твит, сгенерировать массив токенов (слов), а затем сгенерировать группу Crossfilter, которая является подсчетом на каждое слово, правильно? Вы можете закодировать свой собственный crossfilter.dimension.groupAll редукторы (если вы хотите это сделать, создайте рабочий пример, и я, вероятно, смогу его приготовить). Или, если вы хотите использовать Reductio:

tweetWords = data.dimension(function(d) { return d.tweetText.split(' '); }); 
wordCounts = tweetWords.groupAll(); 

reducer = reductio() 
    .groupAll(function(d) { 
    return d.tweetText.split(' '); 
    }) 
    .count(true); 

reducer(wordCounts); 

wordCounts.all(); 

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