Main Content

플로팅 함수의 색과 선 스타일 선택 방식 제어하기

동일한 좌표축에 여러 데이터 세트를 함께 플로팅하면 MATLAB®이 자동으로 plot 객체에 서로 다른 색을 할당하며, 가능한 경우 선 스타일 및 마커까지도 각기 다르게 할당합니다. 플로팅 함수를 호출할 때 색, 선 스타일 및 마커를 사용자 지정할 수 있고, 함수 호출 후에는 속성을 설정할 수도 있습니다.

예를 들어, 빨간색 실선과 녹색 파선을 플로팅합니다. 그런 다음 정사각형 마커를 빨간색 실선에, 원형 마커를 녹색 파선에 추가합니다.

p1 = plot([0 1 2 3],'-r');
hold on
p2 = plot([1 2 3 4],'--g');
hold off

% Add markers
p1.Marker = 'sq';
p2.Marker = 'o';

이 접근 방식은 Specify Plot Colors에 설명되어 있습니다. 이는 플롯 몇 개의 측면을 사용자 지정하는 경우에 유용합니다. 하지만 이 접근 방식은 루프에서 데이터를 플로팅하거나 플로팅 함수로 행렬 데이터를 전달하는 등의 다른 상황에서는 유연성이 떨어집니다. 이 경우 MATLAB이 수행하는 색, 선 스타일 및 마커의 자동 할당 방법에 대한 제어 속성을 사용자가 변경할 수 있습니다.

참고

다음 예제에는 R2019b부터 사용 가능한 기능도 있고 R2020a부터 사용 가능한 기능도 있습니다. 이전 릴리스에서 플롯 색 및 선 스타일을 수정하려면 플롯 선의 색이 다른 이유플로팅에 사용되는 선 스타일 — LineStyleOrder를 참조하십시오.

자동 할당 작동 방식

MATLAB은 좌표축의 ColorOrder 속성에 나열된 색을 순서대로 돌아가며 plot 객체(예: Line, ScatterBar 객체)에 할당합니다. ColorOrder 속성은 RGB 3색으로 구성된 배열을 포함합니다. RGB 3색 한 벌이 하나의 색을 정의합니다. 디폴트 ColorOrder 배열은 7가지 색을 포함합니다. 색 개수보다 많은 객체를 생성하면 색이 반복되어 사용됩니다.

plot 객체가 선 스타일 및 마커를 지원하는 경우 MATLAB은 좌표축의 LineStyleOrder 속성에 나열된 선 스타일 및 마커도 순서대로 돌아가며 적용합니다. LineStyleOrder 속성은 문자 시퀀스로 구성된 셀형 배열을 포함하며, 여기서 각 문자 시퀀스는 선 스타일(또는 마커와 결합된 선 스타일)에 대응됩니다. 디폴트 LineStyleOrder 배열에는 실선 스타일 ('-')만 있습니다. ColorOrder 배열의 모든 색이 LineStyleOrder 배열의 문자 시퀀스 하나와 함께 사용된 후에야 다음 문자 시퀀스가 사용됩니다. 이 주기는 새 plot 객체마다 계속됩니다. 색과 문자 시퀀스의 조합 개수보다 객체가 더 많은 경우 주기가 반복됩니다.

ColorOrder 배열 및 LineStyleOrder 배열 쌍이 주어졌을 때 특정 plot 객체의 색, 선 스타일 및 마커는 그 객체의 SeriesIndex 값에 의해 결정됩니다. 이 속성은 R2020a부터 새로 추가된 속성입니다. 기본적으로 SeriesIndex 속성은 객체의 생성 순서에 해당하는 숫자로 1부터 시작합니다. MATLAB은 이 숫자를 사용하여 ColorOrder 배열 및 LineStyleOrder 배열에 대한 인덱스를 계산합니다.

예를 들어, ColorOrder 배열의 두 색(빨간색 및 파란색)과 LineStyleOrder 배열의 두 선 스타일(실선 및 파선)을 사용하여 axes 객체를 만들어 보겠습니다. 그런 다음 5개 선을 플로팅합니다.

ax = axes;
ax.ColorOrder = [1 0 0; 0 0 1];
ax.LineStyleOrder = {'-','--'};

hold on
for i = 1:5
   plot([i i+2])
end
hold off

Plot containing five lines with two colors and two line styles.

다음 표에는 앞에서 플로팅한 각 선에 대한 SeriesIndex, ColorOrder 배열에 대한 인덱스 및 LineStyleOrder 배열에 대한 인덱스가 나열되어 있습니다.

 SeriesIndexColorOrder 배열에 대한 인덱스LineStyleOrder 배열에 대한 인덱스선 모양
첫 번째 선111빨간색 실선
두 번째 선221파란색 실선
세 번째 선312빨간색 파선
네 번째 선422파란색 파선
다섯 번째 선511빨간색 실선

좌표축의 ColorOrder 속성 또는 LineStyleOrder 속성을 수정하거나 plot 객체의 SeriesIndex 속성을 변경하여 plot 객체의 색, 선 스타일 및 마커를 변경할 수 있습니다.

색 체계 및 선 스타일 변경하기

좌표축의 ColorOrder 속성을 변경하면 플롯의 색 체계가 변경됩니다. 좌표축의 LineStyleOrder 속성을 변경하면 플롯에 사용된 선 스타일이 변경되며, 가능한 경우 마커도 변경됩니다. 예를 들어, 디폴트 색 및 선 스타일을 사용하여 루프에서 8개 선을 플로팅해 보겠습니다.

ax = axes;
hold on
for i = 0:7
    plot([i i+2])
end
hold off

Plot containing eight solid lines of with seven colors. The first color is repeated.

ColorOrder 배열을 4가지 색을 포함하는 새로운 배열로 바꿉니다. colororder 함수를 사용하여 이 배열을 바꿀 수도 있습니다. 그런 다음 LineStyleOrder 배열을 2가지 선 스타일을 포함하는 새로운 셀형 배열로 바꿉니다. 선은 자동으로 새로운 색과 선 스타일을 사용합니다.

% Updates existing plots in R2019b or later
ax.ColorOrder = [1 0 0; 0 1 0; 0 0 1; 0 0 0];
ax.LineStyleOrder = {'-','--'};

Plot containing eight lines with four colors and two line styles.

ColorOrder 배열 및 LineStyleOrder 배열에 대한 인덱스 변경하기

plot 객체의 SeriesIndex 속성을 변경하면 ColorOrder 배열 및 LineStyleOrder 배열에 대한 인덱스가 변경됩니다. 인덱스를 변경하는 것은 객체의 색, 선 스타일 및 마커를 다른 객체와 일치시키려는 경우에 유용합니다.

예를 들어, 파장 및 위상을 다르게 하여 루프에서 4개의 사인파를 플로팅해 보겠습니다. 각 사인파에 대해 파장에 따라 SeriesIndex 속성을 설정합니다. 결과로 생성된 플롯에서 파장이 동일한 사인파는 색도 동일합니다.

x = linspace(0,10,200);
ax = axes;
hold on
for phi = 0:3:3
    for t = 1:2
        plot(x,sin(x/t + phi),'SeriesIndex',t) % Requires R2020a or later
    end
end
hold off

Plot containing two blue sine waves and two orange sine waves.

한 쌍의 사인파를 더 두드러져 보이게 하려면 색 순서를 다른 색 집합으로 변경하십시오.

ax.ColorOrder = [0.8 0.8 0.9; 0.2 0.2 0.8];

Plot containing two light purple sine waves and two dark purple sine waves.

참고 항목

함수

속성

관련 항목