WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Text in Plot ausgerichtet mit XPos

 

Labbe

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.07.2018, 09:49     Titel: Text in Plot ausgerichtet mit XPos
  Antworten mit Zitat      
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.2 1];
    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;
   
    %textbox
    XPos = get(gca,'XLim');
    YPos = get(gca,'YLim');
    text(XPos(1,2)/2,(YPos(1,2)-YPos(1,1))*0.96+YPos(1,1),strcat({'resistance averraged over '},num2str(spanne),' values'),'FontSize',FS,'HorizontalAlignment','center','BackgroundColor',[1 1 1]);

% der Code geht hier noch weiter...
   
 


DerElch
Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 18.07.18
Wohnort: Wien
Version: 2017b
     Beitrag Verfasst am: 27.07.2018, 10:00     Titel:
  Antworten mit Zitat      
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?
Private Nachricht senden Benutzer-Profile anzeigen
 
Labbe

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.07.2018, 12:00     Titel:
  Antworten mit Zitat      
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.
 
DerElch
Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 18.07.18
Wohnort: Wien
Version: 2017b
     Beitrag Verfasst am: 27.07.2018, 12:19     Titel:
  Antworten mit Zitat      
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?
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.07.2018, 13:52     Titel:
  Antworten mit Zitat      
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.
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.