Масштабирование графика MATLAB / Octave, чтобы все метки могли быть напечатаны правильно

Я пытаюсь создать простую тепловую карту с помощью MATLAB / Octave: Heatmap plot
Как вы можете видеть, у меня много строк, каждая из которых представляет отдельную категорию.

Я использую imagesc функция, и я хотел бы иметь возможность масштабировать изображение / график, чтобы каждая из меток оси y могла быть напечатана правильно (вместо беспорядка, который можно увидеть на изображении ниже).

вот пример кода, который я хотел бы изменить:

A = randi(100, 200, 3);
imagesc(A, limit = [0, 100]);
set(gca, 'xtick', [1:3]);
set(gca, 'xticklabel', { "1,000", "2,000", "3,000" });
set(gca, 'ytick', [1:200]);

Edit: я прилагаю решение к предлагаемой проблеме, достигнутой благодаря совету EitanT, а также полезной информации в http://nibot-lab.livejournal.com/73290.html?nojs=1:

paperWidth = 16.5;
paperHeight = 11.7;

set(gcf, 'Position', get(0,'Screensize'));
set(gcf, 'PaperUnits', 'inches');
set(gcf, 'PaperSize', [paperHeight paperWidth]);
set(gcf, 'PaperPositionMode', 'manual');
set(gcf, 'PaperPosition', [0 0 paperWidth paperHeight]);
set(gcf, 'renderer', 'painters'); figure(gcf);

A = randi(100, 200, 3);
imagesc(A, limit = [0, 100]);
set(gca, 'FontSize', 5);
set(gca, 'FontWeight', 'light');
set(gca, 'xtick', [1:3]);
set(gca, 'xticklabel', { "1,000", "2,000", "3,000" });
set(gca, 'ytick', [1:200]);

1 ответов


есть несколько возможных решений этого:

изменение размера рисунка окна

если фигура еще не развернута, вы можете сделать это с помощью:

set(gcf, 'Position', get(0, 'ScreenSize'))

вместо get(0, 'ScreenSize') вы можете, конечно, указать любые желаемые размеры с помощью пользовательского вектора (как описано здесь).

уменьшение размера шрифта

вы также можете сделать текст метки меньше, просто уменьшив шрифт размер:

set(gca, 'FontSize', 5)

обратите внимание, что это, однако, влияет все текст в текущих осях.

уменьшение количества отображаемых тиков

в крайнем случае, вы можете уменьшить количество отображаемых ТИКов по оси y,я.е увеличить интервал тика. Вместо 1:200, попробуйте играть с другими интервалами, например:

set(gca, 'YTick', [1:20:200])

попробуйте комбинацию решений, описанных выше, для лучшего визуализация.

вы можете узнать больше о axis control в официальная документация. Также, как предложено вами в одном из комментариев,на этой странице содержит множество дополнительных полезных трюков для отображения графиков в MATLAB.