Main Content

플롯의 색과 선 스타일의 자동 선택 제어하기

동일한 좌표축에 여러 데이터 세트를 함께 플로팅하는 경우 MATLAB®을 사용하면 각각의 모양을 달리함으로써 데이터 세트를 구별하는 데 도움이 됩니다. 예를 들어, 여러 개의 선을 플로팅할 때 MATLAB은 색의 생성 순서에 따라 색 집합의 색을 각 선에 할당합니다. 색 개수보다 많은 선을 만들면 MATLAB은 첫 번째 색부터 시작하여 색 순환을 반복합니다. 다음 동작을 변경할 수 있습니다.

여기에서는 선 플롯 및 산점도 플롯을 구성하는 방법을 보여주지만, 색(그리고, 가능한 경우 선 스타일)의 순환 제어에 대한 동일한 개념이 bar 플롯, area 플롯, stem 플롯을 포함해 다른 많은 플롯에 적용됩니다. 여기에서 소개하는 모든 예제에서는 플로팅 후에 axes 속성을 설정합니다. 대부분의 플로팅 함수는 여러 axes 속성을 재설정하므로 이 순서는 중요합니다.

참고

플롯의 특정 항목에 색 또는 선 스타일을 지정하려면 플롯 색 지정하기 항목 및 플롯에서 선과 마커 모양 지정하기 항목을 참조하십시오.

다양한 색 집합과 선 스타일 집합 지정하기

MATLAB이 선택하는 색은 좌표축의 ColorOrder 속성에서 가져옵니다. 이 속성에는 RGB 3색으로 지정된 색의 3열 행렬이 포함됩니다. RGB 3색은 요소를 3개 가진 벡터로, 각 요소는 색을 구성하는 빨간색, 녹색, 파란색의 농도를 포함합니다. 농도의 범위는 [0, 1]이어야 합니다.

여러 개의 선을 플로팅하는 경우 첫 번째 선에는 ColorOrder 행렬의 첫 번째 색이 사용되고 두 번째 선에는 두 번째 색이 사용되는 식으로 진행됩니다. 결과적으로, 플롯에 행렬의 행보다 선이 더 많으면 색이 반복됩니다. 다음 코드는 디폴트 색 순서를 사용하는 여러 개의 선 플롯을 만듭니다. 첫 번째 선은 맨 위 선입니다. 디폴트 ColorOrder 행렬에는 7개의 행이 있으므로 색은 7번째 선 이후에 반복됩니다.

plot([9 10 11 12])
hold on
plot([8 9 10 11])
plot([7 8 9 10])
plot([6 7 8 9])
plot([5 6 7 8])
plot([4 5 6 7])
plot([3 4 5 6])
plot([2 3 4 5])
plot([1 2 3 4])
hold off
legend("Location","northeastoutside")

Plot containing nine solid lines with a legend. The first seven lines have unique colors. The last two lines use the same colors as the first two lines.

다음 두 가지 방법 중 하나로 색을 변경할 수 있습니다.

  • 좌표축의 ColorOrder 속성을 RGB 3색으로 구성된 새 행렬로 설정합니다.

  • colororder 함수를 호출합니다. 이 함수는 RGB 3색, 색 이름(예: "red") 및 16진수 색 코드를 받습니다 (R2019b 이후). 또한 미리 정의된 여러 팔레트 이름(예: "gem", "reef", "meadow" (R2023b 이후))도 모두 받습니다.

빨간색, 녹색, 파란색에 대한 RGB 3색을 포함하는 새 행렬을 만듭니다. 그런 다음 ColorOrder 속성을 이 행렬로 설정합니다. 플롯이 새로운 색으로 즉시 업데이트됩니다.

mycolors = [1 0 0; 0 1 0; 0 0 1];
ax = gca; 
ax.ColorOrder = mycolors;

Plot containing nine solid lines with a legend. The first three lines have unique colors. The colors are repeated two more times for the last six lines.

MATLAB은 색 외에 다양한 선 스타일도 순서대로 돌아가며 적용합니다. 기본적으로 선 스타일은 하나(실선)만 있습니다. 추가 선 스타일을 지정하려면 좌표축의 LineStyleOrder 속성을 설정합니다. 예를 들어, 다음 코드는 세 가지 선 스타일을 지정합니다. 업데이트된 플롯은 다음 선 스타일을 표시하기 전에 하나의 선 스타일로 모든 색을 순서대로 돌아가며 적용합니다.

mylinestyles = ["-"; "--"; "-o"];
ax.LineStyleOrder = mylinestyles;

Plot containing three solid lines, three dashed lines, and three solid lines with circular markers. The three colors are repeated for each set of three lines. The plot also has a legend.

색 및 선 스타일의 순환 순서 지정하기

R2023a 이후

여러 색과 선 스타일을 사용하는 경우 LineStyleCyclingMethod 속성을 설정하여 플롯이 색을 적용하기 전이나 후, 또는 색 적용과 동시에 모든 선 스타일을 순서대로 돌아가며 적용할지 여부를 지정할 수 있습니다. 이 속성은 다음 세 개의 값 중 하나를 가질 수 있습니다.

  • "aftercolor" — 색을 적용한 후에 선 스타일을 순서대로 돌아가며 적용합니다. 이 값은 디폴트 값입니다.

  • "beforecolor" — 색을 적용하기 전에 선 스타일을 순서대로 돌아가며 적용합니다.

  • "withcolor" — 색과 함께 선 스타일을 순서대로 돌아가며 적용합니다.

