xticks xtick ticks name matlab plot labels number-formatting

matlab - xtick - Suprimir el formato exponencial en ticks de figura



xtick matlab (3)

Otro truco que puedes probar es escalar tus datos antes de trazarlos, luego escala las etiquetas para hacer que parezca que está trazado en una escala diferente. Puede usar la función LOG10 para ayudarlo a calcular automáticamente un factor de escala apropiado en función de sus valores trazados. Suponiendo que tiene sus datos en las variables y , puede intentar esto:

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

Marque las etiquetas para ticks mayores de aproximadamente 10''000, obtenga el formato de 1x10 ^ 4 por ejemplo. Mientras que la parte exponencial aparece arriba de los ejes correspondientes. Esta mala conducta también se ha descrito en el matlab central , pero sin solución.

Gracias por tu ayuda.

El ''truco rápido''

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

no funcionó cuando se aplicó a bar3, como se puede ver en la siguiente figura.


Una forma de tener un mejor control sobre las etiquetas de ticks, y para evitar el formato exponencial, es usar TICK2TEXT desde File Exchange.

Aquí hay un ejemplo:

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


EDITAR

De acuerdo con esta página de solución técnica , la forma recomendada de formatear las etiquetas de ticks es esta (puede usar cualquiera de las funciones de formato de números como NUM2STR, SPRINTF, MAT2STR o cualquier otra).

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

Sin embargo, parece haber un error cuando se trata del eje Z (las etiquetas están formateadas correctamente, ¡pero el multiplicador exponencial todavía se muestra por alguna razón!)

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

Finalmente, hay otra solución alternativa en la que reemplazamos las etiquetas de tic con objetos de texto (consulte esta página de solución técnica como referencia):

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'','''')