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

Einzige Legende in Matlab

 

Katjes

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.05.2008, 09:57     Titel: Einzige Legende in Matlab
  Antworten mit Zitat      
Ich möchte gern einen Grafik mit 6 subplots (2,3) erstellen, und dabei nur eine Legende mittig unterhalb aller subplots erstellen lassen.
Das mit 'Position' funktioniert irgendwie nur bei direkten Vorgaben und nicht bei einer for Schleife, unten mal mein Problemfall, vielleicht kennt sich ja jemand damit aus, Vielen Dank!

%%%%%%
for k=1:6
subplot(2,3,k);
bar(rand(6,5),'stack')
title('test','fontsize',12)
axis([0 7 0 1])
if k==5
legend('XXXX','XYZ','ZZW','YYYYYYYY','ZWZW','YZW','Location','SouthOutside')
end
end
%%%%%

Eine Umwandlung in subplot(3,3,k) sieht zwar besser aus, aber dennoch ist die Legende ziemlich nah an der X-Achse.
Bin nun etwas ratlos!
Sad
Code:


steffi
Forum-Century

Forum-Century



Beiträge: 149
Anmeldedatum: 07.03.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.05.2008, 12:46     Titel:
  Antworten mit Zitat      
Hallo,

du kannst die Legende über den Befehl

Code:
legend('XXXX','XYZ','ZZW','YYYYYYYY','ZWZW','YZW','Position',[0.5, 0.1, 0.1, 0.5])


auch per Werteingabe positionieren, die im Code-Beispiel angegebenen Werte sind wahrscheinlich nicht ideal, aber ein Anfang. Von da aus kannst du über Trial-and-Error die Position finden, die dir am besten gefällt!

Ach ja:'Position' erwartet [x, y, Breite, Höhe], vielleicht zu ausprobieren sinnvoll Laughing
_________________

Wenn ich bei der Arbeit mit Computern eins gelernt habe dann das ich einem Computer nur soweit traue wie ich ihn werfen kann.
Private Nachricht senden Benutzer-Profile anzeigen
 
outsider
Forum-Meister

Forum-Meister


Beiträge: 806
Anmeldedatum: 03.09.07
Wohnort: München
Version: R2012b
     Beitrag Verfasst am: 15.05.2008, 12:50     Titel:
  Antworten mit Zitat      
wie wärs damit?

Code:
figure
for k=1:6
   subplot(3,3,k);
   h = bar(rand(6,5),'stack')
   title('test','fontsize',12)
   axis([0 7 0 1])
   if k==5
      subplot(3,3,8,'visible','off')
      legend(h,{'XXXX','XYZ','ZZW','YYYYYYYY','ZWZW','YZW'},'Location','SouthOutside')
   end
end



MfG
Private Nachricht senden Benutzer-Profile anzeigen
 
steffi
Forum-Century

Forum-Century



Beiträge: 149
Anmeldedatum: 07.03.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.05.2008, 12:55     Titel:
  Antworten mit Zitat      
Hast du das bei dir schon versucht?

Bei mir gibt es das gleiche Ergebnis wie schon die Version von Katjes, also auch die Legende stark in die x-Achsen-Beschriftung gezogen?!
_________________

Wenn ich bei der Arbeit mit Computern eins gelernt habe dann das ich einem Computer nur soweit traue wie ich ihn werfen kann.
Private Nachricht senden Benutzer-Profile anzeigen
 
outsider
Forum-Meister

Forum-Meister


Beiträge: 806
Anmeldedatum: 03.09.07
Wohnort: München
Version: R2012b
     Beitrag Verfasst am: 15.05.2008, 13:03     Titel:
  Antworten mit Zitat      
mein Beispiel funzt bei mir.
Im Unterschied zu Katjes Beispiel lasse ich das Figure nicht in 6, sondern in 9 Bereiche unterteilen. Die oberen 6 werden per Schleife geplottet und die Legende wird in der unsichtbaren Axes unterhalb von allen Plot erzeugt.


MfG
Private Nachricht senden Benutzer-Profile anzeigen
 
steffi
Forum-Century

Forum-Century



Beiträge: 149
Anmeldedatum: 07.03.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.05.2008, 14:05     Titel:
  Antworten mit Zitat      
Hab schon verstanden was du machst. Katjes hat ja auch im Nachsatz geschrieben, dass trotz
Code:

die Legende in die x-Achsenbeschriftung reingezogen wird. Wenn ich deinen Code ausprobiere, passiert das bei mir auch! Legende trifft auf die Beschriftung der x-Achse!
_________________

Wenn ich bei der Arbeit mit Computern eins gelernt habe dann das ich einem Computer nur soweit traue wie ich ihn werfen kann.
Private Nachricht senden Benutzer-Profile anzeigen
 
Katjes

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.05.2008, 08:38     Titel: M-Code für legend
  Antworten mit Zitat      
Danke für eure Antworten,
letztlich habe ich den (3,3, t) subplot gewählt,
und mit folgendem Code sieht das Ganze super aus!
Code:

if k==5
   legend1 = legend('XXXX','XYZ','ZZW','YYYYYYYY','ZWZW','YZW','show');
   set(legend1,'Position',[0.3775 0.1999 0.2857 0.1444]);
end
 


Für alle die es noch nicht wußten, wenn Matlab den Subplot anzeigt, kann man am einfachsten die Legende in die gewünschte Position schieben, und dann mit der rechten Maustaste sich den sogenannten (optimalen) M-Code anzeigen lassen. (Hab's aber auch nur per Zufall entdeckt!)
Also viel Spaß mit vielseitigen Subplots Smile
 
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 - 2024 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.