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.
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.15
und eine Breite und Höhe von 0.8
bzw. 0.75
Diese Koordinaten werden in Bezug auf Ihre Abbildungsgröße normalisiert.
Beispieldiagramme
Ausgangssituation
Wenn Sie das auf setzen, ax.Position
erhalten [0.25, 0.15, 0.7, 0.75]
Sie ungefähr das, was Sie ursprünglich hatten:
Lösung
Wenn Sie das auf setzen, ax.Position
erhalten [0.1, 0.1, 0.85, 0.85]
Sie deutlich weniger Leerzeichen:
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 set
und get
.