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

Я использую 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')

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

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

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

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

не приводит к исчезновению патча.

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

1 Ответ

3 голосов
/ 10 июня 2011

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

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

Резюме

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

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

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

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

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

Ошибка в ==> tex> localCheckValidString на 138 стрчк = стрккат (стр {:});

Ошибка в ==> tex в 111 [err] = localCheckValidString (ул); * * тысяча двадцать-один

Обход

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

...