2013-03-01 17 views
12

Sto provando a creare un grafico basato su http://mbostock.github.com/d3/talk/20111116/bar-hierarchy.html, l'unica differenza è che mi piacerebbe utilizzare una scala di registro per l'asse x.Utilizzare la scala di registro d3 anziché la scala lineare

Ecco il mio violino: http://jsfiddle.net/JhDVC/5/

Come si può vedere, l'asse x è definito in linea 4:

x = d3.scale.linear().range([0, w]), 

Se cambio per

x = d3.scale.log().range([0, w]), 

Poi doesn funziona (niente è reso), lanciando questi messaggi di errore:

Error: Invalid value for <rect> attribute width="NaN" 

Cambiare l'impostazione dominio da

x.domain([0, root.value]).nice(); 

a

x.domain([1, root.value]).nice(); 

mi mostra l'asse Z (nomi), ma ancora nessun bar o valori.

risposta

8

Ci sono alcuni altri posti in cui è impostato il dominio per la scala. È necessario aggiornare anche quelli.

Jsfiddle di lavoro here.

Ed ecco un po 'di codice in modo che mi permette di postare questo:

x.domain([1, root.value]).nice(); 
+2

[Verificato qui] (http://jsfiddle.net/amullins/grQmf/1/). –

+0

#facepalm. Grazie! :) – luisfarzati

1

tua gamma comprende lo zero - log (0) non è definito.