Ich mache einige Darstellungen in Matlab 2014b, in einer davon zeichne ich 5 Variablen gegen die Zeit dort und möchte 5 Namen wie, Geschwindigkeit (rad / sec), Spannung (V), ... usw. auf dem Wie Sie auf dem Bild sehen können, bekomme ich auf der linken Seite zusätzlichen, milden Platz und bemühe mich, ihn zu entfernen.
Hier ist ein Arbeitscode, 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
Vorschläge werden im Voraus sehr geschätzt.
graphics
latex
matlab
matplotlib
AlFagera
quelle
quelle
gcf
und veröffentlichen Sie die Ausgabe (stellen Sie sicher, dass alle Eigenschaften angezeigt werden) in Ihren Fragen, damit wir sie uns ansehen können.gcf
fast nichts, wird nur ein leerer Figuren-Assistent angezeigt und im Befehlsfenster wird ans = 1 angezeigtAntworten:
Sie können die Positionierung der Achsen im Bildfenster wie folgt anpassen (mit Ihrem Beispielcode):
Erklärung des Codes
In
ax = handle(gca);
speichern Sie das Achsenhandle in Variable,ax
so dass Sie es später ändern können.In
ax.Position [0.1, 0.15, 0.8, 0.75];
der Abbildung ändern Sie die Position der Achsen, auf die sich der Griff beziehtax
. Das obige Beispiel setzt den linken unteren Punkt an den Koordinaten0.1, 0.15
und eine Breite und Höhe0.8
und0.75
jeweils. Diese Koordinaten werden auf Ihre Figurengröße normiert.Beispielgrundstücke
Ausgangssituation
Wenn Sie den Wert auf setzen
ax.Position
, erhalten[0.25, 0.15, 0.7, 0.75]
Sie so etwas wie den, den Sie ursprünglich hatten:Lösung
Wenn Sie den Wert auf setzen
ax.Position
, erhalten[0.1, 0.1, 0.85, 0.85]
Sie weit weniger Leerzeichen:Anmerkungen
Dieser MATLAB-Hilfelink erklärt, wie Sie die Achsposition "automatisch" so definieren können, dass eine engere Anpassung erfolgt.
Dieser MATLAB-Hilfelink für Achsen erklärt, welche Parameter im Achsenobjekt verfügbar sind.
Diese Antwort bei Stackoverflow hat mir geholfen, eine Möglichkeit zu finden, die Punktnotation in MATLAB-Versionen vor 2014b zu verwenden. Anscheinend ist die Verwendung
handle()
auch schneller als die Methodenset
undget
.quelle
h.CurrentAxes.Position = [0.1, 0.1, 0.75, 0.75];
wurde mein Plot nicht geändert, auch wenn ichh.CurrentAxes.Position = [0.01, 0.01, 0.5, 0.5];
Folgendes eingestellt habe: Nur folgende Warnung wurde angezeigt: "Warnung: Die Strukturfeldzuweisung überschreibt einen Wert mit der Klasse" double ". Siehe MATLAB R14SP2 Versionshinweise, Zuweisen von Nichtstruktur Variablen als Strukturen Zeigt für Details eine Warnung an. ". Die von Ihnen bereitgestellten Links haben mir jedoch geholfen, das Problem zu lösen, insbesondere der 2. Link. Es stellte sich heraus, dass ich diesen Befehl erstax1 = axes('Position',[0.15 0.15 0.75 0.75]);
nach der Zahlh = figure; ax1 = axes('Position',[0.15 0.15 0.75 0.75]); plot()
ax.Position = [0.15, 0.15, 0.75, 0.75];