WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Konstante Plotgröße trotz unkonstanter Legende

 

Maik aus Magdeburg

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.10.2013, 23:42     Titel: Konstante Plotgröße trotz unkonstanter Legende
  Antworten mit Zitat      
Hallo ,


Gibt es eine Möglichkeit die Koordinatensysteme von Plots gleich groß zu machen.
Folgende Situation.
Ich erzeuge Figures und von denen gleich folgend Bilder im PNG-Format.
Leider habe ich bei einem Bild mal 4, mal 5 oder im nächsten Bild mal 5 mal 6 Legendeneinträge (ich teste verschiedene Berechnungsverfahren für ein Bild, dann für das nächste Bild).
Mein Problem ist jetzt das sich die Abstände des Koordinatengitters in y-Richtung je nach Anzahl der Legendeneinträge unterscheiden (habe die Legende unter dem Plot (southside) und dort muss sie auch bleiben da sie recht lang ist (über dem Plot würde auch gehen jedoch nicht links oder rechts vom Plot und nicht innerhalb des Plots)).
Es gibt die Möglichkeit mit dem Befehl „axis([-200 200 -100 100])“ die Achsen auf eine gewisse Länge zu bringen. Das verwende ich bereits.
Es gibt die Möglichkeit mit dem Befehl „axis equal“ die Koordinatenachsen im gleichen Verhältnis im Bezug auf die Einheiten zu setzen. Das „funktioniert“ leider nicht weil, wenn die Legende größer wird skaliert es nicht nur die Y-, sonder auch die X-Achse. Das Bild wird kleiner als die anderen die ich erzeuge. Mein Ziel ist es die Bilder danach in IrfanView anzuschauen. Dabei sollen die Koordinatensysteme der Bilder deckungsgleich sein weil es das erkennen von Veränderungen in aufeinander folgenden Bilder (PNG) (gerechnet mit verschiedenen Verfahren) vereinfacht.
Außerdem verwende ich den Befehl „Position“ (Figure) der meines Erachtens auch schon eine Bildgröße mitliefert. Die Größe der Figur ändere ich in Abhängigkeit der Legendeneinträge.
Code:

hph=(LC+1)*30;  % Gruppenabhängige Höhe des Plots
figure('Name',figurtitel,'NumberTitle','off','Position',[10 50 1900 800+hph])
 


Leider funktioniert das irgendwie auch nicht richtig, zumindest nicht bei mir.
Gibt es noch weitere Möglichkeiten die Koordinatengittergröße einheitlich zu gestalten (ohne die Option dass man die Legende weglässt)?
Habe dazu hier im Forum leider nichts gefunden.

Da die Daten für die Bilder nacheinander eingelesen werden, ist es da auch möglich Einstellungen von der vorhergehenden Figur übernehmen?

Mit freundlichen Grüßen

Maik aus Magdeburg


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 09.10.2013, 08:33     Titel: Re: Konstante Plotgröße trotz unkonstanter Legende
  Antworten mit Zitat      
Hallo Maik,

Die Frage enthält sehr viele Details. Welche davon sind wichtig?

Zitat:
Mein Problem ist jetzt das sich die Abstände des Koordinatengitters in y-Richtung je nach Anzahl der Legendeneinträge unterscheiden (habe die Legende unter dem Plot (southside) und dort muss sie auch bleiben da sie recht lang ist (über dem Plot würde auch gehen jedoch nicht links oder rechts vom Plot und nicht innerhalb des Plots)).

Was ist nun genau das Problem? Ein kleines Beispiel wäre wohl deutlich schneller zu verstehen.

Möchtest Du PNGs mit identischer Größe oder sollen die PNGs je nach größe der Legende unterschiedlich groß sein, die AXES-Objekte dagegen die gleiche Größe behalten?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Maik aus Magdeburg

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.10.2013, 11:22     Titel:
  Antworten mit Zitat      
Hallo Jan,

Beispiel ist das hier (erstes Bild).

http://www.gomatlab.de/problem-bild.....30584,highlight,maik.html

Dieses Bild enthält 4 Legendeneinträge (der hier gezeigte 5. ist immer da). Bei einem anderen Berechnungsverfahren kann es jedoch sein das ich 5 Legendeneinträge (respektive 6) habe. Dann wird jedoch die Y- Achse gestaucht und beim durchblättern im Irfanview passen die Koordinatensysteme nicht mehr ganz übereinander (zumindest nicht ohne lästiges vergrößern, was bei schnellen hin und her blättern (um Veränderungen von einem Bild zum anderen zu sehen) nicht möglich ist). Die AXES-Objekte sollen also immer die gleiche Größe haben. Die Bilder müssen also unterschiedlich groß werden (in Abhängigkeit der Anzahl der Legendeneinträge).
Doch bis jetzt bekomme ich das nicht hin.

