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

Plots auf verschiedene subplots verteilen

 

DonCorleone
Forum-Anfänger

Forum-Anfänger


Beiträge: 33
Anmeldedatum: 19.05.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.01.2016, 15:37     Titel: Plots auf verschiedene subplots verteilen
  Antworten mit Zitat      
Hallo!

Ich versuche gerade folgendes:
ich habe eine bestimmte Anzahl an Plots, die variieren kann. Allerdings wird es immer eine gerade und keine ungerade Anzahl sein (z.B. 12, 14, 24 oder 34).
Jetzt versuche ich diese Plots auf Subplots zu verteilen - mit der Vorgabe, dass es pro Subplot immer 12 plots geben muss. D.h. bei 12 Plots wird es 1 Subplot geben; bei 24 Plots wird es 2 Subplots. Bei 34 Plots wären es dann 3 Subplots - wobei das 3te Subplot keine 12 Plots enthalten würde.

Meine Idee dazu war in etwa so:

Code:


for i=1:m % m = length of dataset
           
 if m <= 12
 figure(1)            
 subplot(3,4,i)

elseif 12 < m < 25
 figure(2)            
 subplot(3,4,i+12)

elseif 25 < m < 36
 figure(3)            
 subplot(3,4,i+24)
end

end
 


etc.

Ich hoffe ihr versteht was ich meine und bezwecken will. Mir erscheint die Methode allerdings etwas umständlich. Kann man das vielleicht etwas eleganter lösen?
Danke im Vorraus!!
Private Nachricht senden Benutzer-Profile anzeigen


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 19.01.2016, 17:32     Titel:
  Antworten mit Zitat      
würde es so machen glaube ich
Code:

nplots=33;
%test daten
for k=1:nplots
x{k}=1:10;
y{k}=rand(size(x{k}));
end

anz=floor(nplots/12);
for k=1:anz
    figure
    for l=1:12
    subplot(3,4,l)
    plot(x{(k-1)*12+l},y{(k-1)*12+l});
    end
end
figure;
for l=1:mod(nplots,12)
    subplot(3,4,l)
    plot(x{(anz-1)*12+l},y{(anz-1)*12+l});
end

_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
DonCorleone
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 33
Anmeldedatum: 19.05.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.01.2016, 21:44     Titel:
  Antworten mit Zitat      
Das funktionier perfekt! Dickes Danke!

Aber noch eine Frage:
Müsste ich nicht bei der letzten for-Schleife eine if-Abfrage machen, wenn es nur genau 12 Datensätze werden? Also so:

Code:

nplots=33;
%test daten
for k=1:nplots
x{k}=1:10;
y{k}=rand(size(x{k}));
end

anz=floor(nplots/12);
for k=1:anz
    figure
    for l=1:12
    subplot(3,4,l)
    plot(x{(k-1)*12+l},y{(k-1)*12+l});
    end
end

if anz > 1
  figure;
  for l=1:mod(nplots,12)
      subplot(3,4,l)
      plot(x{(anz-1)*12+l},y{(anz-1)*12+l});
  end
end
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 19.01.2016, 22:08     Titel:
  Antworten mit Zitat      
ja aber wenn dann ehrer
Code:
if mod(mplots,12)~=0

_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
DonCorleone
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 33
Anmeldedatum: 19.05.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.01.2016, 01:59     Titel:
  Antworten mit Zitat      
Stimmt, du hast recht. Danke vielmals! Surprised
Private Nachricht senden Benutzer-Profile anzeigen
 
DonCorleone
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 33
Anmeldedatum: 19.05.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.01.2016, 19:33     Titel:
  Antworten mit Zitat      
Hallo ich habe noch ein Anliegen, das zu diesem Problem gehört.
Und zwar geht es um die Achsen-Beschriftung.

Momentan ist es so, dass ich ihm sage er soll immer nur beim äußersten linken Plot und bei den untersten Plots ein Ylabel und Xlabel hinmachen. Sofern ich auch 12 Datensätze habe klappt das auch gut (siehe dazu den Anhang 1).

Was aber wenn ich z.B. nur 6 Datensätze habe? Für die Ylabel muss ich ja nur sagen, gib ein Ylabel immer beim 1sten, 5ten und 9ten Plot. Aber wie kann ich ihm sagen, er soll immer bei den Plots der letzten Reihe ein Xlabel hinzufügen (Anhang 2)?

Zum Verständnis hab ich mal ein Bild angehängt (Anhang 2), das ich mit Paint so bearbeitet habe, wie ichs gern hätte Very Happy

Man könnte das zwar sehr umständlich mit If-else-Abfrage machen, aber das bläht den Code ziemlich auf....

Fe3_all 1_edited2.png
 Beschreibung:
Anhang 2

Download
 Dateiname:  Fe3_all 1_edited2.png
 Dateigröße:  16.01 KB
 Heruntergeladen:  256 mal
Fe3_all 1.png
 Beschreibung:
Anhang 1

Download
 Dateiname:  Fe3_all 1.png
 Dateigröße:  15.23 KB
 Heruntergeladen:  250 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 20.01.2016, 20:25     Titel:
  Antworten mit Zitat      
mit mod lässt sich doch rausfinden wie viele da in der letzten zeile geplottet werden.
_________________

richtig Fragen
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.