2017-10-16 2 views
1

Ich habe 3 Achsen mit einer oder mehreren Linien. Um die Auswahl der Zeile, in der sich mein Cursor befindet, zu erhalten, habe ich versucht, die Zorder der Axt, die die Zeile enthält, zu ändern.Matplotlib zorder axe verstecken andere Axtlinien

Präzision: Ich bin in einer FigureCanvasQTAgg abgeleiteten objet

def onmove(self, event): 
    """Methode appelée à chaque mouvement de souris dans le canvas.""" 
    for curr_axe in self.fig.get_axes(): 
     curr_axe.set_zorder(0) 
     if curr_axe.in_axes(event): 
      axe_x, axe_y = self.axe_dict[curr_axe.name].get_grid_coord(
       event.x, event.y) 

     for line in curr_axe.get_lines(): 
      contain, _ = line.contains(event) 
      if contain and line.get_label()[0] != '_': 
       curr_axe.set_zorder(0.1) 
       self.draw() 
       self.current_line = line.get_label() 

Die erste Axt wird einfach mit add_axes in der Figur add hinzugefügt erstellt die Matplotlib Achsen()-Klasse()

axe = Axes(figure, rect) 
figure.add_axes(axe) 

Die andere Achsen werden über twinx() erzeugt und mit add_axes() zu der Figur hinzugefügt

Die Methode onmove funktioniert (ich kann jede Zeile auswählen, die ich möchte), aber wenn die Zorder der ersten Zeichenachse wechselt, verberge die Linien der Achsen wie danach.

Beispiel: Wenn meine Maus über einer Linie der Axt namens ax ist, verstecken Sie die Linien von axe_2 und axe_3.

enter image description here

Antwort

0

ich das Problem bin zu raten, die Hintergrundfarbe Ihrer Top-Axt, die Masken, die zugrunde liegenden Achsen Linien.

versuchen Sie, die Hintergründe von allen Ihren Achsen zu entfernen und zu sehen, ob es das Problem löst.

axe.patch.set_visible(False) 
axe_2.patch.set_visible(False) 
axe_3.patch.set_visible(False) 
+0

Es ist absolut genau vielen Dank – reynum

Verwandte Themen