MATLAB: патчи исчезают при различных обстоятельствах, когда faceAlpha не 1

Я использую 64-битную Matlab R2010a на Windows 7 (это может быть актуально, если это неясная ошибка рендеринга)

это, очевидно, странная ошибка, которая проявляется, когда текстовый интерпретатор латексный

set(0, 'DefaultTextInterpreter', 'Latex');

этот код создаст синий прямоугольник с черной рамкой и легенду вне осей

cla reset;
patch ([0.5 0.5 0.75 0.75 0.5], [0.5 0.75 0.75 0.5 0.5], 'b', 'FaceAlpha',1); 
xlim([0 1]); 
ylim([0 1])
legend ('blah', 'Location', 'bestOutside')

Если я изменю код, чтобы патч имел непрозрачное альфа-значение,

cla reset;
patch ([0.5 0.5 0.75 0.75 0.5], [0.5 0.75 0.75 0.5 0.5], 'b', 'FaceAlpha',0.5); 
xlim([0 1]); 
ylim([0 1]);
legend ('blah', 'Location', 'bestOutside')

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

Патч также исчезает, если я запускаю весь код до легенды, а затем нажимаю "Редактировать график" в меню рисунков. Патч не появляется снова после снятия флажка "Редактировать сюжет". Свойства figure и axes (с использованием get(gcf) и get(gca) соответственно) идентичны до и после нажатия и снятия флажка "редактировать график"

Изменение размера окна рисунка не приводит к исчезновению патча. Изменение размеров осей из командной строки:

p = get(gca, 'Position');p(3) = p(3)/2;set (gca, 'Position', p)

не вызывает исчезновения патча.

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

1 ответ

Решение

Спасибо Расману за попытку воспроизвести ошибку и ошибку. Это помогло мне понять, что проблема заключается во взаимодействии между интерпретатором латекса и openGL. Это, по-видимому, связано с ошибкой MATLAB 359330

Решение состоит в том, чтобы установить свойства текста объектов по отдельности, а не использовать опцию рендеринга по умолчанию (что является болью)

Резюме

Установка свойства рисунка defaultTextInterpreter в 'latex' с помощью OpenGL может привести к тому, что MATLAB станет SEGV или будет утверждаться при печати в PostScript Description

При использовании средства визуализации OpenGL, присвоение свойству defaultTextInterpreter фигуры значения 'latex' и последующей печати в PostScript или инкапсулированном PostScript может привести к сбою или утверждению в MATLAB. Например, этот код,

figure;
axes;
set(gcf,'defaultTextInterpreter','latex');
set(gcf,'renderer','openGL');
print figure.eps;

может привести к сбою или утверждению. В других случаях в командном окне MATLAB могут появляться следующие ошибки:

??? Ошибка при использовании ==> strcat Недостаточно входных аргументов.

Ошибка в ==> tex>localCheckValidString в 138 strchk = strcat(str{:});

Ошибка в ==> tex в 111 [err] = localCheckValidString(str);

Временное решение

Не устанавливайте для свойства defaultTextInterpreter значение latex при использовании OpenGL. Скорее, установите для свойства Interpreter текстовых объектов значение "latex" индивидуально.

Другие вопросы по тегам