2016-05-27 18 views
2

Ich habe Streudiagramm geplottet, aber ich möchte nur die Tick-Etiketten ersetzen. Es sollte nicht erneut aufzeichnen. Ich habe ein erzwungenes Streudiagramm verwendet, das eine Ganzzahl für die X- und Y-Achse benötigt, nach dem Plotten möchte ich die Y-Achsen-Markierung ersetzen. Hier ist die PlunkerÄndern Sie nur Tick Etiketten

https://plnkr.co/edit/ufnBOwQEoTOrP1mUTKhC?p=preview

ich nur die Namen von d.sepalLength d.name ersetzen möchten. Alert zeigt korrekten Wert, aber sie werden nicht korrekt auf der y-Achse angehängt. Der folgende Code wurde hinzugefügt, um die Hilfsstrichsbeschriftungen zu ersetzen. Bitte helfen

var yAxis = d3.svg.axis() 
    .scale(y) 
    .orient("left") 
    .tickFormat(d3.extent(data, function(d) { alert(d.name);return d.name; })); 

Antwort

3

Der Brute-Force-Weg, wenn der Wert zu suchen, die in Ihrem Array in der Zecke gerendert werden existieren, wenn ja dann mit den für ein robustere

var data =[ 
    {sepalLength: "0", sepalWidth: 3.5, name: "AT"}, 
    {sepalLength: "0", sepalWidth: 3.5, name: "AT"}, 
    {sepalLength: "0", sepalWidth: 3.5, name: "AT"}, 
    {sepalLength: "0", sepalWidth: 3.5, name: "AT"}, 
    {sepalLength: "1", sepalWidth: 3.0, name: "AS"}, 
    {sepalLength: "2", sepalWidth: 2.5, name: "AM"}, 
    {sepalLength: "3", sepalWidth: 2.0, name: "CS"}, 
    {sepalLength: "4", sepalWidth: 1.5, name: "CT"}, 
    {sepalLength: "5", sepalWidth: 1.0, name: "CX"} 
] 

var yAxis = d3.svg.axis() 
    .scale(y) 
    .orient("left") 
    .tickFormat(function(d, i) { 
     var inData = data.filter(function (v) { return +v.sepalLength === d }) 
     return inData.length ? inData[0].name : d 
    }); 

Namen ersetzen Lösung sollten Sie feste Werte für die Zecken mit scale.tickValues gesetzt basierend auf sepalLength

demo

+0

Es funktionierte. Vielen Dank. – user123

+0

Ich habe eine Frage hier (http://Stackoverflow.com/q/41385010/1735836) Sie können mir vielleicht helfen. – Patricia

Verwandte Themen