2017-12-13 2 views
1

Ich benutze PyQtGraph 0.10 mit Py3.6 und Probleme mit dem folgenden Code.
Ich habe zwei Fragen:PyQtGraph: Legende funktioniert nicht

1) die addLegend() auf jedem der fünf Parzellen nur eine leere kleine Box zeigen und

2) der showLabel(show=False) Befehl (Ich möchte nur ein Etikett auf der Unterseite Grundstück wird ignoriert). Hier

self.win = pg.GraphicsWindow() 
self.win.clear() 
for figIdx, devid in enumerate(self.norm_data.keys()): 
    plot = self.win.addPlot() 
    plot.plot(x=self.norm_time[devid],  y=self.norm_data[devid]  , name=devid   , pen=pg.mkPen('b', width=2), connect="finite") 
    plot.plot(x=self.pkt_starts[devid].time, y=self.pkt_starts[devid].data, name="Packet start", pen=None, symbol='x' ,symbolSize=8, symbolPen="c") 
    plot.plot(x=self.bad_gaps [devid].time, y=self.bad_gaps [devid].data, name="Seq gap"  , pen='r' , symbol=None, connect="finite") 
    plot.addLegend()     # Try to add legend 
    plot.setLabel('left', "Data") 
    plot.setRange(yRange=[0, 5]) 
    plot.setRange(xRange=[0, self.time_end]) 
    lr = pg.LinearRegionItem([5, 10]) # This is a mouse-draggable window on the plot 
    lr.setZValue(-10) 
    lr.sigRegionChanged.connect(updateRegion) 
    self.region_list.append(lr) 
    plot.addItem(lr) 
    plot.showLabel('bottom',show=False)   # Try to turn of bottom label 
    plot.getAxis('bottom').showLabel(show=False) # try again 
    self.win.nextRow() 

# callback for the linear region item on the plot 
def updateRegion(regionItem): 
    self.region_low, self.region_high = regionItem.getRegion() 

ist ein Bild von dem Grundstück:

enter image description here

Antwort

2

in Bezug auf Frage 1 sollte plot.addLegend() vor plot.plot(x,y,name) Befehle

in Bezug auf Ausgabe 2, hinzugefügt werden Sie räumen die unteren Etiketten für alle Grundstücke. Wenn Sie die untere Beschriftung für das letzte Grundstück zeigen wollen, tun Sie etwas wie folgt aus:

if (figIdx != len(self.norm_data.keys())): 
    plot.showLabel('bottom',show=False) # For all other plots remove the label 
else: 
    plot.showLabel('bottom',show=True) # fOR THE LAST PLOT show THE BOTTOM LABEL 

Ich hoffe, das ist das, was Sie suchen.

+0

Vielen Dank für die Hilfe. – Hephaestus

+0

In Bezug auf 1: Ja, Ihre Korrektur hat es behoben. Die addLegend() muss vor dem Plot-Befehl hinzugefügt werden. – Hephaestus

+0

Zu 2: Ich merke jetzt, dass "Label" nicht auf das "Axis Number Label" verweist, sondern auf den Label-Deskriptor. Wie entfernt man dann die Achsennummern? – Hephaestus

Verwandte Themen