Mit freundlichen Grüßen

Maik aus Magdeburg
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 09.10.2013, 12:55     Titel:
  Antworten mit Zitat      
Hallo Maik,

Ich erkenne auf den Bildern nicht hilfreiches. Die sind so groß, dass ich wild auf meinem Monitor herum-scrollen muss, so dass sich unterschiedliche Größen kaum ins Auge springen können.

Zitat:
Dieses Bild enthält 4 Legendeneinträge (der hier gezeigte 5. ist immer da). Bei einem anderen Berechnungsverfahren kann es jedoch sein das ich 5 Legendeneinträge (respektive 6) habe.

Die Leser im Forum möchten freiwillig Zeit aufwenden, um Deine Frage zu benatworten. Dann ist es sinnvoll, alle überflüssigen Details wegzulassen.
Was hat das Problem mit Irfanview zu tun?

Du könntest die Größe des AXES-Objektes und der Legend manuell setzen:
Code:
set(hleg1, 'Position', [.1,.2,.1,.2]);

Oder wie wäre es, die Legenden wegzulassen für den Vergleich der Bilder?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Maik aus Magdeburg

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.10.2013, 20:16     Titel:
  Antworten mit Zitat      
Hallo Jan, Danke für deine Mühe.

Im Anhang sind noch mal 2 Bilder mit einer wesentlich kleineren Auflösung, jedoch das wesentlich ist zu erkennen bemerken. Das eine Bild hat 3, das andere 4 Legendeneinträge. Wenn man beide runterläd und im IrfanView (es geht auch jedes andere Programm zum Bilder angucken) anschaut (hin und her klicken) merkt man das die Y-Achse des Koordinatensystems des Bildes von einem Bild zum anderen gestaucht wird während die X-Achse immer gleich lang ist. Die Koordinatenachsen in den Bilder sind also nicht Deckungsgleich (nur für die x-Achse).
Ich möchte die Bilder so erstellen das die Koordinatenachsen der Bilder immer deckungsgleich sind, unabhängig von der Anzahl der Legendeneinträge. Dies hat selbstverständlich zur Folge das das Bild mit den 4 Legendeneinträgen höher wird als das mit den 3 Einträgen, bzw eines mit 5 Legendeneinträgen nochmals höher ist als das mit 4 Legendeneinträgen.
Ich müsste also wissen um was ich die Figur Höher machen muss wenn ein Legendeneintrag dazukommt. So könnte ich die Figur Legendeneintragsabhängig gestalten und die Koordinatensysteme in den Bildern wären immer deckungsgleich.

Den geposteten Code habe ich probiert, bekomme aber immer die Fehlermeldeung „??? Undefined function or variable 'hleg1'“ Ich vermute das ich es an der falschen Stelle einfüge. Wo muss ich es einfügen? Direkt nach dem Befehl „legend“?

Die Legende ausschalten ist keine Option da ich mehrere 100 Bilder miteinander Vergleichen möchte. 7 Bilder zeigen einen Datensatz, ich habe mehr als 100 Datensätze. Außerdem gehen dadurch die ganzen Zusatzinformationen zu den Lösungen verloren.

Ich habe Matlab-R2007b

Mit freundlichen Grüßen

Maik aus Magdeburg

1279 RRWS 2D-Plot RinNEU.png
 Beschreibung:

Download
 Dateiname:  1279 RRWS 2D-Plot RinNEU.png
 Dateigröße:  26.28 KB
 Heruntergeladen:  548 mal
1279 RRWS 2D-Plot Rinner.png
 Beschreibung:

Download
 Dateiname:  1279 RRWS 2D-Plot Rinner.png
 Dateigröße:  34.07 KB
 Heruntergeladen:  568 mal
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 15.10.2013, 09:40     Titel:
  Antworten mit Zitat      
Hallo Maik,

Die riesigen Bilder sind immer noch fatal, da man viel hin- und her-scrollen muss. Vielleicht kann man da am Layout des Forums etwas verbessern.

Also, man kann die Legende so erstellen, dass sie das dazu gehörige AXES-Objekt automatisch zusammen staucht. Das ist aber von Dir nicht gewünscht. Deshalb hatte ich erklärt, wie man die Größe der AXES-Objekte für das Plotten und für die Legende die Größe manuell einstellt. Den Handle der Legende hatte ich mal "hleg1" genannt, aber das müsstest Du natürlich an Deinen Code anpassen.

Also: Wenn Du die Größe der Figure, des Plot-AXES und des AXES der Legende manuell setzt, kannst Du alles exakt kontrollieren.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.