2014-10-12 5 views
1

matlab에서 'pie'명령을 사용하지 않고 원형 차트를 만들고 싶습니다. 어떻게 든 관리했지만 세그먼트 색을 지정하지 못했습니다. 누군가가 내가 그렇게 할 수있는 방법을 나에게 도움이 될 수 있습니다 아래의 것은 내 코드입니다 :원형 차트 색칠

코드에서 몇 가지 오류가 있었다
function pie_chart 

r = 1; 
v = [10 15 20 25 30]; 

C = ['r' 'g' 'b' 'm' 'c']; 

t= 0:0.01:2*pi; 

x = r * cos(t); 
y = r * sin(t); 

plot(x,y, 'k');hold on 

for k=1:length(v) 

    t=[v/sum(v)*2*pi]; 

    for t=1:length(t) 

    x=[0 r *cos(t)]; 
    y=[0 r *sin(t)]; 

    plot(x,y); hold on 

    fill(x,y,'C'); 

    end 

    axis square 

    axis off 

end 
+0

'fill (x, y, 'C')'-' 'C ''는 색이 아닙니다. 당신은 probaly가''c '' 또는'C (t)'를 원했습니다 – thewaywewalk

답변

1

: 당신이 C = ['r' 'g' 'b' 'm' 'c'];를 선언 할 때

당신이 [] 사이의 문자열을 연결, 당신이 종료 그래서 (C='rgbmc'). 중괄호 {}을 사용하여 cell 배열로 선언하는 것이 더 좋습니다. 따라서 선언은 다음과 같이됩니다. C = {'r' 'g' 'b' 'm' 'c'};

fill 함수는 채우기 위해 닫힌 영역이 필요합니다. 함수에 2 포인트 만 좌표를 전송 했으므로 (기본적으로 라인), 라인을 채색하고있었습니다.

실제로 색으로 'C'을 지정했기 때문에 색칠조차되지 않았습니다. C{k}

마지막으로 이중 루프가 필요하지 않으므로 다른 사분면의 루프 하나만 있으면 충분합니다 (바깥 쪽 루프에 t을 정의 했으므로, 두 번째 루프를 선언 할 때 즉시 덮어 씁니다.)

다음 코드는 컬러 원형 차트를 생성합니다. 몇 가지 측면을 이해하지 못한다면, 한 줄씩 실행하고 작업 영역의 변수 내용을 살펴 보는 것이 좋습니다.

function pie_chart 

% Define quadrants and color 
r = 1; 
v = [10 15 20 25 30]; 
C = {'r' 'g' 'b' 'm' 'c'}; 

theta = linspace(0,2*pi,359) ; 
idx_spokes = round([1 cumsum(v)/100*length(theta) ]) ; %// find the indices of the spokes 

for k=1:length(idx_spokes)-1 

    t = theta(idx_spokes(k):idx_spokes(k+1)) ; 

    x=[0 r*cos(t) 0]; 
    y=[0 r*sin(t) 0]; 
    plot(x,y); hold on 
    fill(x,y, C{k}); 
end 

axis square 
axis off 
+0

정말 고마워요. 당신의 노력에 정말 감사드립니다. 내가 잘못한 부분을 보았다. – Jesuit

+0

@Jesuit이 답변이 도움이 될 경우 옆에있는 "V"아이콘을 클릭하여 "수락"을 고려하십시오. – Shai