Mam zestaw danych, w którym niektóre wartości pól są tablicami i chciałbym użyć filtru krzyżowego i d3.js lub dc.js do wyświetlenia histogramu, ile razy każda z tych wartości była obecna w zbiorze danych.Czy istnieje sposób na określenie filtru krzyżowego do traktowania elementów tablicy jako oddzielnych rekordów zamiast traktowania całej tablicy jako pojedynczego klucza?
Oto przykład:
var data = [
{"key":"KEY-1","tags":["tag1", "tag2"]},
{"key":"KEY-2","tags":["tag2"]},
{"key":"KEY-3","tags":["tag3", "tag1"]}];
var cf = crossfilter(data);
var tags = cf.dimension(function(d){ return d.tags;});
var tagsGroup = tags.group();
dc.rowChart("#chart")
.renderLabel(true)
.dimension(tags)
.group(tagsGroup)
.xAxis().ticks(3);
dc.renderAll();
I JSFiddle http://jsfiddle.net/uhXf5/2/
Kiedy uruchomić ten kod produkuje wykres tak:
Ale co chcę jest coś takiego :
Aby wszystko było jeszcze bardziej skomplikowane, byłoby wspaniale móc kliknąć jeden z wierszy i filtrować zestaw danych według klikniętego znacznika.
Ktoś ma pomysły, jak to osiągnąć?
Dzięki Kostyi
Podane przez ciebie jsfiddle jest dość niechlujne iz mnóstwem miniszowionych javascript. Ale dzięki, to na pewno będzie potrzebne. – skmasq
Musiałem włączyć najnowsze wersje crossfilera i dc.js do skrzypiec, żeby to działało. Może istnieje lepszy sposób dodania tych zewnętrznych zasobów. Po raz pierwszy użyłem JS Fiddle –
Fantastyczna odpowiedź! uratowałeś mnie! – dvreed77