проблема с цветовой картой / подсказкой данных на рисунке Matlab

я запускаю этот код

A = uint8( ones( 200 ) );
a = [ A * 0 A * 1; ...
      A * 2 A * 3 ];

color_map = [ 0    0    0; ...
              0.3  0.3  0.3; ...
              0.9  0.3  0.1; ...
              1    1    1; ...
              zeros( 252, 3 ) ];

h = image( a );
colormap( color_map );

Затем я выбираю точку на рисунке, используя функцию всплывающей подсказки. Это приводит к изменению цвета на рисунке. Они по-прежнему имеют те же индексы и значения RBG, но имеют разные цвета. Затем я удаляю всплывающую подсказку, и цвета возвращаются к своим первоначальным цветам.

С использованием,

set(gcf, 'Renderer', 'opengl')

устраняет проблему, но мне интересно, есть ли способ избежать этого? Я использую MATLAB R2013b.


person David    schedule 12.12.2014    source источник
comment
Это странно. Может быть бесполезно, но я обнаружил, что если вы определяете color_map без нулей в конце, цвета не меняются при использовании подсказки. color_map2 = [0 0 0;.3 .3 .3;.9 .3 .1;1 1 1]; h = image(a);colormap(color_map2);   -  person Jim Quirk    schedule 12.12.2014
comment
Это интересное поведение. Спасибо, что заглянули!   -  person David    schedule 17.12.2014
comment
Как бы то ни было, в 2015a, когда я попробовал ваш код, цвет не изменился. Mathworks обновила графическую систему в 2014b. Итак, 1 ответ может заключаться в обновлении Matlab.   -  person Matt    schedule 11.06.2015
comment
@Matt Это, или принуждение старой версии к использованию нового графического движка с использованием feature('usehg2',1) или запуск MATLAB с параметром командной строки -hgVersion 2, согласно этот недокументированный пост Matlab.   -  person Dev-iL    schedule 17.06.2015
comment
Похоже, подсказка данных устарела для R2017a. Я попытался найти его, и вся документация/вопросы устарели. Даже doc datatip появляется окно, которое показывает datatip is obsolete, FYI.   -  person Numbers682    schedule 09.06.2017


Ответы (1)


Эта строка предотвращает поведение, которое вы упомянули выше:

set(0, 'DefaultFigureRenderer', 'opengl');

Он устанавливает средство визуализации для всех новых фигур. Вы можете поместить эту строку в файл startup.m.

Чтобы узнать больше о файле запуска, перейдите по ссылке:

http://www.mathworks.com/help/matlab/ref/startup.html

(вы в основном генерируете этот файл, если он не существует, и помещаете туда код, который хотите запускать при каждом запуске Matlab).

person NoamG    schedule 16.07.2015