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

Zahlenformat der Achsen

 

Dennis

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.04.2008, 10:15     Titel: Zahlenformat der Achsen
  Antworten mit Zitat      
Hallo,

ich habe grad ein kleines Problem und hoffe, dass Ihr mir helfen könnt.

Ich habe ein Diagramm, bei dem die x-Werte bis ca 35000 gehen und die y-Werte bis ca. 25000.
Wenn ich mir diese plotte erzeugt Matlab automatisch bei der X-und Y-Achse-Beschriftung ein exponential Zahlenformat, also 1*10^4, usw.

Ich hätte allerdings gerne die Zahlen als integer da stehen (anstelle 1*10^4, 10000).
Wo kann ich das denn einstellen??

Vielen Dank und viele grüße
Dennis


Bijick
Ehrenmitglied

Ehrenmitglied



Beiträge: 914
Anmeldedatum: 18.06.07
Wohnort: Nürnberg
Version: R2006b, R2008b
     Beitrag Verfasst am: 16.04.2008, 16:22     Titel:
  Antworten mit Zitat      
Hallo Dennis,

das geht über die Eigenschaft XTickLabel bzw. YTickLabel der axes, also etwa

Code:
X_strings = cellstr(num2str((0:5000:35000)'));
set(gca,'XTickLabel',s_cell);
 


Herzliche Grüße
Bijick
_________________

>> why
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Michaela
Forum-Century

Forum-Century


Beiträge: 239
Anmeldedatum: 12.07.07
Wohnort: ---
Version: bis 2007b
     Beitrag Verfasst am: 16.04.2008, 19:56     Titel:
  Antworten mit Zitat      
Danach sollte man das figure aber nicht mehr verändern, also insbesondere kein zoom oder grössenänderung - den sonst stimmen die label nicht mehr. Leider kenne ich aber auch keine bessere Lösung Sad
_________________

---------------------------------------------------------------
Leider habe ich daheim zwar Internet aber kein Matlab - daher sind alle Syntaxbeispiele circa Angaben.....
Private Nachricht senden Benutzer-Profile anzeigen
 
Dennis

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.04.2008, 16:04     Titel:
  Antworten mit Zitat      
Vielen Dank für die Infos,

dass mit den Ticklabels hat funktioniert, das man es danach das Diagramm nicht mehr verändern sollte ist zwar ärgerlich, aber für mich in diesem Fall nicht wichtig.

Nochmals danke für die schnellen Infos...

Gruss Dennis
 
cosypanther
Forum-Newbie

Forum-Newbie


Beiträge: 1
Anmeldedatum: 18.07.14
Wohnort: Deutschland
Version: R2014a
     Beitrag Verfasst am: 18.07.2014, 14:04     Titel:
  Antworten mit Zitat      
ein kleiner Nachtrag für weitere Sucher:

Code:
yticks=get(gca,'YTick');
yticks_strings = cellstr(num2str(yticks'));
set(gca,'YTickLabel',yticks_strings );


So wird aus den Achsenbeschriftung in a*10^x - Form direkt die gleiche Beschriftung im ausgeschriebenen Zahlenformat.
Private Nachricht senden Benutzer-Profile anzeigen
 
MaraBelle
Forum-Anfänger

Forum-Anfänger


Beiträge: 36
Anmeldedatum: 24.02.15
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 18.05.2015, 16:30     Titel:
  Antworten mit Zitat      
Hallo Zusammen!
Der Post ist schon eine Weile her, aber ich habe das selbse Problem. Es gibt zwar viele Lösungen für das Problem "wissenschaftliche Darstellung in Dezimalzahlen ändern bzw. Format der X/Y-Achse ändern" aber irgendwie gefällt mir keine richtig gut, weil alle irgendwie hingemurkst sind und sobald man irgendwas ändert oder zoomt, passt es nicht mehr.
Kann ich nicht MATLAB davon abhalten, überhaupt diese wissenschaftliche Darstellung zu wählen? Ich habe irgendwo gelesen, dass es bei Version 2007 (noch) nicht möglich ist, heißt das, bei den neueren geht es? (Ich habe Version 2015a).
Vielleicht irgendsowas in der Art wie:
Code:
Set(gca,'YTickLabel', 'scientificformat','false');

Toll wäre es auch, wenn das Tausendertrennzeichen angezeigt werden könnte, wie z.B.:
Code:
Set(gca,'YTickLabel','Format', '###,###.000');

oder so...
Gibt es da vielleicht inzwischen was?
Da bekommt man immer gesagt "Excel ist kein wissenschaftliches Programm!" aber da kann ich das Format wenigsten so anzeigen lassen, wie ICH es will und nicht wie irgendein Programm denkt, dass es am praktischsten ist. grrrmpf...
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: 18.05.2015, 18:35     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
weil alle irgendwie hingemurkst sind und sobald man irgendwas ändert oder zoomt, passt es nicht mehr.

Die Auffassungen von Murks dürften sehr verschieden sein. Ich finde es z.B. absoluten Murks, wenn man in Excel irgendwo Einstellungen vornimmt, die später wenn überhaupt nur schwer nachvollziehbar sind. Die Vorschläge hier finde ich dagegen sinnvoll und nachvollziehbar.

Was genau heißt denn "sobald man irgendetwas ändert"?

Wenn es um das Zoomen geht, siehe z.B. hier:
http://de.mathworks.com/help/matlab.....hlight=actionpostcallback

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
MaraBelle
Forum-Anfänger

Forum-Anfänger


Beiträge: 36
Anmeldedatum: 24.02.15
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 19.05.2015, 08:43     Titel:
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:

Ich finde es z.B. absoluten Murks, wenn man in Excel irgendwo Einstellungen vornimmt, die später wenn überhaupt nur schwer nachvollziehbar sind.
Was genau heißt denn "sobald man irgendetwas ändert"?
Wenn es um das Zoomen geht, siehe z.B. hier:
http://de.mathworks.com/help/matlab.....hlight=actionpostcallback


Wenn ich in Excel bei der Achsenbeschriftung exponentiell einstelle, dann wird es auch in der exponentiellen Darstellung angezeigt. Wenn ich einstelle, dass es "normal" (nicht exponentiell) dargestellt werden soll, dann macht es das auch. Wenn ich einstelle, dass es als Dezimaltrennzeichen Kommas (oder Punkte) und als Tausendertrennzeichen Punkte (oder entspr. Kommas) anzeigen soll, dann tut es das auch. Ich vestehe nicht, was hier nicht nachvollziehbar sein soll. Man kann es jederzeit wieder ändern, wie man will... Bei MATLAB muss ich erst über get die (aktuellen) Achsenbeschriftungswerte abfragen, umwandeln in einen String und kann dann erst keine Dezimal und Tausendertrennzeichen angeben (oder doch? evtl. über sprintf - aber da bleibt das eigentliche Problem, die nicht-Flexibilität, wenn man was ändert trotzdem bestehen).
Zu deiner Frage: Wenn ich das Maximum der Achse z.B. ändere, das Fenster maximiere oder hineinzoome bleiben ja die neuen, aufgezwungenen String-Beschriftungen bestehen, obwohl die eigentlichen Zahlen sich ändern. Dann kommt z.B. sowas wie im Anhang raus.
Und rückgängig machen kann man das ganze dann auch nicht (oder auch nur wieder ganz umständlich, wenn man das get-set Prozedere nochmal durchläuft).
Meiner Meinung nach ist das Murks! Aber darüber kann man sich sicherlich streiten.
Wieso kann ich MATLAB nicht einfach vorgeben, welches Format die Zahlen haben sollen und alles andere (Achsenaufteilung, Hilfsbeschriftungen) kann es von mir aus selbst entscheiden, so lange ich kein xlim oder ylim vorgebe.
Bei Datum oder Duration als x-Achse geht das doch auch:
Code:
plot(t,y,'DatetimeTickFormat','dd-MMM-yyyy')
plot(t,y,'DurationTickFormat','mm:ss')


ZoomIn.PNG
 Beschreibung:

Download
 Dateiname:  ZoomIn.PNG
 Dateigröße:  23.51 KB
 Heruntergeladen:  561 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: 19.05.2015, 09:45     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Ich vestehe nicht, was hier nicht nachvollziehbar sein soll.

Wenn ich eine Excel-Tabelle aufmache, sehe ich nicht, welche besonderen Einstellungen vorgenommen wurden und wie. Ob einen das jetzt stört oder nicht, ist wohl jedem selbst überlassen.

Zitat:
aber da bleibt das eigentliche Problem, die nicht-Flexibilität, wenn man was ändert trotzdem bestehen).
Zu deiner Frage: Wenn ich das Maximum der Achse z.B. ändere, das Fenster maximiere oder hineinzoome bleiben ja die neuen, aufgezwungenen String-Beschriftungen bestehen, obwohl die eigentlichen Zahlen sich ändern. Dann kommt z.B. sowas wie im Anhang raus.

Den ActionPostCallback hatte ich ja schon erwähnt.
Was das Verändern der Größe von Figures angeht, gibt es noch die ResizeFcn.

Ansonsten kann ich nur empfehlen, bei Verbesserungsvorschlägen direkt den Kontakt zu MathWorks zu suchen, z.B. über den Technischen Support.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 19.05.2015, 10:09     Titel:
  Antworten mit Zitat      
Hallo MaraBelle,

Dies ist ja ein Matlab-Forum und Diskussionen über Excel treffen nicht ganz das Thema.

Trotzdem diskutiere ich mal ein bisschen mit. :-)

Zitat:
Wenn ich in Excel bei der Achsenbeschriftung exponentiell einstelle, dann wird es auch in der exponentiellen Darstellung angezeigt.

Das ist ja auch naheliegend und z.B. bei Matlab's SEMILOGX ganz genau so.

Zitat:
Wenn ich einstelle, dass es als Dezimaltrennzeichen Kommas (oder Punkte) und als Tausendertrennzeichen Punkte (oder entspr. Kommas) anzeigen soll, dann tut es das auch.

Dies stellt man nicht in Excel ein, sondern im Betriebssystem. Und das führt immer wieder zu scheußlichen Murkserein, wenn man nämlich aus Excel ein CSV-File exportiert und keine der üblichen Programmiersprachen oder Programme zur numerischen Berechnung solche Files mehr einlesen kann, wenn ein Komma als Dezimal-Trenner verwendet wird. Genauso stolpert Excel über Text-Files mit Dezimal-Punkten, wenn das Deutsche-Gebiets-Schema eingestellt ist. Furchtbar!

Zitat:
Zu deiner Frage: Wenn ich das Maximum der Achse z.B. ändere, das Fenster maximiere oder hineinzoome bleiben ja die neuen, aufgezwungenen String-Beschriftungen bestehen, obwohl die eigentlichen Zahlen sich ändern.

Das stimmt. Man muss schon eine Update-Funktion für die Tick-Labels programmieren, wenn sie sich ändern sollen. Das könnte man wirklich mal automatisieren, aber im FileExchange von Matlab findet man bereits einige passende Tools genau dafür.

Zitat:
Meiner Meinung nach ist das Murks! Aber darüber kann man sich sicherlich streiten.

Und wenn man sich darüber streiten möchte, dann nicht in diesem Forum. Wir lösen hier nur Probleme.

Viele Grüße, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
MaraBelle
Forum-Anfänger

Forum-Anfänger


Beiträge: 36
Anmeldedatum: 24.02.15
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 19.05.2015, 10:44     Titel:
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:

Den ActionPostCallback hatte ich ja schon erwähnt.
Was das Verändern der Größe von Figures angeht, gibt es noch die ResizeFcn.

Ansonsten kann ich nur empfehlen, bei Verbesserungsvorschlägen direkt den Kontakt zu MathWorks zu suchen, z.B. über den Technischen Support.

Ok, jetzt verstehe ich auch, worauf du mich mit dem Link hinweisen wolltest. Ich habe nicht verstanden, wie es mir weiterhelfen soll, den Zoom an oder auszuschalten (Überschrift "Turn zooming on or off ").
Das mit dem ActionPostCallback kam erst weiter unten und ich habe zuerst auch nicht verstenden, was da passiert bzw. wie mir das helfen kann, habe aber inzwischen einen Post dazu gefunden. Das ist natürlich eleganter und angenehmer über die Callback Funktion abzufragen, ob gezoomt wurde und dann zu aktualisieren (wenn ich das richtig verstanden habe) als jedes mal selbst händisch über get und set wieder aktualisieren zu müssen. ResizeFcn schau ich mir auch mal noch an.

Den Vorschlag, die Achsenbeschriftungen direkt skalieren zu können, ohne workaraound werde ich auf jeden Fall an Mathworks schicken.
Private Nachricht senden Benutzer-Profile anzeigen
 
MaraBelle
Forum-Anfänger

Forum-Anfänger


Beiträge: 36
Anmeldedatum: 24.02.15
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 19.05.2015, 10:59     Titel:
  Antworten mit Zitat      
Jan S hat Folgendes geschrieben:


Zitat:
Wenn ich einstelle, dass es als Dezimaltrennzeichen Kommas (oder Punkte) und als Tausendertrennzeichen Punkte (oder entspr. Kommas) anzeigen soll, dann tut es das auch.

Dies stellt man nicht in Excel ein, sondern im Betriebssystem. Und das führt immer wieder zu scheußlichen Murkserein, wenn man nämlich aus Excel ein CSV-File exportiert und keine der üblichen Programmiersprachen oder Programme zur numerischen Berechnung solche Files mehr einlesen kann, wenn ein Komma als Dezimal-Trenner verwendet wird. Genauso stolpert Excel über Text-Files mit Dezimal-Punkten, wenn das Deutsche-Gebiets-Schema eingestellt ist. Furchtbar!

Da gebe ich dir vollkommen Recht! Ich habe daher immer "." als Dezimaltrennzeichen und "," als Tausendertrennzeichen eingestellt. Allerdings waren die in Klammern gesetzten Alternativen nur gedacht, wenn man es von vorneherein andersrum (im Betriebssystem bzw. in den Excel-Optionen) eingestellt hat, der Vollständigkeit halber. Ich wollte eigentlich darauf hinaus, dass man die Dezimal- und Tausendertrennzeichen in der Beschriftung anzeigen lassen kann. Inzwischen habe ich gelesen, dass das in MATLAB auch mit sprintf geht, wenn ich das richtig verstanden habe?!
Aber nun genug von Excel, ist ja wie von euch schon betont ein MATLAB Forum und nicht Excel. Wollte nur wissen, ob es nicht was einfacheres als diesen workaraound gibt für das was ich im Vergleich zu Excel vermisse. Dem scheint aber nicht so.

Jan S hat Folgendes geschrieben:

Und wenn man sich darüber streiten möchte, dann nicht in diesem Forum. Wir lösen hier nur Probleme.


Ich wollte eigentlich keinen Streit suchen, sorry... Zurück zu meinem eigentlichen Problem:
Flexibilität der formatierten Achsenbeschriftungen nach Änderungen durch Zoom etc. und Darstellung der Dezimal- und Tausendertrennzeichen.
Dieses versuche ich jetzt mit den von euch genannten Funtionen
ActionPostCallback und mit sprintf zu lösen. Wenn ihr dazu noch einen Tipp habt, sehr gerne.
Vielen Dank auf jeden Fall für eure Antworten!
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 19.05.2015, 13:52     Titel:
  Antworten mit Zitat      
Hallo MaraBelle,

Suche mal im FileExchange: http://www.mathworks.com/matlabcent.....3&term=axes+tick+zoom

Viele Grüße, Jan
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: 19.05.2015, 14:17     Titel:
  Antworten mit Zitat      
Hallo Jan,

ich hatte auch schon geschaut, aber zunächst nichts gutes gefunden. Bei deiner Suche scheint mir gerade der dritte Treffer (von Yair Altman) sehr geeignet. Ich habe es gerade mit zoom, pan, verziehen, vergrößern, verkleinern probiert und bekomme es nicht kaputt. Nicht dass ich an Yair gezweifelt hätte :)

Code:
plot(1:10, (1:10).^2)
ticklabelformat(gca, 'xy', '%.2f')


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
MaraBelle
Forum-Anfänger

Forum-Anfänger


Beiträge: 36
Anmeldedatum: 24.02.15
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 19.05.2015, 14:25     Titel:
  Antworten mit Zitat      
Den dritten Eintrag schaue ich mir gerade auch genauer an.
Super, vielen Dank Jan und 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.