Wie entferne ich das fade Leerzeichen links von ylabel in der Matlab-Figur, wenn ich eine lange Zeichenfolge für ylabel verwende?

1

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.Beispielfigur

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.

AlFagera
quelle
1
Welche Version von Matlab? Ich habe dieses Problem nicht auf 2018b mit dem Code , den Sie zur Verfügung gestellt haben: imgur.com/CktT8ME Das Grundstück hat die folgende (Standard für mich) Einstellungen: pastebin.com/00GFw7X3
SAARU Lindestøkke
Ich benutze Matlab 2014b
AlFagera
Ok, ich habe keinen Zugang zu dieser Version. Vielleicht können Sie sich meine Handlungseinstellungen ansehen und sie mit Ihren vergleichen, um festzustellen, ob dort ein Unterschied besteht?
Saaru Lindestøkke
Noch besser: Nachdem Sie Ihren Plot erstellt haben, führen Sie den Befehl aus gcfund veröffentlichen Sie die Ausgabe (stellen Sie sicher, dass alle Eigenschaften angezeigt werden) in Ihren Fragen, damit wir sie uns ansehen können.
Saaru Lindestøkke
Läuft gcffast nichts, wird nur ein leerer Figuren-Assistent angezeigt und im Befehlsfenster wird ans = 1 angezeigt
AlFagera

Antworten:

1

Sie können die Positionierung der Achsen im Bildfenster wie folgt anpassen (mit Ihrem Beispielcode):

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

In ax = handle(gca);speichern Sie das Achsenhandle in Variable, axso 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 bezieht ax. Das obige Beispiel setzt den linken unteren Punkt an den Koordinaten 0.1, 0.15und eine Breite und Höhe 0.8und 0.75jeweils. 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:

Bildbeschreibung hier eingeben

Lösung

Wenn Sie den Wert auf setzen ax.Position, erhalten [0.1, 0.1, 0.85, 0.85]Sie weit weniger Leerzeichen:

Bildbeschreibung hier eingeben

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 Methoden setund get.

Saaru Lindestøkke
quelle
Ob Sie es glauben oder nicht, mit diesem Befehl h.CurrentAxes.Position = [0.1, 0.1, 0.75, 0.75];wurde mein Plot nicht geändert, auch wenn ich h.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 erst ax1 = axes('Position',[0.15 0.15 0.75 0.75]);nach der Zahl
AlFagera
Schön zu hören, dass dein Problem gelöst ist. Ich denke, der Fehler, den Sie erhalten, ist auf eine Nichtübereinstimmung unserer Matlab-Versionen zurückzuführen. Anscheinend können Sie die Punktnotation in Ihrer Version von Matlab nicht verwenden, um die Abbildungseigenschaften zuzuweisen. Sind Sie sicher, dass Sie Version 2014b verwenden? Diese Frage bezieht sich auf den Fehler, den Sie sehen .
Saaru Lindestøkke
Ja, ich bin sicher , dass meine 2014b Version, es ist eigentlich erklärt dort , dass: „Ab R2014b Sie Punktnotation verwenden können , um abfragen und setzen Eigenschaften Wenn Sie eine frühere Version verwenden, die stattdessen Funktionen erhalten und setzen verwenden..“ als die Frage, die Sie teilen: Zugreifen auf Grafikobjekteigenschaften unter Verwendung der Punktnotation in Matlab-Versionen vor ( vor ) R2014b. Ich würde vorschlagen, dass Sie Ihre Antwort so ändern, dass ich sie als akzeptiert markieren kannh = figure; ax1 = axes('Position',[0.15 0.15 0.75 0.75]); plot()
AlFagera
Ich habe es geändert.
Saaru Lindestøkke
Ok, obwohl ich lieberax.Position = [0.15, 0.15, 0.75, 0.75];
AlFagera