2014-07-02 5 views
8

Wo finde ich die Liste der Symbole zur Verfügung gestellt von d3.js uns finden, die durch diese Zeile Code bezeichnet wird:Liste der d3 Symbole zur Verfügung zu uns

d3.svg.symbol().type(/*Name of the symbol type that is available to us to use*/'triangle') 

Einige der verfügbaren Symbole Dreieck umfassen, Diamant. Gibt es irgendwo Dokumentation, wo die gesamte Liste dokumentiert ist?

Antwort

16

Die unterstützten Typen sind in der D3-Dokumentation aufgeführt: https://github.com/mbostock/d3/wiki/SVG-Shapes#symbol_type. Zu zitieren:

  • Kreis - ein circle.
  • Kreuz - ein Greek cross oder Pluszeichen.
  • Diamant - ein rhombus.
  • Quadrat - eine Achse ausgerichtet square.
  • Dreieck nach unten - ein nach unten zeigender equilateral triangle.
  • Dreieck-up - ein nach oben zeigendes gleichseitiges Dreieck.

D3 hat auch ein Objekt, das die verfügbaren Symbole speichert (nochmals vielen Dank, @jshanley). Z.B. für D3 3.4.6:

>>> d3.svg.symbolTypes 
["circle", "cross", "diamond", "square", "triangle-down", "triangle-up"] 
+0

Sie können auch [ 'd3 .svg.symbolTypes'] (https://github.com/mbstock/d3/wiki/SVG-Shapes#symbolTypes), um ein Array der in Ihrer Version von d3 unterstützten Typen zurückzugeben. – jshanley

+0

@jshanley: danke nochmal, das habe ich auch gemerkt :) – mdml

+0

Cool, danke :) Ich habe mich gefragt, ob es mehr Symboltypen gibt oder nur diese 6? :( – Ishita

4

Für Version 4 gibt es sieben verschiedene Formen, in Bezug auf die sechs in der Version 3 (in der anderen Antwort verwiesen) gegenüber.

Die Formen sind in dem Array d3.symbols enthalten sind, die enthält:

  • d3.symbolCircle
  • d3.symbolCross
  • d3.symbolDiamond
  • d3.symbolSquare
  • d3.symbolStar (neu in Version 4)
  • d3.symbolTriangle (es ist nur ein Dreieck in 4 V, im Vergleich zu 2 in v3)
  • d3.symbolWye (a 'y' förmiges Symbol, neu in Version 4)

Die d3 Dokumentation wie üblich Abdeckungen the topic well here.

die Symbole anzuzeigen, und zu zeigen, wie das Array kann Formen verwendet werden, dynamisch zu setzen, habe ich einen Ausschnitt unten angehängt:

var data = [0,1,2,3,4,5,6]; 
 
var svg = d3.select('body').append('svg').attr('width',400).attr('height',200); 
 

 
svg.selectAll('.symbol') 
 
    .data(data) 
 
    .enter() 
 
    .append('path') 
 
    .attr('transform',function(d,i) { return 'translate('+(i*20+20)+','+30+')';}) 
 
    .attr('d', d3.symbol().type(function(d,i) { return d3.symbols[i];}));
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/4.5.0/d3.js"></script>

+0

Können Sie erklären, wie funktioniert das 2 Zeilen? '.attr ('transform', Funktion (d, i) {Rückkehr 'translate (' + (i * 20 + 20) + ',' + 30+ ')';}) .attr ('d', d3.symbol(). Type (funktion (d, i) {return d3.symbols [i];})); ' – Ishan

+0

Wenn Sie' function (d In einer solchen Auswahl greifen Sie auf das Datum und die Inkremente zu, die mit jedem Element in der Auswahl verbunden sind, also in der ersten Zeile das Symbol 30 Pixel nach unten und i * 20 + 20 Pixel von links. Die zweite Zeile gibt einen d3-Symboltyp zurück, da 'd3.symbols' ein Array ist, können wir das Inkrement verwenden, um ein bestimmtes Symbol auszuwählen –

+0

Eigentlich versuche ich nur ein Symbol zu erstellen Ist das der richtige Weg? 'var svg = d3.select ('svg') .attr ('Breite', 400) .attr ('Höhe', 200); svg.append ('Pfad') .attr ('transform', 'translate (50,80)') .attr ('d', d3.symbol(). Type (Funktion (d) {return d3.symbols [2];})) ' und auch ich versuche, Drag & Drop auf Symbol zu erstellen, können Sie mir bei der Annäherung helfen? – Ishan