MATLAB: верхний индекс метки оси - PullRequest
0 голосов
/ 08 февраля 2012

Журнальные графики в MATLAB помечают оси только в позициях 10 ^ x, где x - целое число (например, 10 ^ 4, 10 ^ 5, 10 ^ 6).Иногда могут потребоваться ярлыки на промежуточных сайтах или мелкие отметки (например, 5 * 10 ^ 4, 5 * 10 ^ 5).

Чтобы разместить такие ярлыки, я прибегнул к использованию textкоманда с соответствующими x и y координатами.Однако шрифт верхнего индекса в текстовой команде отличается от шрифта в метке оси по умолчанию.Это верно даже в том случае, если шрифт для метки оси и текста установлен следующим образом:

set(0,'DefaultAxesFontName','Helvetica');
set(0,'DefaultTextFontName','Helvetica');
set(0,'DefaultTextFontSize',15);
set(0,'DefaultAxesFontSize',15);

В частности, размер надстрочного шрифта кажется меньшим в метке оси по умолчанию по сравнению с текстомкоробка.Есть ли способ устранить это несоответствие, чтобы шрифт в текстовом поле и шрифт в метке оси были идентичными (включая верхние индексы)?

1 Ответ

1 голос
/ 08 февраля 2012

Вы можете установить точки осей x и y следующим образом:

figure
set(gca,'xtick',10.^[0.5:0.5:3])
set(gca,'ytick',10.^[0.5:0.5:3])

дает вам шаги в 0,5 log 10. Существует также атрибут с именем xticklabel

РЕДАКТИРОВАТЬ: Вотполный пример с использованием произвольных меток, научная запись:

semilogx([2:100:10e4],[2:100:10e4])
axis([2 2e4 2 10000])
xticks=10.^[0.5:0.5:10]';
al={};
for i = 1:length(xticks)
       tmps=sprintf("%1.1e}",xticks(i));
       tmps=strrep(tmps,"e","x10^{");  # replace e with x10^{
       tmps=strrep(tmps,"+0","");      # +0 does not add any info
       tmps=strrep(tmps,"-0","-");     # -0123 into -123 
       tmps=strrep(tmps,"+","");       # + does not add any info
       al(i)=tmps;
end
set(gca,'xtick',xticks);
set(gca,'xticklabel',al)
...