Verfasst am: 27.07.2018, 08:49
Titel: Text in Plot ausgerichtet mit XPos
Hallo zusammen,
bei der Auswertung meiner Messdaten ist mir etwas eigenartiges aufgefallen. Dies bezieht sich auf die Ausrichtung eines Textes direkt im Plot. Die Daten gehen bis 120s, allerdings stellt Matlab zur schöneren Darstellung 150s ein. Soweit auch kein Problem, jedoch wird, wenn ich das Programm komplett durchlaufen lasse, der Text auf die 120 ausgerichtet. Wenn ich allerdings ein Debug-Punkt im Bereich der Plotanpassung setzte und durchsteppe, wird als XPos auch die 150 erkannt und damit der Text richtig ausgerichtet. Kann sich jemand darauf ein reim machen oder ist das ein Bug?
PS: Es ist kein besonders schönes Programm, aber es tut (bis auf das Problem), was es soll^^
Code:
function Plotting(Name,Data1,Data2,Row1,Row2,Row3,Row4,FS,spanne,RG) figure('NumberTitle', 'off', 'Name', Name,'Position', [300, 150, 1024, 768]);
subplot(1,2,1)
yyaxis left
plot(smooth(Data1(:,Row1),spanne))
ax=gca;
grid on
ax.YLim = [0.21];
ax.YTick = 0.2:0.1:1;
ax.XLabel.String = 'X-Daten';
ax.YLabel.String = 'Y1-Daten';
ax.FontSize = FS;
yyaxis right
plot(Data1(:,Row2))% hier setze ich den besagte Debug-Punkt
ax.YLabel.String = 'Y2-Daten';
lowlim = 0;
uplim = 1600;
ax.YLim = [lowlim uplim];
ax.YTick = lowlim:200:uplim;
Hast du schon einmal probiert die X-Achse manuell auf 120 zu setzen?
Du springt zwar im debug rein und siehst das der Text auf 150 steht, hast dann immer gestoppt oder das Script fertig laufen lassen und am Ende bleibt er auf 150 stehen?
Labbe
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 27.07.2018, 11:00
Titel:
DerElch hat Folgendes geschrieben:
Hast du schon einmal probiert die X-Achse manuell auf 120 zu setzen?
Da es eine große Messreihe ist und auch schon einige Diagramme erstellt wurden, würde ich dies gerne vermeiden. Zudem würde ich gerne die Auswertung so variabel wie möglich gestalten.
Zitat:
Du springt zwar im debug rein und siehst das der Text auf 150 steht, hast dann immer gestoppt oder das Script fertig laufen lassen und am Ende bleibt er auf 150 stehen?
Ich hab den Debug-Punkt an der Stelle gesetzt kurz bevor er von der x-Skalierung von 120 auf 150 wechsel. Bisher habe ich es so umgangen, dass ich an der stelle durch den Punkt gestoppt hatte, einen Step weiter gegangen bin (Skalierung springt nun auf 0-150 um) und dann mit continue das skript zu ende laufen lassen habe. Ebenso wäre es möglich das Skript bis zum Ende durchzusteppen.
Warum setzt du nicht die Textbox erst nachdem du die Skalierung X auf 120 gesetzt hast?
In deinem Code Beispiel hast du nämlich keine Skalierung der X Achse? Woher soll die textbox wissen, dass du erst nachher die x-Achse formatierst? Für mich liest sich der Code so:
y-Achsen formatieren
Plotten
Text anhand von XY-Achse setzen
x-Achse formatiern
Meine persönliche Vorgehensweise:
Figure aufbauen und in einem Figure-Array speichern
Plotten und in einen line-Array speichern
Dann erst formatieren mittels for-Schleifen
Noch eine Meinung:
Ich bin kein Freund von text in Diagrammen.
Wäre es eine Möglichkeit diese Spanne zu plotten und dann in einer Legende darzustellen?
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 27.07.2018, 12:52
Titel:
Skalieren tue ich die x-Achse überhaupt nicht, diese wird von Matlab selbst skaliert. Die Textbox setze ich auch erst nach dem die Automatische Skalierung durch ist. Der Text wird erst ganz zum Schluss gesetzt. Das mit dem "der Code geht hier weiter" ist für den nächsten Subplot.
Das mit der Legende werde ich nun auch versuchen, hatte mich mit subplot und yyaxis nicht sonderlich ausgekannt, daher war das nur ein Notbehelf. Mal schauen, was ich daran verbessern kann. Danke für die Tipps.
Einstellungen und Berechtigungen
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
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.