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

10^-2 Y- Achsenbeschriftung

 

seackone
Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 30.10.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.12.2013, 19:52     Titel: 10^-2 Y- Achsenbeschriftung
  Antworten mit Zitat      
Hallo,
ich möchte die Y-Achse meines Plots gern manuel mit einer Beschriftung festlegen. Geht auch recht einfach mit yticklabel.
Nun hätte ich es gern so, dass es als exponentialschreibweise angezeigt wird.
Also 10^-2, 10^-3, 10^-4 usw... die -2, -3, -4 hochgestellt und ohne ^.
Wie bekomme ich das in ein string umgesetzt?

Gruß
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 15.12.2013, 21:11     Titel:
  Antworten mit Zitat      
Hallo,

wenn du eine logarithmische y-Achse wählst, sollte das automatisch passieren:
Code:


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
seackone
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 30.10.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.12.2013, 11:42     Titel:
  Antworten mit Zitat      
Hallo Harald,
genau das habe ich auch. Allerdings ist es so das ich eine Messwertereihe über 3 Tage habe. Falls diese erheblich variieren (also um eine 10ner Potenz oder so), passt das alles auch mit der logarithmischen Anzeige. Falls aber 3 Tage lange nahezu gar nix passiert, passt er die y-Achse automatisch an und das obwohl ich eigentlich die obere und untere Grenze mit ylim und die Schrittweite mit ytick festgelegt habe.
Daher war jetzt meine Idee das Ganze mit yticklabel irgendwie zu definieren, damit da gar nix mehr schief geht!

edit: habe für den Plot "plotyy" in Kombination mit "semilogy" verwendet, da ich 2 Messreihen habe. Die linke y-Achse habe ich dann mit "set(AX(1)....." definiert.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 16.12.2013, 13:11     Titel:
  Antworten mit Zitat      
Hallo,

wenn du ein kleines Beispiel, anhanddessen man das nachvollziehen und austesten kann, zur Verfügung stellen kannst, wäre das super.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
seackone
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 30.10.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.12.2013, 21:53     Titel:
  Antworten mit Zitat      
Hmm.. also ich befürchte gerade es hat doch nichts mit kleinen Werten zu tun. Leider weis ich auch gerade nicht so genau wie ich ein Beispiel erzeugen soll, ohne die Messwerte selbst zu verwenden, da unter 90 verschiedenen Messreihen das Problem lediglich maximal 2 mal auftritt.
Meine Messreihen tragen den Namen short und long, der Plot wird wie folgt erzeugt:

Code:
[AX,H1,H2] = plotyy ([1:length(long)],long,[1:length(short)],short,'semilogy');

% linke Achsenbezeichnung, Farbe, Grenzen, Schrittweite

set(get(AX(1),'ylabel'),'String','Watts m^-^2');
set(AX(1),'ycolor','black','ylim',[1.0E-9 1.0E-2]);
set(AX(1),'YTick',[1e-09 1e-08 1e-07 1e-06 1e-05 1e-04 1e-03 1e-02]);

% Grenzen, Farbe, Schrittweite und Beschriftung der rechten Achse

set(AX(2),'XTick',[],'YLim',([1.0E-9 1.0E-2]),'ycolor','black',...
   'YTick',[1e-09 5e-09 1e-08 5e-08 1e-07 5e-07 1e-06 5e-06 1e-05 5e-05 1e-04 5e-04 1e-03 5e-03 1e-02],...
   'Yticklabel',{' ';' ';' ';'  A';' ';'  B';' ';'  C';' ';'  M';' ';'  X';' ';' ';' '} );


Mit der rechten Achse ist alles in Ordnung, bei der linken tritt wie gesagt hin und wieder ein kleiner Fehler in der Beschriftung auf. Dazu habe ich 2 Bilder angehangen. Wenn man die Anzeige von unten nach oben liest, sieht es so aus als wenn sich alles nach dem 6ten Wert wiederholen würde. Daher war meine Idee die linke Y-Achse fest zu definieren. Hat jemand sowas schonmal gehabt?

Wie gesagt, ein Script wär vielleicht verständlicher aber da der Fehler nicht wirklich reproduzierbar erscheint, ist das gar nicht so einfach.

Gruß

Bildschirmfoto 2013-12-16 um 21.38.26.png
 Beschreibung:
Korrekte Y-Achse

Download
 Dateiname:  Bildschirmfoto 2013-12-16 um 21.38.26.png
 Dateigröße:  52.93 KB
 Heruntergeladen:  543 mal
Bildschirmfoto 2013-12-16 um 21.38.45.png
 Beschreibung:
Fehlerhafte Y-Achse

Download
 Dateiname:  Bildschirmfoto 2013-12-16 um 21.38.45.png
 Dateigröße:  53.38 KB
 Heruntergeladen:  562 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 16.12.2013, 23:05     Titel:
  Antworten mit Zitat      
Hallo,

geh mal mit dem Debugger Schritt für Schritt durch den Code und schaue, in welcher Zeile genau die merkwürdige Beschriftung der linken y-Achse passiert.

