Verfasst am: 15.05.2008, 09:57
Titel: Einzige Legende in Matlab
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!
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
_________________
Wenn ich bei der Arbeit mit Computern eins gelernt habe dann das ich einem Computer nur soweit traue wie ich ihn werfen kann.
figure for k=1:6 subplot(3,3,k);
h = bar(rand(6,5),'stack') title('test','fontsize',12) axis([0701]) if k==5 subplot(3,3,8,'visible','off') legend(h,{'XXXX','XYZ','ZZW','YYYYYYYY','ZWZW','YZW'},'Location','SouthOutside') end end
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.
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.
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.
Katjes
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 16.05.2008, 08:38
Titel: M-Code für legend
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.37750.19990.28570.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
Einstellungen und Berechtigungen
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
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.