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

Achsenlängen von Subplots bei festen AspectRatio

 

TobiasSOK

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.04.2016, 11:27     Titel: Achsenlängen von Subplots bei festen AspectRatio
  Antworten mit Zitat      
Ich habe das folgende Problem (siehe Bild):



Via Matlab erzeuge ich Daten für einen Surf-Plot. Die Plots unterhalb bzw. rechts zeigen die x-z- bzw-y-z-Schnitte entlang der weißen Linien. Das Verhältnis der Achsen im Surf-Plot ist mit
Code:
festgelegt.

Die maximale Größe der Subplots ohne Beschriftung wird vor der Berechnung durch
Code:
'units','normalized','Position',[...]
festgelegt.

Das genaue Problem ist nun, dass die Achsenlänge der Plot rechts (bzw. bei einen anderen x-y-Verhältnis auch der Plot unten) nicht wie der Surf-Plot skaliert wird.

Die Frage ist also: Wie schafft man es, dass die Achsenlängen der Plots unten und rechts gleich der Achsenlängen des surf ist, wenn das Aspektverhältnis im surf beibehalten wird?


Was vielleicht noch wichtig ist:
Die Plots sind Teil einer GUI (ohne Guide erstellt). Daher wäre es wichtig eine Lösung zu finden, die unabhängig von der Fenstergröße funktioniert.
Die Plots seitlichen Plot müssen nicht unbedingt bündig an den surf-Plot anschließen.

Wäre schön wenn jemand eine hilfreiche Idee hat, wie ich das Problem lösen kann.

Vielen Dank im Voraus!

Problem Skalierung.JPG
 Beschreibung:
Kern des Problems

Download
 Dateiname:  Problem Skalierung.JPG
 Dateigröße:  31.2 KB
 Heruntergeladen:  399 mal


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 21.04.2016, 12:32     Titel:
  Antworten mit Zitat      
mir ist nicht ganz klar ob ich verstanden habe was du erreichen willst aber kannst du nicht die position deines surf plots abfragen und damit dann die achsen erstellen ?
ohne beispiel code ist es immer schwer daran rumzuspielen um es zu testen Smile
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
TobiasSOK

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.04.2016, 12:51     Titel:
  Antworten mit Zitat      
Das mit den Positionen abgreifen habe ich schon probiert (sowohl Position, als auch OuterPosition und ThightInset.

Da ist das Problem, dass bei daspect die vorher definierte Position erhalten bleibt, obwohl nicht die ganze Fläche ausgenutzt wird.

Bei OuterPosition und ThightInset hat man das Problem, dass es nur für eine bestimmte Fenstergröße der GUI passt. Maximiert man z.b. die GUI, stimmen die Einstellungen nicht mehr.

Betreffs-Code:
Wie schon geschrieben, ist das in einer GUI eingebaut und entsprechend in relativ viele Unterfunktionen eingebaut. Ich versuch mal in der Hoffnung , die relevanten Codestellen hier zu kopieren.

Hier die Definition der Plots in der GUI:
Code:
%Main-Plot
Plot(1)=subplot(2,2,1,'Units','normalized','Position',[.08 .51 .4 .4],...
    'Visible','off');
view([0 90]);
Plot(1).XAxisLocation='top';
xlabel('x-Position [mm]');
ylabel('y-Position [mm]','rot',90);
axis off

%Plot x=constant
Plot(2)=subplot(2,2,2,'units','normalized','Position',[.48 .51 .1 .4],...
    'Visible','off');
ylabel('y-Position [mm]','rot',90);
Plot(2).YAxisLocation='right';
Plot(2).XAxisLocation='top';
 
%Plot y=constant
Plot(3)=subplot(2,2,3,'units','normalized','Position',[.08 .41 .4 .1],...
    'Visible','off');
xlabel('x-Position [mm]');
 


aus der Funktion zum Zeichnen des surf:
Code:
set(Figure(1),'currentaxes',Plot(1));
map = colormap(jet(100));
surf(Y, X , Z,'LineStyle','None'); hold on;
 
colormap(map)%jet
caxis auto;
caxis([0 max(max(Z))]);

view([0 90]);
Plot(1).XAxisLocation='top';
xlabel('x-Position [mm]');
xlim([Y(1) Y(end)]);
ylim([X(1) X(end)]);
ylabel('y-Position [mm]','rot',90);
axis off

hold off;
daspect([1 1 1]);
colorbar('units','normalized','Position',[.5 .33 .05 .15]);


aus der Funktion zum Plotten der Grafik rechts:
Code:
set(Figure(1),'currentaxes',Plot(2));
Slice2Pos = find(abs(Y - X) == min(abs(Y - X)));
Slice2Pos = Slice2Pos(end);
plot(Z(:,Slice2Pos(1)),X,'Linestyle','-',...
    'Color','k');hold on;  

grid on
ylim([X(1) X(end)]);
xlim([0, 1.05].*max(max(Z)));

ylabel('y-Position [mm]','rot',90);
Plot(2).YAxisLocation='right';
Plot(2).XAxisLocation='top';

hold off;


aus der Funktion zum Plotten der Grafik unten:
Code:
set(Figure(1),'currentaxes',Plot(3));
   
Slice1Pos = find(abs(X - Y) == min(abs(X - Y)));
Slice1Pos = Slice1Pos(end);
plot(Y,Z(Slice1Pos(1),:)./NitsScale,'Linestyle','-',...
        'Color','k'); hold on;    

grid on
xlim([Y(1) Y(end)]);
ylim([0, 1.05].*max(max(Z)));
xlabel('x-Position [mm]');


hold off;
 
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.