Falls das nicht hilft, bitte einen Beispieldatensatz für short und long in einer .mat-Datei abspeichern und dann gezippt anhängen. Vorzugsweise auch einen Beispieldatensatz, mit dem es klappt.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
seackone
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 30.10.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.12.2013, 16:26     Titel:
  Antworten mit Zitat      
Hi,
also ich bin mit dem Debugger durch..
Sobald ich einen anderen Tag auswähle, bei dem die Messwerte relativ konstant sind, erscheint meines Erachtens dieser Fehlern.
Wenn diese Messwertereihe mit:

Code:
[AX,H1,H2] = plotyy ([1:length(long)],long,[1:length(short)],short,'semilogy');


geplottet wird, kann man im Debug - Modus erkennen, dass er an dieser Stelle die linke Y-Achse zunächst automatisch Skaliert. Das sieht dann genau so aus wie bei dem Bild mit der fehlerhaften Anzeige. Zunächst sind es nur 4 oder 5 Beschriftungen um Mitte der Y-Achse. Wenn nachher die Definitionen erfolgen, wie die Achse eigentlich auszusehen hat, rückt der die Mitte nur nach unten und dupliziert noch einmal einige Werte nach oben hin. Warum er das macht ist mir absolut ein Rätsel. Denke wirklich am einfachsten wäre es die Achse selbst zu beschriften. Allerdings sollte es dann schon so aussehen wie eben im Bild mit dem der fehlerfreien Darstellung.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 17.12.2013, 20:07     Titel:
  Antworten mit Zitat      
Hallo,

du beschriftest ja quasi schon selber.
Um nachvollziehen zu können, wo das Problem liegt, und Abhilfe zu finden, bräuchte ich ein reproduzierbares Beispiel.

Das "Sobald ich einen anderen Tag auswähle" legt einen Zusammenhang mit der GUI nahe. Kannst du das Problem auch unabhängig von der GUI reproduzieren?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
seackone
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 30.10.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.12.2013, 21:27     Titel:
  Antworten mit Zitat      
Das Problem ist einfach, dass dieses Phänomen nur sehr selten auftritt. Lediglich bei 2 oder 3 Messreihen von 90, ändert sich die Beschriftung der Y-Achse.
Daher denke ich nicht das es irgendetwas mit den Pushbuttons zu tun hat.

Das wäre dann mein Befehl zum Plotten beider Messreihen:

Code:
[AX,H1,H2] = plotyy ([1:length(long)],long,[1:length(short)],short,'semilogy');

% linke Achsenbezeichnung, Farbe, Grenzen, Schrittweite

set(get(AX(1),'ylabel'),'String','Watts m^-^2');
set(AX(1),'ycolor','black','ylim',[1.0E-9 1.0E-2],'YTick',[1e-09 1e-08 1e-07 1e-06 1e-05 1e-04 1e-03 1e-02]);

% Grenzen, Farbe, Schrittweite und Beschriftung der rechten Achse

set(AX(2),'XTick',[],'YLim',([1.0E-9 1.0E-2]),'ycolor','black',...
   'YTick',[1e-09 5e-09 1e-08 5e-08 1e-07 5e-07 1e-06 5e-06 1e-05 5e-05 1e-04 5e-04 1e-03 5e-03 1e-02],...
   'Yticklabel',{' ';' ';' ';'  A';' ';'  B';' ';'  C';' ';'  M';' ';'  X';' ';' ';' '} );

% Farben der Messreihen

set(H1,'color','red');
set(H2,'color','blue');


In den Anhang habe ich jeweils eine short.mat und long.mat der funktionierenden und nicht funktionierenden Messreihe gepackt.
short_ok und long_ok gehören zusammen wie short_fail und long_fail.

Da bin ich ja wirklich mal gespannt. Very Happy

Vielen Dank und viele Grüße!

matlab_files.zip
 Beschreibung:
Messreihen

Download
 Dateiname:  matlab_files.zip
 Dateigröße:  7.65 KB
 Heruntergeladen:  310 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 17.12.2013, 22:20     Titel:
  Antworten mit Zitat      
Hallo,

wenn du die Zeile so abänderst, sollte das Problem behoben sein:
Code:
set(AX(1),'ycolor','black','ylim',[1.0E-9 1.0E-2],'YTick',[1e-09 1e-08 1e-07 1e-06 1e-05 1e-04 1e-03 1e-02],'YTickLabelMode', 'auto');


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
seackone
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 30.10.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.12.2013, 22:49     Titel:
  Antworten mit Zitat      
Vielen Dank Harald, jetzt klappt alles prächtig!
War die letzte kleine Unschönheit im gesamten Script, an dem ich nun schon einige Wochen arbeite.

Den Befehl kannte ich nun auch wieder nicht.
Was war denn nun das Problem? Für mich hat es den Eindruck gemacht, dass wenn eine Messreihe recht konstant ist (also innerhalb einer 10ner Potenz und das sind wie gesagt die wenigsten von den 90, die ich habe), er da irgendwelche Probleme hatte.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 17.12.2013, 22:59     Titel:
  Antworten mit Zitat      
Hallo,

was das Problem war, verstehe ich auch nicht.
Normal würde ich erwarten, dass das automatisch so gesetzt ist.
In dieser Situation scheint dem aber nicht so zu sein.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
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 - 2025 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.