2016-03-22 8 views
0

Ich habe this is a very helpful example gefunden, Tooltip in Liniendiagrammen zu erstellen. Ich folge dies, um jetzt an einem Liniendiagramm zu arbeiten. Der Unterschied besteht darin, dass der Tooltip in meinem Diagramm ein Feld/Hintergrund enthält, das den im Tooltip angezeigten Wert enthält. Daher füge ich append('rect') mit attr('fill', 'white') hinzu.Problem mit überlappenden Toolitp d3.js

mousePerLine.append('rect'). 
    attr('width', '38px'). 
    attr('height', '20px'). 
    attr('class', 'tooltipRect'). 
    style('fill', 'white'). 
    attr('transform', 'translate(5,-13)'); 

Um How to select multiple selectors with selectAll?

.select("text") 

    .attr("transform", function(d,i) { 
     return "translate (10,"+(3+ypos[i].off)+")"; 
    }) 

zu

.selectAll(".tooltipRect, text") 

    .attr("transform", function(d,i) { 
     return "translate (10,"+(3+ypos[i].off)+")"; 
    }) 

Here's a fiddle of the problem.

jedoch sowie rect, ich geändert Linie 292 nach einem Post hier Überlappung von Text zu vermeiden , sind die Tooltips immer noch überlappend. Kann jemand helfen herauszufinden, was die Ursache des Problems ist? Danke im Voraus!

Antwort

0

Die Überschneidungen wahrscheinlich wegen der Art, wie Sie sie auswählen.
Warum nicht die selectiona auf den Text schließen (halten Sie die Textauswahl wie oben), aber eine neue Auswahl für das rect machen:

d3.selectAll(".mouse-per-line") 
    .select("rect") 
    .attr("transform", function(d,i) { 
     return "translate (5,"+(ypos[i].off - 13)+")"; 
    }); 

Dies funktioniert für mich. Ich habe die Übersetzung basierend auf Ihrer ursprünglichen Einrichtung der Rect. Ich habe den Offset in Zeile 286 von 15 auf 20 angepasst - es sieht etwas besser aus.

+0

Danke! Aber der Text überlappt sich jetzt. Mein Problem ist, wie wähle ich rect und Text aus. – user6073145

+0

Es sollte nicht sein. Stellen Sie sicher, dass Sie die Textauswahl nicht entfernt haben (Zeilen 292 - 296). Schließe das und füge den Code hinzu, den ich als neue Auswahl für die Retrakte gepostet habe. Erhöhen Sie außerdem den Verschiebungsbetrag, den Sie in Zeile 286 verwenden, also 15, also 20 oder 25 gerade. – rby

+0

Fantastisch! Vielen Dank! Arbeitete Geige: https://jsfiddle.net/fk6gfwjr/4/ – user6073145