Verfasst am: 24.07.2012, 14:20
Titel: Problem mit Darstellung der Achsen-Skala
Hallo zusammen,
ich habe folgendes Problem beim Plotten: Ich erstelle aus einer Messreihe 2 subplots mit den relevanten Ausschnitten (Siehe Anhang).
Was mich dabei jetzt stört, ist dass die beiden y-Achsen unterschiedlich beschriftet sind, also dass die linke als Dezimalzahl angegeben wird, die rechte als ganzzahlige Zehnerpotenzen.
Jetzt hätte ich gerne, dass beide Achsen gleich beschriftet sind, idealerweise mit 10er-Potenzen.
Mir aufgefallen, dass MATLAB anscheinend ab einem Wert von 0.01 aufwärts die y-Achsenwerte automatisch als Dezimalzahlen darstellt. Gibt es eine Möglichkeit diesen Wert zu ändern?
1000 Dank für die schnelle Antwort, DSP!
Leider löst das nicht mein Problem. Oder aber ich bin zu doof? Dann bitte ich um Aufklärung.
Vielleicht habe ich mich auch missverständlich ausgedrückt? Ich möchte, dass die y-Achse in der Form x*10^-3 beschriftet ist und nicht mit 0.00x. (siehe dazu die beiden y-Achsen im Bild)
Um vielleicht noch etwas vorweg zu nehmen: Ich könnte die Y-Achse mit mV statt Volt beschriften und meine Amplitudenwerte mit 1000 multiplizieren. Das möchte ich aber nicht, da ich ganz unterschiedliche Messwerte habe. mVolts messe ich nur in einem ganz speziellen Fall, ansonsten liegen meine Spitzenwerte bei über 1V. (dann würde meine y-Achse mit z.B. 1500 mV beschriftet sein) Um das ganze einheitlich zu halten, würde ich gerne alle plots in Volt haben. Das macht es mir dann auch einfacher mein Skript auf alle (und es sind viele) Messreihen anzuwenden.
bestimme ich lediglich die Darstellung z.B. im Command Window. Die Darstellung von Zahlen in plots wird dadurch nicht beeinflusst. Bei der Gelegenheit nochmal: Im Prinzip möchte ich also eigentlich nur
für die Darstellung der Zahlenwerte auf der y-Achse im Plot anwenden, wenn es denn soetwas geben würde.
@Jan S: In der vierten Zeile sind es 2 Klammern zu viel. Außerdem Y nicht X. Trotzdem ist es das nicht. Abgesehen davon müsste ich dann ja für jede Messreihe die Werte anpassen.
Ab einem Wert von 0.01 (rechter plot) ändert MATLAB die Formatierung der y-Achsenwerte. Dies würde ich gerne unterbinden, idealerweise aber den Wert ändern ab welchem MATLAB dies tut.
eine Möglichkeit die exponentielle Achsenbeschriftung zu erzwingen habe ich nicht.
Immer die Dezimaldarstellung zu bekommen ist über die Vorgabe der YTicklabel möglich, siehe Beispiel unten.
Ich habe alleine mit diesem Thread schon sehr viel lernen können bzgl. Achsendarstellung/-skalierung/-beschriftung, wie auch immer das sich schimpft. Das ist auf jeden Fall schon mal viel wert.
Mein Problem besteht immer noch. Ich wollte genau das Gegenteil tun, nämlich die exponentielle Achsenbeschriftung zu erzwingen. Ich wundere mich, ob das so abwegig ist, dass das noch keiner gemacht hat, bzw. dass dies in MATLAB nicht möglich wäre. Auch kann ich im Netz dazu nichts finden...
Ich verstehe nicht, weshalb Dir meine Vorschläge nicht weiterhelfen.
Zitat:
Abgesehen davon müsste ich dann ja für jede Messreihe die Werte anpassen.
Wo wäre hier das Problem, solange man dies nur einmal programmiert und Matlab dies dann automatisch durchführen läßt.
Bedeutet "ich kann nichts im Netz dazu finden", dass Dir die beiden Beispiele aus der FEX und das von Yair nicht weiter helfen. Falls ja: warum nicht?
Zudem kann ich mir keine Formatierung vorstellen, die nicht mit http://undocumentedmatlab.com/blog/.....g-axes-tick-labels-format zu verwirklichen wäre. Man könnte so die Ticks sogar per Text2Speech vorlesen lassen, und das sogar dynamisch während des Zoomens!
mit dem Code den du gepostet hast funktioniert es leider nicht.
Die Achsenbeschriftung verschwindet komplett.
Passe ich die Werte in dieser Zeile:
Zitat:
ticks = linspace(1, 10, 20);
an, wird die Achse zwar dann beschriftet, jedoch weiterhin in Dezimaldarstellung und nicht exponentiell. (zumal ich mit diesem Spacing nur ungerade Werte erzeugen würde!?) Weiterhin ist jede Unterteilung mit "0.00" beschriftet (zweite Zeile-> '%4.2f'). Ändere ich dies auf 4 Dezimalstellen, bin ich genauso weit wie vorher, nur umständlicher.
In einer Messreihe, in welcher ich als Spitzenwert z.B. 150mV habe, muss ich dann doch die Werte in o.g. Zeile wiederum anpassen. Ich sehe also nicht, dass oder wie das automatisch geschieht. Mache ich etwas falsch? Dann klärt mich bitte auf.
Mit der Funktion format_ticks aus den ersten beiden Links komme ich nicht klar. Ich sehe nicht wie ich diese anpassen könnte um mein Problem zu lösen. (Ich hoffe ich habe anfangs erwähnt, dass ich kein guter Programmierer bin!)
Den letzten Link (der von Yair) muss ich gestehen, habe ich wohl irgendwie übersehen/vergessen. Diesen werde ich mir gleich morgen früh vornehmen, in der Hoffnung, dass ich hinterher schlauer bin und mich nicht weiter ärgern muss.
Da ich das obere ylim aus meinen Messdaten gewinne, kann ich diesen Code über eine Abfrage für Werte unter 1 Volt durchlaufen, für größere Werte überspringen. Genau das was ich wollte.
Beste Grüße
Alex
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.