Как сделать изображение достаточно большим, чтобы избежать наложения меток? - PullRequest
5 голосов
/ 09 сентября 2010

Предположим, что данные X имеют размер 1000 * 1000.X отображается с помощью команды:

imagesc(X);

, и все строки помечаются как:

set(gca, 'YTickLabel', somelabels);

Хотя данные X правильно помечены и метки Ytick также отображаются, меткисильно перекрываются из-за большого количества строк.Есть ли способ решить проблему?Любая помощь будет высоко оценена.

Редактировать 1

Я понимаю, что мой вопрос не был сформулирован должным образом, чтобы представлять мою проблему.Я собираюсь завершить свое понимание на основе ответов и повторно задать вопрос:

  1. Чтобы отобразить столько строк / меток в Окно рисунка ,Помогает следующее:

    set(gca,'FontSize',6), 
    or, alternate the distance (suggested by yuk),
    or, set(gca,'YTick',1:10:1000,'YTickLabel',somelabels(1:10:1000));
    
  2. Код

    set(gca,'Units','pixels','Position',[20 20 10000 10000]);
    

    по умолчанию отображает увеличенное изображение.Но если увеличенное изображение слишком велико, чтобы поместиться в Окно рисунка , будет отображаться только часть изображения.Однако ни уменьшение , ни инструмент pan не могут достичь остальной части этого изображения.

  3. Поведение кода по умолчанию

    imagesc(X);
    set(gca, 'ytick', 1:1000, 'yticklabe', ylabel);
    

    отображает все изображение, вписывающееся в окно рисунка с перекрывающимися надписями.Тем не менее, он позволяет увеличить часть изображения и увидеть неперекрытые метки.

  4. Если я сохраню изображение в PDF-файл:

    imagesc(X);
    set(gca, 'ytick', 1:1000, 'yticklabe', ylabel);
    saveas(gcf, 'fig.pdf');
    

    Тогда сохраненный pdf - это только изображение, помещенное в Рисунок с перекрывающимися надписями.Однако, в отличие от увеличения в окне рисунка Matlab, увеличения в приложении для чтения PDF не изменяет относительное положение / расстояние надписей.В результате увеличенное изображение в формате PDF по-прежнему перекрывается по меткам.

Поэтому у меня такой вопрос:
Как сохранить изображение в файл PDF или png, чтобыпри открытии в Adobe Reader он имеет аналогичное поведение точка 3 и выше, чем точка 4 ?

Ответы [ 2 ]

4 голосов
/ 09 сентября 2010

Другой вариант - повернуть метки тиков, которые обсуждаются в этого технического решения .Вы можете найти ряд простых в использовании реализаций в MATLAB File Exchange.

alt text

4 голосов
/ 09 сентября 2010

Вы также можете поиграть со шрифтом метки оси, чтобы уменьшить его.

set(gca,'FontSize',6)

См. Также другие свойства осей , чтобы изменить шрифт - FontName, FontWidth, FontUnits и т. Д.

Другое решение : если ваши метки короткие, вы можете чередовать расстояние от осей, чтобы метки не перекрывались.Проверьте этот пример:

lbl = cellstr(reshape(sprintf('%3d',1:100),3,100)');
lbl(1:2:100) = strcat(lbl(1:2:100),{'     '});
imagesc(rand(100))
set(gca,'ytick',1:100)
set(gca,'yticklabel',lbl)

Часть полученного изображения:

example image

ОБНОВЛЕНИЕ

Чтобы ответить на вашобновленный вопрос.

  1. Документ PDF может содержать только статические изображения.После того, как вы сохранили рисунок в PDF (или любой другой графический файл), вы не можете увеличивать / уменьшать изображение, как с инструментами для рисования MATLAB.
  2. Вы можете сначала увеличить масштаб изображения MATLAB, а затем сохранить файл PDF.В этом случае рисунок будет сохранен как есть.Но этот способ предполагает интерактивность пользователя с рисунком.
  3. Если вы заранее знаете интересующую вас область, вы можете установить пределы осей с помощью свойств XLim / YLim, а затем сохранить рисунок.

Пример:

imagesc(X);
set(gca, 'ytick', 1:1000, 'yticklabe', ylabel);
set(gca, 'XLim',[1 20], 'YLim', [20 40])
saveas(gcf, 'fig.pdf');

Кстати, вы также можете сохранить рисунок в файл с помощью функции PRINT .Более гибкий.SAVEAS - это просто обертка вокруг него.

print('-dpdf','fig.pdf')
...