2016-04-12 4 views
3

Ich habe ein Highcharts Bubble Chart, in dem viele der Punkte dieselben oder sehr ähnliche Werte haben. Derzeit ist nur das Datenlabel des obersten Punkts sichtbar. Ich habe Funktionen, mit denen die Punkte markiert werden können (mit der select() Methode). Wenn ein Punkt ausgewählt ist, verschiebe ich ihn auch nach oben, indem ich point.graphic.toFront() verwende, aber ich möchte auch, dass die Datenbeschriftung des ausgewählten Punkts ebenfalls nach oben verschoben wird. Ich kann mir nicht vorstellen, wie das geht oder ob es möglich ist.Highcharts Bubble Chart - Wie man das Datenlabel eines einzelnen Punktes (dataLabel) nach vorne/oben verschiebt

Gibt es eine Möglichkeit, das Datenetikett eines einzelnen Punkts nach vorne/oben zu verschieben, damit er sichtbar ist?

Ich weiß, dass es eine Einstellung gibt, die Datenbeschriftungen überlappen lässt, aber das ist nicht unbedingt das, was ich tun möchte. Ich würde gerne die aktuelle Funktionalität beibehalten, wo nur die oberste Datenbeschriftung für überlappende Punkte angezeigt wird, aber ich möchte in der Lage sein, programmatisch zu steuern, welcher Punkt/Datenbeschriftung oben liegen. Ich habe versucht, den Z-Index des Datenlabels des Punktes anzupassen, aber das schien nichts zu tun.

+0

Könnten Sie ein anschauliches Beispiel veröffentlichen, wie jsFiddle? Es wird schneller sein, an existierendem Code zu arbeiten, als erneut zu schreiben. –

+0

@KacperMadej sehr einfaches Beispiel hier: http://jsfiddle.net/jlbriggs/3d3fuhbb/136/ (Ich versuchte etwas früher zu arbeiten, kam aber nicht weit) "A" ist vorne, "B" ist versteckt . Wie kann "B" Vorrang haben? – jlbriggs

+0

Entschuldigung, ich habe kein jsFiddle bereitgestellt. Ich hatte gehofft, dass es nicht notwendig sein würde, aber ich danke Ihnen vielmals dafür, dass Sie mir auf diesem einen @jlbriggs geholfen haben. – jbgarr

Antwort

2

Wenn Sie labelrank als Punkteigenschaft definieren, können Sie die Kontrolle über das Label hide/show steuern, wenn sich die Beschriftungen überlappen.

data: [{ 
     x: 1, y: 1, labelrank: 1, name: 'A' 
     },{ 
     x: 1, y: 1, labelrank: 2, name: 'B' 
     }] 
    }] 

Beispiel: http://jsfiddle.net/x5sfcekL/

+0

Das ist großartig! Wo ist die Information für 'Labelrank' in den Dokumenten? Ich habe nie davon gesprochen. Wie auch immer, vielen Dank für die Hilfe. Es hat mein Problem gelöst. – jbgarr

+1

Schön. Und nur eine Anmerkung - es scheint so, als könnten Sie die Zuweisung an jedem Punkt überspringen und nur dort aktualisieren, wo ein Konflikt besteht, den Sie überschreiben möchten, indem Sie den Punkt oben auf 1 setzen. – jlbriggs

+1

@jlbriggs Das ist eigentlich genau so was ich getan habe. Also für zukünftige Referenz hier ist der wichtige Teil der Update-Code, der für mich nützlich war: 'point.update ({labelrank: 1})' – jbgarr

Verwandte Themen