2016-04-16 4 views
2

ich die wunderbaren Bibliotheken, dc.js und crossfilter.js Lernen und mache ein Beispiel einer geochoropleth Karte.dc.js Reductio Helferfunktion, wie die Ausgabe erhalten in Objektformat

Ich möchte einige Daten füttern und haben die Karte, um die spezifischen Länder ziehen aber die Länder werden nicht angezeigt. Dies ist Teil eines viel größeren Beispiels und ich versuche nur den Teil vorzulegen, mit dem ich ein Problem habe. Ich postete eine jfiddle bei https://jsfiddle.net/wheatgrass/93w6p6dc/6/

(aber hatte ein Problem damit, die cdns zu arbeiten), wo Sie (hoffentlich) die Daten und meine Crossfilterausgaben sehen können. Alles wird zur console.log Ausgabe.

Anfangs hatte ich die Daten in einem verschachtelten Array, aber lesen Sie über cf benötigen "platt" Daten, also füge ich zwei Untergruppe Beispiele von abgeflachten Daten, countries1 und countries2. Ich möchte Länder2 verwenden.

Ich versuchte, den reductio Helfer Libs mit und (yay!) Bekam die n1dimgroup zur Ausgabe von Taste „nid“ und eine Reihe von Ländern mit Werten. Ich tat dies, indem ich das Beispiel in Readme.md auf reductio github Seite verwendete. Ich konnte in SO oder anderswo keine Beispiele für das finden, was ich versuche.

Ich brauche Hilfe mit diesem Teil. Wie schreibe ich den Reducer so um, dass die n1dimgroup-Ausgabe ein Objekt mit Schlüsselwerten ist, so?

{ key: Benin, value: 1} 
{ key: Nepal, value: 2} 
... 

usw.?

Ihre Hilfe und Hilfe würde sehr geschätzt werden. Vielen Dank. Ich habe den Code unten gekürzt, aber die Daten sind auf der Jfiddle.

Code unten

<script> 
//please see var countries2 on the jfiddle 

var countries = [ 
    "key":"Albania", 
    "value":2, 
    "key":"Jamaica", 
    "value":1, 
    "key":"Senegal", 
    "value":3, 
    "key":"Morocco", 
    "value":2, 
    "nid":"0", 
    }, 
    { 
     "key":"Fiji", 
     "value":1, 
     "key":"Mongolia", 
     "value":1, 
     "key":"Uganda", 
     "value":1, 
     "nid":"36", 
     } 
    var n1 = crossfilter(countries2); 
    var n1dim = n1.dimension(function(d) { return d.nid}); 
    var n1dimgroup = n1dim.group(); 
     console.log("n1dim",n1dim.top(Infinity)); 
     console.log("n1dimgroup",n1dimgroup.top(Infinity)); 

var reducer = reductio() 
    .exception(function(d) { return d.key; }) 
    .exceptionCount(true) 
    .exceptionSum(function(d) { return d.value; }); 
reducer(n1dimgroup); 

console.log('reducer', reducer); 
console.log('n1dimgrouptop after reductio', n1dimgroup.top(Infinity)); 
console.log('n1dimgrouptop.key', n1dimgroup.top(Infinity).key); 
console.log('n1dimgrouptop.value', n1dimgroup.top(Infinity).value); 
</script> 

Wie erhalte ich die Minderer die Ausgabe in Schlüssel, Wert Form in einem Objekt zur Verfügung stellen?

+0

Ich bin neugierig, warum Sie das tun müssen? Ich vermute, dass die Gruppe standardmäßig mit dc.js arbeitet, aber in diesem Fall würde ich nur vorschlagen, die keyAccessor- und valueAccessor-Optionen in dc.js-Gruppen zu betrachten, mit denen Sie Objekte in anderen Formaten als dem Schlüssel/Wert verwenden können Format. –

+0

BTW, die JSFiddle oben ist für mich gebrochen, weil die Abhängigkeiten nicht geladen werden und es gibt ein paar Tippfehler. Hier ist eine funktionierende Version: https://jsfiddle.net/mh0n7tx0/4/ –

+0

Danke für Ihre Antwort, Ethan. Ich frage, weil in der Geochoropleth, der json Feeds in d.properties.name, die im Objektformat in der Konsole kommt. Ich kann ihm erfolgreich Daten geben, um ein Land mit einem Schlüssel und einem Wert zu zeichnen, aber wenn ich es Daten aus der Gruppe schicke, die mehrere Schlüssel und Werte hat, zeichnet es keine von ihnen. Ich werde versuchen, ein besseres Beispiel für jsfiddle zu geben. Ich habe viele Kombinationen mit Schlüssel- und Accessor-Werten ausprobiert, war aber noch nicht erfolgreich. – user2517542

Antwort

1

Ethan Beispiel Geige zeigte mir, wie die Accessor-Funktionen nach mit Reductio Lib auf der Gruppe zu verwenden. Das hat meine Fragen beantwortet. Vielen Dank!

Verwandte Themen