2014-07-02 9 views
8

Dove posso trovare l'elenco dei simboli messi a nostra disposizione dal d3.js che viene indicato da questa linea di codice:Elenco dei simboli D3 a nostra disposizione

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

Alcuni dei simboli disponibili includono triangolo, diamante. C'è qualche documentazione disponibile ovunque l'intera lista sia documentata.

risposta

16

I tipi supportati sono elencati nella documentazione D3: https://github.com/mbostock/d3/wiki/SVG-Shapes#symbol_type. Per citare:

  • cerchio - un circle.
  • cross - a Greek cross o segno più.
  • diamond - a rhombus.
  • quadrato - allineato all'asse square.
  • triangolare verso il basso - uno verso il basso equilateral triangle.
  • triangolo in alto - un triangolo equilatero rivolto verso l'alto.

D3 ha anche un oggetto che memorizza i simboli disponibili (grazie ancora, @jshanley). Per esempio. per D3 3.4.6:

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

È inoltre possibile utilizzare [ 'd3 .svg.symbolTypes'] (https://github.com/mbostock/d3/wiki/SVG-Shapes#symbolTypes) per restituire un array dei tipi supportati nella tua versione di d3. – jshanley

+0

@jshanley: grazie ancora, ho notato anche questo :) – mdml

+0

Cool, grazie :) Mi chiedevo se ci sono più tipi di simboli disponibili o solo questi 6? :( – Ishita

4

Per la versione 4, vi sono sette forme, in contrapposizione alle sei nella versione 3 (riferimento nel altra risposta).

Le forme sono contenuti nella matrice d3.symbols che contiene:

  • d3.symbolCircle
  • d3.symbolCross
  • d3.symbolDiamond
  • d3.symbolSquare
  • d3.symbolStar (nuovo nella versione 4)
  • d3.symbolTriangle (c'è solo un triangolo v 4, rispetto al 2 in v3)
  • d3.symbolWye (simbolo a forma di 'y', di nuovo nella versione 4) documentazione

Il d3 come copertine usuali the topic well here.

Per mostrare i simboli, e di mostrare come l'array può essere utilizzato per impostare le forme in modo dinamico, ho attaccato un frammento di seguito:

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

Puoi spiegare, come funziona questa 2 linee? '.attr ('transform', funzione (d, i) {return 'translate (' + (i * 20 + 20) + ',' + 30+ ')';}) .attr ('d', d3.symbol(). Type (funzione (d, i) {return d3.symbols [i];})); ' – Ishan

+0

Quando vedi' function (d , i) 'in una selezione come questa, si accede al dato e all'incremento associato a ciascun elemento della selezione, quindi nella prima riga il simbolo è posizionato a 30 pixel in basso e i * 20 + 20 pixel a sinistra. La seconda riga restituisce un tipo di simbolo d3, dato che 'd3.symbols' è un array, possiamo usare l'incremento per selezionare un simbolo specifico –

+0

In realtà sto solo provando a creare un simbolo È questo il modo giusto di fare? 'var svg = d3.select ('svg'). Attr ('width', 400) .attr ('height', 200); svg.append ('path') .attr ('transform', 'translate (50,80)') .attr ('d', d3.symbol(). Type (funzione (d) {return d3.symbols [2];})) ' e inoltre, sto provando a creare il drag & drop sul simbolo, puoi aiutarmi con l'approccio? – Ishan