При сохранении рисунка в виде eps-файла Matlab обрезает метки цветовой карты - PullRequest
4 голосов
/ 03 января 2012

У меня есть фигура, созданная с использованием контура с цветовой шкалой.Большинство моих графиков в порядке, но когда значения на цветовой панели имеют порядок 10^{-3}, либо цифры 0.005 и т. Д. Записываются цветовой шкалой, либо x10^{-3} пишется вверху.

В обоих случаях часть этикетки обрезается - либо 3 в x10^{-3}, либо половина 5 в 0.005.

. Я могу это исправить, используя

set(gca, 'ActivePositionProperty', 'OuterPosition')

для рисунка на экране, но мне нужно сохранить его в формате eps.Когда я это делаю, 3 (или 5) снова обрезается!

Я также могу это исправить, если вручную потянуть нижний правый угол окна рисунка, чтобы увеличить его.Но это меняет размеры меток осей и т. Д. По сравнению с самим графиком, так что они отличаются от всех других моих фигур, то есть от цифр, которые я не изменяю.

Есть предложения?

Ответы [ 3 ]

2 голосов
/ 13 июня 2012

Предыдущее предложение частично верно.Вот что я сделал:

  1. установите одинаковые единицы измерения (цифры и бумаги) (фигура имеет пиксели, а не точки!)

    set(gcf,'Units','points')
    set(gcf,'PaperUnits','points') 
    
  2. сделать то же самое, что было предложено ранее:

    size = get(gcf,'Position');
    size = size(3:4);
    set(gcf,'PaperSize',size)
    
  3. Дело в том, что теперь это может быть смещено с бумаги, как в моем случае, поэтому установите его обратно

    set(gcf,'PaperPosition',[0,0,size(1),size(2)])
    

Я не уверен насчет смещения [0,0], но что такое отсечение одной точки:)

2 голосов
/ 16 февраля 2012

Matlab использует два размера для рисунков: размер экрана (Position свойство рисунка) и PaperSize. Первый используется для отображения на экране, а второй - для печати или экспорта в форматы изображений, отличные от .fig. Я подозреваю, что это источник вашей проблемы.

Вот что вы можете попробовать:

size = get(gcf,'Position');
size = size(3:4); % the last two elements are width and height of the figure
set(gcf,'PaperUnit','points'); % unit for the property PaperSize
set(gcf,'PaperSize',size);

Устанавливает размер экспортируемой «бумаги» на .eps равный размеру фигуры, отображаемой на экране.

Если это не сработает, вы можете попробовать немного поиграть с PaperSize или другими «бумажными» свойствами. Страница документации Свойства рисунка содержит дополнительную информацию о свойствах.

Надеюсь, это поможет!

0 голосов
/ 13 апреля 2016

Попробуйте сохранить файл в filename.eps :

set(gcf,'Units','points')
set(gcf,'PaperUnits','points')
size = get(gcf,'Position');

size = size(3:4);
set(gcf,'PaperSize',size)
set(gcf,'PaperPosition',[0,0,size(1),size(2)])

print(gcf,'filename','-depsc','-loose'); % Save figure as .eps file
...