Масштабирование графика MATLAB / Octave, чтобы все метки могли быть напечатаны правильно
Я пытаюсь создать простую тепловую карту с помощью MATLAB / Octave:
Как вы можете видеть, у меня много строк, каждая из которых представляет отдельную категорию.
Я использую 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.