Как определить прозрачный элемент в палитре

Я хотел бы определить прозрачный цвет в цветовой карте, как мне это сделать?

Причина, по которой мне это нужно, заключается в том, что у меня есть несколько слоев в моем axes (созданном как imagesc, так и plot). Я знаю, что мог бы просто сначала использовать imagesc, а затем plot, но я хочу нарисовать линии за ненулевыми значениями представления imagesc.

Чтобы покрасить нули в белый цвет, я использую

jet = colormap('jet');
jet(1:2,:) = 1;
colormap(jet);

Теперь я хотел бы сделать белый прозрачным.


person magu_    schedule 01.05.2015    source источник


Ответы (1)


У colormap нет четвертого элемента для альфы, это только RGB, поэтому я делаю такие вещи, чтобы создать маску желаемого слоя прозрачности — двоичный или в оттенках серого — и затем применить это к изображению. Для этого вам нужно сохранить дескриптор изображения

% make random image
im = rand(100,100);
% make example alphamask
alphamask = im<0.3;
% store handle
hnd = imagesc(im);
% apply mask
set(hnd, 'AlphaData', alphamask);
person xenoclast    schedule 01.05.2015
comment
Хороший ответ. Я то же самое написал :-) - person Luis Mendo; 01.05.2015
comment
Очень мило спасибо. Теперь мне нужно только выяснить, как экспортировать эту красивую фигуру в pdf, потому что export_fig не поддерживает alpha, насколько мне известно. - person magu_; 01.05.2015
comment
Спасибо @LuisMendo :) Это лучший способ! - person xenoclast; 01.05.2015
comment
@magu_ Я просто экспортирую в png, я думаю, вам, возможно, придется использовать внешний инструмент для преобразования в pdf (если вы работаете в Linux, convert должен выполнить эту работу: askubuntu.com/questions/158093/) - person xenoclast; 01.05.2015
comment
Я работаю в Linux, но мой типичный рабочий процесс обычно выглядит так: рисунок Matlab, сохраненный в формате pdf -> Inkscape, сохраненный в формате pdf + латекс -> импортировать его в латекс. Но, возможно, стоит подумать об упрощении этого процесса в любом случае. - person magu_; 01.05.2015
comment
Я всегда использовал eps для своего рабочего процесса с латексом, но мне никогда не приходилось использовать там изображения, не говоря уже о прозрачности! Вы можете встроить вызов convert в свой скрипт Matlab, используя system? - person xenoclast; 01.05.2015