2016-05-03 8 views
1

Ich habe Probleme beim Zugriff auf den letzten Wert (Zeile) meine CSV angezeigt wird es auf schweben in meinem Liniendiagramm letzten Wert anzuzeigen. Ich brauche den Wert, der als Text angezeigt wird, aber auch als Y-Koordinate verwendet werden kann, um mit dem Ende der Linie auszurichten. Das ist was ich habe. Der erste Teil funktioniert, aber nicht die zweite (zwischen ///):Wie in Liniendiagramm

function mouseover(d) { 
d3.select(d.corporation.line).classed("corporation--hover", true); 
d.corporation.line.parentNode.appendChild(d.corporation.line); 
focus.attr("transform", "translate(" + x(d.date) + "," + y(d.value) + ")"); 
focus.select(".corpname").text(d.corporation.name); 
focus.select(".ranking").text(d.value); 
///// 
focus.append("text") 
.datum(function(d) { return {name: d.corporation.name, value: d.corporation.value[d.corporation.values.length - 1]}; }) 
.attr("transform", function(d) { return "translate(" + x(d.value.date) + "," + y(d.value.values) + ")"; }) 
.text(function(d) { return d.value; }); 
///// 
} 

ich einige verschiedene Varianten ohne Erfolg versucht. Würde mich freuen, wenn jemand einen Höhepunkt erreichen könnte.

PLUNK ist hier: http://plnkr.co/edit/1Nf992jYjSGyKhLhaij5?p=preview

Dank!

+0

sieht aus wie Sie d Wert entgegenstehen. Die von Ihnen die Mouseover-Pass: Mouseover (d), und diejenige, die Sie an anderer Stelle, zum Beispiel, .datum (function (d) {... seine unklar, was Sie verwenden möchten, schätzen aber vielleicht ist dies Ihr Problem – thatOneGuy

+0

I bin ganz über den Weg verloren, das zu tun. ich habe versucht, von Grund auf neu zu starten, und die Dinge aufzuräumen, aber jetzt ab ich bin nur in der Lage, die Hover-Wert anzuzeigen, und ich kann nicht die letzte (jüngste) Wert I abholen Wenn jemand Zeit hat, würde ich gerne verstehen, wie es funktioniert. Hier ist ein sauberes Plunk: http://plnkr.co/edit/Qv47CGKKTQVmvxttj4Mc?p=preview danke ! –

+0

@CapivaraGraphics Durch aktuellen Korrekturwert können Sie uns wissen lassen, welcher Datensatz von csv. – SiddP

Antwort

0

Hier ist, wie Sie auf die Daten zugreifen zu Ihrem Leitungselement gebunden: this.__data__

Lassen Sie uns zunächst eine Variable erstellen Ihre Daten zugreifen, insbesondere die Anordnung von Werten:

var that = this.__data__.corporation.values; 

Dann können wir erhalten Sie das Datum und den Wert des Ende der Leitung:

var thatLength = that.length; 
var thatValue = that[thatLength - 1].value; 
var thatDate = that[thatLength - 1].date; 

und zeigen Sie den Text:

Hier
someLegend 
.attr("x", (x(yearFormat(thatDate))*-1)-90) 
.attr("y", y(thatValue)) 
.text(thatValue); 

ist die Plunker: http://plnkr.co/edit/4HquzuJ6FJeZvEVWuUS5?p=preview

PS: Ich habe diese Variable someLegend, weil ich nicht Zeit, um die translate Logik Ihrer focus zu verstehen hatte.

+0

Dank Gerardo wäre, es funktioniert gut. lassen Sie mich Ihre Antwort studieren! –

+0

Keine Sorge, @CapivaraGraphics. Das Wichtigste ist, dass Sie jetzt 'thatValue' für den Wert und' thatDate' für das Datum haben. Wenn Sie mit 'this .__ data__' spielen, können Sie alle Daten abrufen, die an das Element gebunden sind. Versuchen Sie 'console.log (this .__ data __);' und Sie werden sehen. –