2013-06-12 3 views
6

Ich verwende derzeit das MultiChart-Modell und ich habe zwei verschiedene y-Achsen. Ich möchte gerne die beiden Achsen so ändern, dass sie bei 0 beginnen, da sie aktuell am kleinsten y-Datenpunkt beginnen.Änderungsbereich für eine y-Achse nvd3/d3

Ich habe versucht, die folgende

chart.yAxis1 
tickFormat(d3.format(',.f')) 
.domain([0,max_y]); 

aber das tut tun scheinen

und

.forceY ([0, max_y]) 

es mir sagt, zu arbeiten, dass es keine Funktion Forcey ist

Irgendwelche Ideen ?

+0

Haben Sie eine Lösung gefunden? Ich habe das gleiche Problem. Vielen Dank! – Acyra

Antwort

1

.domain([0, max_y]) sollte auf einem scale Objekt verwendet werden, nicht ein axis object.

So:

var yScale = d3.scale.linear().domain([0,max_y]) 
var yAxis = d3.svg.axis().scale(yScale) 

Dies sollte funktionieren; Wenn nicht, solltest du das, was du hast, als jsfiddle posten.

+0

Hey, mein Code verwendet Datenpunkte aus einer Datenbank, so dass ich nicht sicher bin, wie ich Ihnen meine Graphen zeigen könnte. Ich habe versucht, var yscale1 = d3.scale.linear(). Domain ([0,400000]); aber ich bekomme Uncaught TypeError: Kann die Methode 'linear' von undefined nicht aufrufen. Ich benutze nvd3, um meine Grafiken btw, nicht nur d3 zu machen. – Siva

+0

console.log (JSON.stringify (Daten)) -> Kopieren/Einfügen –

10

können Sie zwingen, Min- und Max-Werte in NVD3 für Linien- oder Balkendiagramm, versuchen Sie, wie unten:

chart.bars.forceY([0]); 

chart.lines.forceY([0,100]); 
+7

Dies funktioniert in der Zeile plus Balkendiagramm, aber scheint nicht auf dem Multi-Chart zu arbeiten. – robingrindrod

+0

Es gibt einen Tippfehler in dieser Antwort, sollte es lesen 'chart.lines.forceY ([0, 100]);'. Bearbeitet. Nützlich für mich. Danke! –