Hallo, ich hätte eine Frage bezüglich GUI-Programmierung mit MATLAB. Also auf meinem GUI befinden sich einige Elemente, wie eine 2 listboxen, buttons, Bilder und 3 subplots. Diese 3 subplots und auch nur diese möchte ich gerne in einem Bild (sei es jpg oder png) speichern. Ich möchte diese Bilder später gerne in einem html-File einbinden. Hat jemand eine Ahnung wie das funktioniert? Ich hab schon ein Skript gefunden, das mir das komplette GUI in einem Bild speichert, aber ich möchte ja nur einen Teil des GUI´s. Vermutlich benötige ich dazu das handle des subplots. Wie kann ich das herausfinden? Bin leider noch Anfänger was GUI und MATLAB betrifft und hoffe, ihr könnt mir helfen. Vielen Dank, Steve
So wie es aussieht, kann der print-Befehl nur mit handles auf figures umgehen. Die handles auf die axes sind in 'children' gespeichert. (get(hfigure, 'children'))Man könnte also Kopien der axes in eigene figures zeichnen und die dann mit print exportieren. Dazu gibts auch noch das skript exportfig auf der Mathworks-Seite. Das erlaubt eine ziemlich genaue formatierung der Grafik.
Oder du machst einfach die nicht gewünschten Elemente unsichtbar: set(hslider, 'visible', 'off') export -dmeta bild.wmf set(hslider, 'visible', 'on') Irgendwas in der Art könnte gehen.
Danke für die Tipps! Die letzte Variante kommt glaub ich weniger in Betracht, hab das schon ausprobiert und ich bekomme dann auch Probleme mit dem GUI. Wie aber kann ich meine subplots in Bilder/figures speichern? Ich erstelle die plots ganz normal im GUI. Beispiel:
1 | sub(1) = subplot ('Position', [0.54, 0.83, 0.45, 0.155]); |
2 | plot (vdat(:,1), vdat(:,2), 'k'); |
3 | |
4 | sub(2) = subplot ('Position', [0.54, 0.66, 0.45, 0.155]); |
5 | plot (vdat(:,1), vdat(:,3), 'b'); |
6 | |
7 | sub(3) = subplot ('Position', [0.54, 0.49, 0.45, 0.155]); |
8 | plot (vdat(:,1), vdat(:,4), 'c'); |
Wie lässt sich aus diesen plots ein Bild erzeugen?
doc print ;) mit -d<formmat> festlegen und dateiname dazu z.b. plot(1:3,4:6); print -dbmp test.bmp %speichert aktuelle figure einzelne subplots kann man afaik nicht speichern, es gehen nur ganze figures also zur not kurz die daten in eine eigene figure plotten
Hm irgendwie bekomme ich das nicht gebacken.:-( Also wenn ich eines meiner subplots in figures speichern will, gibt es noch ein Problemchen. Möchte ich z.B. das erste subplot speichern mit dem Befehl:
1 | saveas(sub(1), 'output', 'fig') |
Dann wird nicht nur das erste subplot, sondern mein ganzes GUI in der Figure gespeichert? Wie gibts das? Kann es sein, dass das etwas mit den "parents" und "children" zu tun hat? Wär echt super wenn das jemand wüsste. Thanks Steve
Im Netz findet man mehrere Möglichkeiten. Hängt auch ein wenig davon ab wie dein Plot nun genau aussieht. Eine Möglichkeit wäre die hier. In Grunde wird ein neues unsichtbares Fenster geöffnet, indem dein Plot hineinkopiert wird und dies wird dann gespeichert. Sollte auf den Weg auch mit Subplots funktionieren:
1 | tmp = figure; |
2 | set(tmp,'Visible','Off'); |
3 | pos = get(axes('units','normalized'),'position'); |
4 | delete(gca); |
5 | set(copyobj(handles.axes1,tmp),'units','normalized','position',pos) |
6 | |
7 | [filename, pathname] = uiputfile({'*.jpg'},'Save as'); |
8 | |
9 | % als JPG abspeichern |
10 | saveas(tmp,[pathname,filename]); |
11 | |
12 | % temp Figure löschen |
13 | delete(tmp) |
Hast du ein Plot mit 2 y-Achsen, funktioniert das ganze leider nicht. Darans scheiter ich gerade ... ;)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.