Я рисовал тепловые карты с метками в Matlab, в основном используя функции imagesc для рисования тепловой карты и xticklabel_rotate для вращения меток xtick.( см. Здесь для xticklabel_rotate ).Обычно это работает хорошо.Но сегодня я столкнулся с некоторой проблемой, которая, по-видимому, была вызвана xticklabel_rotate (или, возможно, дескриптором Matlab text , используемым xticklabel_rotate?)
Чтобы проиллюстрировать эту проблему, ниже я печатаю свой код ирезультаты, сгенерированные из кода (в основном, он случайным образом генерирует нормально распределенную матрицу данных, рисует тепловую карту для данных с использованием imagesc, рисует ее метки сверху и справа от оси, а затем вращает xticklabels):
function debug_xticklabelRotate(numX, numY, axisFontsize)
data = randn(numY, numX);
imagesc(data);
colormap(jet);
box on
set(gca, 'ticklength', [0,0]);
set(gca, 'xminortick', 'off', 'yminortick', 'off');
set(gca, 'XAxisLocation', 'top');
set(gca, 'YAxisLocation', 'right');
set(gca,'FontSize', axisFontsize);
axis image
set(gca, 'Xtick', 1 : numX);
htext = xticklabel_rotate([],90, [], 'fontsize', axisFontsize);
set(gca, 'YTick', 1 : numY);
end
Задача 1 : я вызвал вышеупомянутую функцию с параметрами как
debug_xticklabelRotate(40, 100, .5);
, чтобы получить выходное изображение ниже (для экономии места я обрезал изображение ипоказывать только верхние несколько строк):
http://i52.tinypic.com/smazoj.jpg
Обратите внимание, что ошибка заключается в том, что в результате вызова xticklabel_rotate ни правая часть поля рисунка, ни символы yticklabels не отображаются.нарисован.
Проблема 2 : Когда я вызываю вышеупомянутую функцию с параметрами как
debug_xticklabelRotate(40, 200, .5); % only numY is changed from 100 to 200
, выводимое изображение показано ниже (снова, чтобы сэкономить место, я обрезал изображениеи показывают только верхние несколько строк):
http://i55.tinypic.com/317grdd.png
По сравнению с вызовом с numY = 100 на этом рисунке показаны как изображение данных, так и метки.Однако, пожалуйста, обратите внимание на две проблемы здесь.Во-первых, размер шрифта xticklabel отличается от значения yticklabel (axisFontsize).Во-вторых, метки xtick не выровнены хорошо по столбцам (xticks): некоторые метки ближе, а некоторые - дальше.
Обратите внимание, что если я удалю вызов функции xticklable_rotate в моей функции debug_xticklabelRotate, все эти упомянутые проблемы исчезнут (за исключением того, что теперь xticklabel не вращается).
Я бы хотел, чтобы моя проблема была изложена выше.Любые предложения по решению проблемы будут высоко оценены.Большое спасибо.