2017-02-06 1 views
1

나는 모든 픽셀의 값으로 주석을 달기를 원하는 픽셀이 적은 이미지 플롯을 가지고 있습니다. 색상은 일반 색상 표 전체에 따라 다르므로 모든 주석에 대해 고정 색상을 사용할 수는 없지만 색상을 변경하고 싶습니다.텍스트 플롯 주석에 다른 색상 사용

x=1:3; 
y=1:3; 
m(y, x) = x .* y' * 6; 
image(m); 
xi = repmat(x, 3, 1); 
yi = repmat(y', 1, 3); 
text(xi, yi, "label"); 

제가

text(xi, yi, "label", "color", "white"); 

대신 "white" 사용하여 색상을 설정할 물론 I는 두 차원 매트릭스

clabels = zeros(3, 3, 3); 
clabels(:, :, 2) = 0.75; % for medium green, RGB = [0 192 0]; 

및 셀 매트릭스

clabels = {}; 
clabels(y, x) = [0 0.75 0]; 

시도 할 0을 사용하는 두 경우 모두 12,323,582,은 나에게

error: invalid value for color property "color"

색 속성에 대한 매트릭스와 같은 가치를 창출 할 수있는 방법이 있나요 굴복? 또는 주석을 달고 싶은 모든 색상에 대해 text을 만들어야합니까?

+0

여러 텍스트 명령이 필요하므로 질문에 대답하지 않지만 어쨌든 도움이 될 수 있습니다. 먼저 픽셀의 밝기에 따라 레이블이 검정색인지 흰색인지 결정합니다. 'bw = colormap * [0.299; 0.587; 0.114])> 0.5' 검정색 레이블'bl = (bw == 1)'과 흰색'wh = (bw == 0)'에 대한 부울 행렬을 만듭니다. 주석 :'text (xi (bl), yi (bl), "label", "color", "black")'및 흰색에 따라 사용하십시오. – Raketenolli

+0

더 이상 주석을 편집 할 수 없습니다. 그것은'bl = (bw (m) == 1)'과'wh = (bw (m) == 0)'이어야한다. – Raketenolli

답변

2

{'Property'}, {values} 형식을 사용하여 모든 텍스트 개체의 색상을 한 번에 지정할 수 있습니다. 안타깝게도 생성자에서 직접이 작업을 수행 할 수는 없지만 에 의해 반환 된 텍스트 객체의 배열에 대해 set을 사용하여 작업을 수행 할 수 있습니다.

t = text(xi, yi, 'label'); 

% Create a cell array where each cell is a different RGB color 
colors = arrayfun(@(x)rand(1,3), t, 'UniformOutput', false); 

set(t, {'Color'}, colors)