2016-09-06 8 views
1

Ich versuche, eine Reihe von Daten in MATLAB zu plotten wie folgt:Achsenbeschriftung in MATLAB für hochpräzise Werte

ans = [8.1, 8.1+(10^-11) , 8.1+2*(10^-11) , 8.1+3*(10^-11)] 
labels = [8.1, 8.1+(10^-11) , 8.1+2*(10^-11) , 8.1+3*(10^-11)] 
plot([1,2,3,4],ans) 

Der obige Code erzeugt dies: -

plot

Das Problem ist, dass die Y-Achse für alle Datenpunkte denselben Wert/Nummer/Label anzeigt. Wie kann ich den Plot so einstellen, dass diese Beschriftungen genauer angezeigt werden? (zum Beispiel 8.1, 8.1+10^-11, ... oder 8.10000000001)

Ich versuchte den Befehl unten, aber es half nicht.

Kann jemand bitte helfen, diese Handlung zu verbessern, um die Unterschiede zwischen Datenpunkten widerzuspiegeln?

+1

Konnte das Problem mit MATLAB 2016a nicht reproduzieren. Ich habe die ersten drei Zeilen ausgeführt, die Sie am Anfang Ihrer Frage angegeben haben, und habe dieses Ergebnis erhalten: http://i.stack.imgur.com/fxRak.jpg (obwohl Werte, die Sie als "Label" angeben, nicht ausreichen irgendetwas hier). Welche Version von MATLAB verwenden Sie? –

+0

Vielen Dank für Ihren Kommentar. Ich verwende MATLAB 2014b. – Crimson

+0

Ich kann Ihr Problem reproduzieren, indem Sie diese Zeile ausführen: 'set (gca, 'YTickLabel', get (gca, 'YTick'));' Führen Sie Ihren Code immer mit dieser Zeile aus? Wenn ja, versuchen Sie, Ihren Code ohne es auszuführen –

Antwort

1

Sie können das Format der Y-Achsenbeschriftung in Matlab manuell steuern. So funktioniert der folgende Code auf den Versionen höher als Matlab2015b.

res = [8.1, 8.1+(10^-11) , 8.1+2*(10^-11) , 8.1+3*(10^-11)]; 
plot([1,2,3,4],res); 
ay=gca; 
ay.YAxis.TickLabelFormat = '%.12f'; 

Wenn Sie möchten, das Format der Y-Achsen-Tick-Beschriftungen auf Ihre Version manuell steuern, sollten Sie etwas Ähnliches wie

res = [8.1, 8.1+(10^-11) , 8.1+2*(10^-11) , 8.1+3*(10^-11)]; 
plot([1,2,3,4],res); 
ay=gca; 
currTicks=get(ay,'YTick'); 
for i=1:size(currTicks,2) 
    newTickLabels(i,1)=cellstr(sprintf('%.12f',currTicks(i))); 
end 
set(ay,'YTickLabel',newTickLabels); 
tun

ich nicht diesen Code auf Matlab2014b testen habe, aber ich sehe keine Funktionalität, die es (zumindest meines Wissens) fehlen würde.

In Matlab 2016a gibt es kein Problem "out of the box" durch Kopieren und Einfügen Ihres Codes.

+0

Danke für Ihre Antwort. Der Code, den Sie zum Steuern des Formats der Y-Achsen-Tick-Labels (für Matlab2014b-Benutzer) angegeben haben, funktioniert gut. – Crimson

Verwandte Themen