Datengrenzen für Zoom im Matplotlib -Python -Programm (lang) zurücksetzen (lang)Python

Python-Programme
Anonymous
 Datengrenzen für Zoom im Matplotlib -Python -Programm (lang) zurücksetzen (lang)

Post by Anonymous »

Ich habe ein Programm erstellt, um sehr hohe Beispielrate -Daten im Profil anzuzeigen. Es gibt 6 Kanäle (MAG [0..2] & Diff [0..2]) bei 30 kHz. Ich zeige sie in 3 Profilen, MAG [0] mit Diff [0] usw. Alle Diagramme teilen sich die gleiche x -Achse (nptime), die numpy Timedate64 ist, mit unterschiedlichen Skalen für die MAG und Diff. Die Achsen 0 bis 2 repräsentieren die MAG -Profile und 3 bis 5 sind diff. Ich mache dies in einem Rückruf auf dem Ereignis xlim_changed für Axis 0.
IT Fast funktioniert. Ich rufe set_ylim im Rückruf mit dem Datenbereich für die Fensterdaten auf. Für die MAG -Kanäle werden die y -Grenzen für 2 der 3 Panels korrekt eingestellt, aber das Panel, das ich (je nachdem, was auch immer das ist), zeigt die Zoomausdehnung nicht die neuen Ausdehnung. Für die Diff -Kanäle habe ich Achsen 3 bis 5 auf Sharey eingerichtet, daher muss ich nur Achse 3 einstellen, aber das set_ylim wird ignoriert. Es wird immer mit dem y -Ausmaß aus dem Zoom angezeigt. Ich möchte eigentlich nicht, dass der Ylim sich überhaupt ändert, ich setze sie immer auf denselben Wert. < /P>
def reset_data(self, ax):
# the viewLim extents are decimal days, so some coordinate conversion is required
width = ax.viewLim.width*86400
start=np.datetime64(pd.to_datetime(self.nptime[0]).date()) +np.timedelta64(int(ax.viewLim.min[0]%1*8.64e10),'us')
idx0 = self.find_nearest(self.nptime, start)
end=np.datetime64(pd.to_datetime(self.nptime[0]).date()) +np.timedelta64(int(ax.viewLim.max[0]%1*8.64e10),'us')
idx1 = self.find_nearest(self.nptime[idx0:], end) + idx0

# the get_rate function returns 1 of 3 desample factors 1, 10 or 100
rate = self.get_rate(width)

xdata = self.nptime[idx0:idx1:rate]
for i in range(3):
ydata = self.mag[i, idx0:idx1:rate]
ymin = ydata.min()
ymax = ydata.max()
diff = (ymax - ymin)*.1

# self.lines is an array of the plots returned by self.ax[].plot()
self.lines[0].set_data(xdata,ydata)
self.ax.set_ylim(ymin-diff, ymax+diff)
for i in range(3):
ydata = self.diff[i, idx0:idx1:rate]
self.lines[i+3][0].set_data(xdata,ydata)
self.ax[3].set_ylim(self.min_diff, self.max_diff)
< /code>
vor dem Zoom:
< /p>
AFTER ZOOM:

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post