2012-06-09 9 views
4

BNT의 plotgauss2d 함수를 사용하여 2D Gaussian 노드의 응답이 그물의 다른 곳에 관찰되었을 때 어떻게 변하는지를 시각화했습니다. MATLAB 플롯의 범례에 선 색상을 설정 하시겠습니까?

enter image description here

당신이 볼 수 있듯이

eng = jtree_inf_engine(bnet); 
evidence = cell(1, 2) 
eng = enter_evidence(eng, evidence); 
marginals = marginal_nodes(eng, 1); p_1 = marginals.T 
marginals = marginal_nodes(eng, 2); p_2 = marginals.T 
marginals 
clf; plotgauss2d(marginals.mu, marginals.Sigma); 
hold all; 
evidence{1} = 1; 
marginals = marginal_nodes(enter_evidence(eng, evidence), 2); 
p = plotgauss2d(marginals.mu, marginals.Sigma); 
set(p, 'Color', 'green'); 
evidence{1} = 2; 
marginals = marginal_nodes(enter_evidence(eng, evidence), 2); 
p = plotgauss2d(marginals.mu, marginals.Sigma); 
set(p, 'Color', 'red'); 
legend({'Unknown', 'Class 1', 'Class 2'}); 
hold off; 

는 전설 내가 수동으로 설정했다 변경된 플롯 색상을 따기되지 않습니다. (슬프게도 plotgauss2d는 원할 경우 자동으로 색상을 순환하지 않습니다.)

범례에 사용되는 선 색상도 설정하는 방법이 있습니까?

답변

7

PLOTGAUSS2D 함수는 보조 축, 장축 및 타원에 각각 해당하는 세 개의 핸들 벡터를 반환합니다. `p`가 라인 핸들의 벡터가

figure, hold on 
h = zeros(3,3); 
h(:,1) = plotgauss2d(rand(2,1), [1 0.5; 0.5 2]); 
h(:,2) = plotgauss2d(rand(2,1), [2 -0.5; -0.5 1]); 
h(:,3) = plotgauss2d(rand(2,1), [1 0; 0 2]); 
hold off 
set(h(:,1), 'Color','r') 
set(h(:,2), 'Color','g') 
set(h(:,3), 'Color','c') 
legend(h(1,:), {'1','2','3'}) 

screenshot

+0

완벽하게 작동합니다! :) – Vass

2

범례는 선 색상, 스타일, 마커 등을 선택합니다.

plotgauss2d plot에는 적어도 세 개의 plot이 있어야합니다. 따라서 명령은 첫 번째 호출 plotgauss2d부터 plot까지 처음 세 개에 legend을 적용합니다. 코드의 일부를 건너 뛰는

, 당신은 바로 이렇게하여 전설을 만들 수 있습니다

p = plotgauss2d(marginals.mu, marginals.Sigma); 
h = p(1); 
hold all; 
evidence{1} = 1; 
marginals = marginal_nodes(enter_evidence(eng, evidence), 2); 
p = plotgauss2d(marginals.mu, marginals.Sigma); 
h(end+1) = p(1); 
set(p, 'Color', 'green'); 
evidence{1} = 2; 
marginals = marginal_nodes(enter_evidence(eng, evidence), 2); 
p = plotgauss2d(marginals.mu, marginals.Sigma); 
h(end+1) = p(1); 
set(p, 'Color', 'red'); 
legend(h,{'Unknown', 'Class 1', 'Class 2'}); 

지금 당신은 당신의 plotgauss2d 전화의 각에서 legend plot 하나를 적용 legend의 원인이된다.

또한, 나는 끝에 행을 추가 제안 :

axis equal; 

나는 당신이 무엇을 좋아하는 것이라 생각합니다.

+0

경우이 작동합니다 : 그래서 여기에 핸들을 저장하고 마지막에 LEGEND를 호출하는 방법을 예입니다. – tmpearce

+0

@tmpearce 그가'set' 명령으로 그 라인들의 색깔을 성공적으로 설정하고 있기 때문에 그것이 틀림없이 있어야합니다. – mwengler

관련 문제