Удаление научной нотации на ярлыке метки Матлаба

Я сделал сюжет в Matlab, используя:

hold on
plot(t1,Dx1,'r')
xlabel('t (ps)')
ylabel('Deviation of coordinate from initial coordinate (Å)')
plot(t1,Dy1,'g')
plot(t1,Dz1,'b')
hold off

Однако метки меток на оси y генерируются в научной нотации:

Scientific Notation on y-axis

Есть ли способ удалить научную нотацию и просто иметь ярлыки y от -0.0025 до 0.0005? Спасибо!

Ответ 1

Вы можете попытаться вручную установить метки меток самостоятельно, используя sprintf:

yt = get(gca,'YTick');
set(gca,'YTickLabel', sprintf('%.4f|',yt))

Ответ 2

Я также боролся с тем, чтобы мои сюжетные топоры отображались в фиксированном понятии вместо научной нотации. Самая неприятная часть для меня заключалась в том, что ярлык "x10 ^ 4" останется на краю окна сюжета даже после того, как я присвоил метки меток вручную фиксированной нотации. Наконец, благодаря сообщению выше, я отслеживал проблему с помощью средства визуализации фигур. Я использовал OpenGL. Когда я перешел на "zbuffer", метка "x10 ^ 4" исчезнет, ​​когда я вручную reset отметьте метки. Здесь примерный код, который присваивает формат "###, ###. 0" метокам оси y и даже динамически обновляет y-метки при масштабировании/панорамировании и т.д. Благодаря двум полезным функциям, которые я нашел на Matlab Обмен файлами. Место для поиска двух других функций включено в качестве комментариев ниже примерной функции.

function []=TickFixExample()

figure %this one works
myRenderer='zbuffer';
set(gcf,'Renderer', myRenderer); 
axesh = axes();
set(gca,'YLim',[20000 20100]);
title(myRenderer)
ticklabelformat(gca,'y','###,###.0');

figure %this one doesn’t work
myRenderer='OpenGL';
set(gcf,'Renderer', myRenderer); 
axesh = axes();
set(gca,'YLim',[20000 20100]);
title(myRenderer)
ticklabelformat(gca,'y','###,###.0');

function ticklabelformat (hAxes, axName, format) by Y. Altman, можно найти по адресу: http://www.mathworks.com/matlabcentral/fileexchange/36254-ticklabelformat-set-a-dynamic-format-of-axes-tick-labels или googling 'ticklabelformat matlab' Я немного изменил его, изменив строку 105 следующим образом:

 tickLabels = arrayfun(@(x)(FormatNumberScalarInputStrOutput`(x,format)),tickValues,'UniformOutput',false);`

вместо версии Альтмана:

tickLabels = arrayfun(@(x)(sprintf(format,x)),tickValues,'UniformOutput',false);

это изменение обеспечивает тысячу функций разделителя запятой функция y = NumberFormatter (Числа, FormatPattern) С. Lienhard, также на файлообменнике Matlab. Моя модифицированная версия кода Lienhard приведенный ниже:

function y = FormatNumberScalarInputStrOutput(Number ,FormatPattern)

 % adapted 12-2012 by D. Bourgoyne from NUMBERFORMATTER by S. Lienhard
% 
%   The pound sign (#) denotes a digit, the comma is a placeholder for the
%   grouping separator, and the period is a placeholder for the decimal
%   separator.
%   The pattern specifies leading and trailing zeros, because the 0
%   character is used instead of the pound sign (#).
% 
%   Examples:
%   NumberFormatter(rand(5),'0.000')
%   NumberFormatter(rand(5)*100,'###,###.000') 
import java.text.*
v = DecimalFormat(FormatPattern);
y = char(v.format(Number));

Ответ 3

Попробуйте добавить это после создания осей:

ax = gca;
ax.YAxis.Exponent = 0;

Вот пример:

x = 0:0.1:10;
y = 1000*x.^2;

%Plot with default notation:

subplot(1,2,1)
plot(x,y)


%Plot without exponent:

subplot(1,2,2)
plot(x,y)
ax = gca
ax.YAxis.Exponent = 0;

Ответ 4

Вам необходимо написать следующее:

set(gcf, 'renderer', 'zbuffer')

Ответ 5

Этот код можно использовать для управления тиком меток по оси y. Этот код исходит из ticks_format.m.

% Установите предпочтительный формат галочки здесь.

y_formatstring = '%3.4f';

% Здесь код.

ytick = get(gca, 'ytick');
for i = 1:length(ytick)
    yticklabel{i} = sprintf(y_formatstring, ytick(i));
end
set(gca, 'yticklabel', yticklabel)