Erklärung des Codes

Erklärung des Codes

Ich erstelle einige Diagramme in Matlab 2014b. In einem davon stelle ich 5 Variablen im Vergleich zur Zeit dar und möchte auf dem Y-Etikett 5 Namen angeben, etwa Geschwindigkeit (Rad/Sek.), Spannung (V) usw. Wie Sie jedoch auf dem Bild sehen können, bleibt links zusätzlicher, nichtssagender Platz übrig und ich habe Mühe, diesen zu entfernen.Beispielabbildung

Hier ist ein funktionierender Code, um die Situation zu erklären:

clear all; clc; close all;
x = rand(8,1);
y = rand(8,1);

figure
plot(x,y)
xlabel('time (s)')
ylabel('$x$ (m), $\theta$ (rad), $\dot{x}$ (m/s),$\dot{\theta}$ (rad/s), $\dot{S}_{gen}$(W/K)','Interpreter', 'latex','fontsize',10)
grid

Wir sind für alle Vorschläge im Voraus sehr dankbar.

Antwort1

Sie können die Positionierung der Achsen im Abbildungsfenster wie folgt optimieren (unter Verwendung Ihres Beispielcodes):

clear all; clc; close all;
x = rand(8,1);
y = rand(8,1);

figure;
ax = handle(gca);
ax.Position = [0.1, 0.15, 0.8, 0.75];
plot(x,y)
xlabel('time (s)')
ylabel('$x$ (m), $\theta$ (rad), $\dot{x}$ (m/s),$\dot{\theta}$ (rad/s), $\dot{S}_{gen}$(W/K)','Interpreter', 'latex','fontsize',10)
grid

Erklärung des Codes

Darin ax = handle(gca);speichern Sie den Achsen-Handle in einer Variablen ax, sodass Sie ihn später ändern können.

In ax.Position [0.1, 0.15, 0.8, 0.75];ändern Sie die Position der Achsen in der Abbildung, auf die durch den Griff verwiesen wird ax. Das obige Beispiel setzt den unteren linken Punkt auf die Koordinaten 0.1, 0.15und eine Breite und Höhe von 0.8bzw. 0.75Diese Koordinaten werden in Bezug auf Ihre Abbildungsgröße normalisiert.

Beispieldiagramme

Ausgangssituation

Wenn Sie das auf setzen, ax.Positionerhalten [0.25, 0.15, 0.7, 0.75]Sie ungefähr das, was Sie ursprünglich hatten:

Bildbeschreibung hier eingeben

Lösung

Wenn Sie das auf setzen, ax.Positionerhalten [0.1, 0.1, 0.85, 0.85]Sie deutlich weniger Leerzeichen:

Bildbeschreibung hier eingeben

Anmerkungen

Dieser MATLAB-Hilfelinkerklärt wie man die Achsenlage "automatisch" so festlegen kann, dass eine engere Passung entsteht.
Dieser MATLAB-Hilfelink zu Achsenerklärt, welche Parameter im Achsenobjekt verfügbar sind.
Diese Antwort bei Stackoverflowhat mir geholfen, einen Weg zu finden, die Punktnotation in MATLAB-Versionen vor 2014b zu verwenden.ScheinbarDie Verwendung handle()ist auch schneller als die Methoden setund get.

verwandte Informationen