네 개의 선을 플로팅합니다. LineStyleOrder 속성을 세 가지 선 스타일로 설정하고, 세 개의 16진수 색 코드로 구성된 배열을 colororder 함수에 전달하여 ColorOrder 속성을 세 가지 색으로 설정합니다. 그런 다음 범례를 추가합니다.

% Plot four lines
plot([4 5 6 7])
hold on
plot([3 4 5 6])
plot([2 3 4 5])
plot([1 2 3 4])
hold off

% Set the line style order and color order
ax = gca;
ax.LineStyleOrder = ["-"; "--"; "-o"];
colororder(["#8040E6";"#1AA640";"#E68000"])
legend("Location","northeastoutside")

Plot containing four lines with three colors and two line styles. The first three lines are solid with unique colors. The last line is dashed and the has the same color as the first solid line. The plot also has a legend.

기본적으로 플롯은 다음(파선) 선 스타일을 표시하기 전에 첫 번째(실선) 선 스타일로 모든 색을 순서대로 돌아가며 적용합니다. 세 가지 색이 있으므로 선이 네 개 있는 플롯에는 두 가지 선 스타일만 사용됩니다.

색과 선 스타일 모두에서 더 많은 선을 구분하려면 "withcolor" 옵션을 사용하고 동일한 개수의 색과 선 스타일을 지정합니다. 예를 들어, 위 플롯의 LineStyleCylingMethod"withcolor"로 변경합니다. 업데이트된 플롯은 색과 선 스타일을 동시에 순서대로 돌아가며 적용합니다.

ax.LineStyleCyclingMethod = "withcolor";

Plot containing four lines with three unique colors and three unique line styles. The last line has the same color and line style as the first line. The plot also has a legend.

색 또는 선 스타일별로 데이터 그룹화하기

R2020a 이후

관련 선(또는 다른 plot 객체)을 시각적으로 함께 그룹화하려면 동일한 시각적 처리를 하려는 각 객체의 SeriesIndex 속성을 동일한 숫자로 설정합니다. SeriesIndex 속성은 LineStyleCyclingMethod 속성의 값에 따라 ColorOrder 배열 및 LineStyleOrder 배열의 요소를 참조합니다. 따라서 동일한 SeriesIndex 값을 가진 서로 다른 객체가 동일한 색(해당하는 경우 선 스타일)을 사용하게 됩니다.

예를 들어, 산점 50개로 이루어진 두 집합을 플로팅해 보겠습니다.

x = 1:50;
meas1 = 0.25*x + randn(1,50);
scat1 = scatter(x,meas1);
hold on
meas2 = 0.5*x + randn(1,50) + 5;
scat2 = scatter(x,meas2);

Two sets of scattered points that are offset from each other vertically. The top set of points is red, and the bottom set of points is blue.

polyfit 함수 및 polyval 함수를 사용하여 각 점 집합에 대한 피팅 선을 계산합니다. 그런 다음 플롯에 각 피팅 선을 추가합니다.

% Calculate fit lines for each set of measurements
p1 = polyfit(x,meas1,1);
y1_fit = polyval(p1,x);
p2 = polyfit(x,meas2,1);
y2_fit = polyval(p2,x);

% Plot fit lines
fitline1 = plot(x,y1_fit);
fitline2 = plot(x,y2_fit);
hold off

Plot of two sets of scattered points with fit lines that run through them. Each set of points and corresponding fit line are vertically displaced from the other set of points and fit line. The top set of points is red and the fit line is purple. The bottom set of points is blue and the fit line is yellow.

산점도 플롯과 피팅 선이 모두 다른 색입니다. 그 이유는 좌표축에 추가하는 각각의 새 플롯에 대해 MATLAB이 ColorOrder 행렬에서 새 색을 선택하기 때문입니다.

각 피팅 선의 색을 연결된 산점도 플롯에 일치시킵니다. 각 선의 SeriesIndex 속성을 연결된 산점도 플롯의 값과 동일한 값으로 설정합니다.

fitline1.SeriesIndex = scat1.SeriesIndex;
fitline2.SeriesIndex = scat2.SeriesIndex;

Plot of two sets of scattered points with fit lines that run through them. Each set of points and corresponding fit line are vertically displaced from the other set of points and fit line. The top set of points and fit line are both red. The bottom set of points and fit line are both blue.

이 관계는 ColorOrder 행렬의 색을 변경해도 그대로 유지됩니다. 예를 들어, colororder 함수를 호출하여 색을 자주색과 녹색으로 변경해 보겠습니다.

colororder([0.5 0.25 0.90; 0.10 0.65 0.25])

Plot of two sets of scattered points with fit lines that run through them. Each set of points and corresponding fit line are vertically displaced from the other set of points and fit line. The top set of points and fit line are both green. The bottom set of points and fit line are both purple.

참고 항목

함수

속성

관련 항목