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

Plot mit Ausrichtung der zweier x-Achsen zueinander

 

Kuba1623

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.01.2019, 00:03     Titel: Plot mit Ausrichtung der zweier x-Achsen zueinander
  Antworten mit Zitat      
Hallo zusammen,

ich möchte gerne zwei x-Achsen und eine y-Achse in meinem Plot haben. Davon soll eine x-Achse unten sein und die andere oben. Das habe ich soweit auch hinbekommen, wie im Code unten zu erkennen habe ich dazu folgende Hilfe von Matlab genutzt.

https://de.mathworks.com/help/matla.....le-x-axes-and-y-axes.html

Die obere x-Achse ist der Kehrwert hoch 0.5 der unteren x-Achse. Wie im Plot im Anhang zu erkennen dachte ich mir, dass die blaue Linie nun mit den blauen Punkten übereinstimmen müssten. Die blaue Linie ist aber leider leicht versetzt. Am besten bei der unteren x-Achse am Punkt ~0.4 ablesbar.

Meine Frage dazu: Wie kann ich den Versatz beheben?

Ich habe bisher keine adäquate Lösung gefunden und würde mich über eure Hilfe freuen.

Code:
plot(x1, y1, 'o', x1, y2,'-x', x1, y3,'--')

xlabel('{\lambda}/L_{PP} [-]')
ylabel('$$\hat{x}$$ [-]','Interpreter','Latex')
legend('EFD','GLR','TDIR', 'Location','southeast');

ax1 = gca; % current axes
ax1.XColor = 'r';
ax1.YColor = 'r';
ax1_pos = ax1.Position; % position of first axes
ax2 = axes('Position',ax1_pos,...
    'XAxisLocation','top',...
    'YAxisLocation','left',...
    'Color','none');
line(x2,  y1)

grid on
grid minor
hold off


untitled.jpg
 Beschreibung:

Download
 Dateiname:  untitled.jpg
 Dateigröße:  44.96 KB
 Heruntergeladen:  230 mal


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 01.01.2019, 11:09     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Die obere x-Achse ist der Kehrwert hoch 0.5 der unteren x-Achse.

In dem Beispielplot ist das aber überhaupt nicht der Fall. Vielleicht führt dich das schon zur Lösung des Problems?

Ein komplett reproduzierbares Beispiel, aus dem dann auch der Zusammenhang zwischen x1 und x2 ersichtlich ist, wäre gut.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Kuba1623

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.01.2019, 16:08     Titel:
  Antworten mit Zitat      
Hier ein reproduzierbarer Code mit Daten:

Code:

clear all
clc

x1 =[0.164038867;0.178951491;0.218718489;0.281209486;0.393693281;0.492116601;0.6561555;0.78738728;0.894762167;0.984249859];
x2 = flipud((1./x1).^(0.5));

y1 = [0.016758818;0.034871369;0.017946708;0.028599205;0.023180593;0.15295531;0.405913978;0.483864659;0.512865703;0.489440453];
y2 = [0.024568028;0.04289353;0.04807252;0.086543879;0.060388879;0.151562702;0.320097994;0.417363451;0.472067267;0.504442805];
y3 = [0.019408167;0.034017981;0.039903344;0.052599794;0.048274719;0.067235304;0.278698726;0.40723537;0.470797595;0.543955778];

plot(x1, y1, 'o', x1, y2,'-x', x1, y3,'--')

xlabel('{\lambda}/L_{PP} [-]')
ylabel('$$\hat{x}$$ [-]','Interpreter','Latex')
legend('EFD','GLR','TDIR', 'Location','southeast');

ax1 = gca; % current axes
ax1.XColor = 'r';
ax1.YColor = 'r';
ax1_pos = ax1.Position; % position of first axes
ax2 = axes('Position',ax1_pos,...
    'XAxisLocation','top',...
    'YAxisLocation','left',...
    'Color','none');
line(x2,  y1)

grid on
grid minor
hold off
 
Kuba1623

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.01.2019, 16:11     Titel:
  Antworten mit Zitat      
Entschuldigung, ich habe vergessen zu erwähnen, dass ich den Vektor "x2" noch mit "flipud" gedreht habe, damit der Verlauf des Graphen und den Punkten gleich bleibt.
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 03.01.2019, 12:36     Titel:
  Antworten mit Zitat      
Hallo,

wenn, dann musst du die Achse drehen:
Code:
ax2 = axes('Position',ax1_pos,...
    'XAxisLocation','top',...
    'YAxisLocation','left',...
    'XDir', 'reverse', ...
    'Color','none');


Ich fürchte aber, dass du trotzdem ein Problem haben wirst, weil die Transformation nicht linear oder logarithmisch ist, die Skala aber linear oder logarithmisch sein muss. Man kann zwar händisch die Ticks ändern, das wäre aber recht mühsam.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
svs
Forum-Newbie

Forum-Newbie


Beiträge: 1
Anmeldedatum: 04.01.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.01.2019, 21:17     Titel: Warum?
  Antworten mit Zitat      
Wenn es nur darum geht, die Linie über die Punkte zu legen.
Warum geht nicht einfach?

Code:
%
line(x1, y1); % x1 anstatt x2 ?
 


Viele Grüße.
Private Nachricht senden Benutzer-Profile anzeigen
 
Kuba1623

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.01.2019, 18:09     Titel:
  Antworten mit Zitat      
Die Linie an sich ist uninteressant, sie dient nur zum besseren Verständnis. Folgendes möchte ich erreichen:

x1 und x2 haben jeweils 10 Einträge.

Im Plot sollen

x1(1,1) zu x2(10,1)
x1(2,1) zu x2(9,1)
...

für den jeweiligen y1-Wert senkrecht zueinander liegen, damit die beiden Achsen zueinander ausgerichtet sind. Momentan sind beide Skalen verschoben.

Mit "line(x1,y1)" wird die obere Achse mit den Werten von x1 beschriftet und nicht wie gewünscht x2.

Ich hoffe ich konnte das Problem besser beschreiben, ansonsten werde ich es lassen. Um mich mit den xTicks auseinander zu setzen fehlt mir leider die Zeit, da demnächst die Präsentation ansteht und ich auf eine einfache Lösung gehofft habe.
 
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.