Frage

Tick Etiketten für Zecken größer als etwa 10'000, bis 1x10 ^ 4 zum Beispiel formatiert bekommen. Der exponentiellen Teils erscheint über den entsprechenden Achsen. Dieses Fehlverhalten wurde auch auf auf Matlab zentrale gut beschrieben, aber ohne ein Lösung.

Danke für Ihre Hilfe.


Der 'schnelle Trick'

set(gca, 'YTickLabel',get(gca,'YTick'))

funktionierte nicht, wenn auf bar3 angewandt, kann wie in der folgenden Abbildung zu sehen ist.

bar3 Grundstück versagt

War es hilfreich?

Lösung

Eine Möglichkeit, eine bessere Kontrolle über Strichbeschriftungen zu bekommen, und die exponentielle Formatierung zu vermeiden, ist die Verwendung TICK2TEXT aus dem File Exchange.

Hier ist ein Beispiel:

y = cool(7); %# define some data
ah = axes; %# create new axes and remember handle
bar3(ah,y*1E6,'detached'); %# create a 3D bar plot
tick2text(ah, 'ztickoffset' ,-1.15,'zformat', '%5.0f', 'axis','z') %# fix the tick labels

Andere Tipps

Bearbeiten

Nach dieser technischen Lösung , die empfohlene Weg, um die Strichbeschriftungen der Formatierung ist dies (Sie eine der Zahlenformatierung Funktionen wie num2str, sprintf, MAT2STR oder jede andere verwenden können ..)

y = cool(7);
bar(y(:,1)*1e6)
set(gca, 'YTickMode','manual')
set(gca, 'YTickLabel',num2str(get(gca,'YTick')'))

alt text

Allerdings scheint es einen Fehler zu sein, wenn es um die Z-Achse kommt (die Etiketten korrekt formatiert, aber das exponentielle Multiplizierer zeigt noch aus irgendeinem Grund!)

y = cool(7);
bar3(y*1e6, 'detached')
set(gca, 'ZTickMode','manual')
set(gca, 'ZTickLabel',num2str(get(gca,'ZTick')'))

alt text

Schließlich gibt es noch eine andere Abhilfe, wo wir die Tick-Beschriftungen mit Textobjekten ersetzen (siehe diese technische Lösung als Referenz):

y = cool(7);
bar3(y*1e6, 'detached')
offset = 0.25; Xl=get(gca,'XLim'); Yl=get(gca,'YLim'); Zt=get(gca,'ZTick');
t = text(Xl(ones(size(Zt))),Yl(ones(size(Zt)))-offset,Zt, num2str(Zt')); %#'
set(t, 'HorizontalAlignment','right', 'VerticalAlignment','Middle')
set(gca, 'ZTickLabel','')

alt text

Ein weiterer Trick können Sie versuchen, Ihre Daten zu skalieren, bevor Sie es zeichnen, dann die Strichbeschriftungen skalieren, damit es scheint, dass es in einem anderen Maßstab aufgetragen ist. Sie können die Funktion LOG10 Ihnen helfen, automatisch einen entsprechenden Skalierungsfaktor auf dem aufgetragenen Werte basierend berechnen. Vorausgesetzt, dass Sie Ihre Daten in Variablen x und y haben, können Sie versuchen, diese:

scale = 10^floor(log10(max(y)));  %# Compute a scaling factor
plot(x,y./scale);                 %# Plot the scaled data
yTicks = get(gca,'YTick');        %# Get the current tick values
set(gca,'YTickLabel',num2str(scale.*yTicks(:),'%.2f'));  %# Change the labels
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top