Hoi,
eine mögliche Lösung, die ich selber verwende, sieht so aus:
Ich habe einen Datensatz, der die "eigentlichen" Daten und transformierte Daten enthält. Je nachdem, was ich zeigen will, werden beide Plots oder nur je einer gezeigt.
Dazu:
1. Lasse Nutzer (auch Dich selbst) die Einstellung in einem Menü oder Dialogen vornehmen. Einstellungen können Eigenschaften des Frames sein (z. B. in Form eines settings-Dictionary).
2. Gib Deinem Hauptframe eine Plotting-Funktion:
Code: Alles auswählen
def plot_data(self):
raw_plot(self)
self.toolbar.update()
Das ist jetzt ein bißchen pseudocodeartig, soll aber nur verdeutlichen, dass Du zwei Dinge tun mußt: Den Plot updaten und die Toolbar (falls Du eine hast).
3. zur Funktion raw_plot (parent.settings['grid'] ist hier: Mit oder ohne Grid - True oder False):
http://paste.pocoo.org/show/121432/ (ungetestet aus einem alten Projekt von mir gekürzt) Das Alles wird natürlich in ein eigenes Modul ausgelagert, damit der GUI-Code nicht noch mehr als nötig aufgebläht ist. Die Funktionsunterstriche sind Geschmackssache.
Ob Du parent.fig.clear() aufrufen mußt, hängt ein bißchen vom Fall ab, ist aber meist zu empfehlen.
4. _call_to_plotting_function sieht dann so aus:
Code: Alles auswählen
_call_to_plotting_function(parent, upper, lower=None):
, d. h. Du kannst im Code kontrollieren, ob ein zweiter Subplot besetzt werden muß. Je nach Fall, können natürlich auch unterschiedliche Funktionen aufgerufen werden: Die eine akzeptiert einen Subplot, die andere potentiell zwei. Ich mache beides - kommt halt drauf an.
In der Funktion kannst Du einfach die Subplots ansprechen: z. B. upper.errorbar(...)
HTH
Christian
PS Ist vielleicht ein wenig umständlich oder umfangreich, hat aber großes Potential, wenn man viele Einstellungen und Funktionen zum Plotten übersichtlich verwalten will.