주요 콘텐츠

플롯 색 지정하기

MATLAB®은 디폴트 색 집합을 사용하여 플롯을 만듭니다. 디폴트 색은 사용자가 만드는 다양한 플롯 전반에 명확하고 일관된 모양을 제공합니다. 필요한 경우 색을 사용자 지정할 수 있습니다. 대다수의 플로팅 함수에는 c 또는 colorspec과 같이 색을 사용자 지정하기 위한 입력 인수가 있습니다. 이러한 함수에서 반환되는 객체에는 일반적으로 색을 제어하는 속성이 있습니다. 인수와 속성의 이름은 달라질 수 있지만, 일반적으로 인수와 속성이 허용하는 값은 일반 패턴을 따릅니다. 패턴에 익숙해지면 이를 사용하여 다양한 플롯을 수정할 수 있습니다.

다음 예제에서는 barscatter 함수를 사용하여 색을 사용자 지정하는 전반적인 접근 방식을 보여줍니다. 특정 플로팅 함수에 관한 유효한 색 값의 전체 목록은 해당 함수의 문서를 참조하십시오.

색 값의 유형

색 값에는 다음과 같은 세 가지 유형이 있습니다.

  • 색 이름 또는 짧은 이름 — 색 이름을 지정합니다(예: "red" 또는 "green"). 짧은 이름은 색 이름의 한 문자로 지정합니다(예: "r" 또는 "g").

  • RGB 3색 — 요소를 3개 가진 행 벡터를 지정하여 사용자 지정 색을 만듭니다. 벡터의 각 요소는 색을 구성하는 빨간색, 녹색, 파란색의 농도입니다. 농도의 범위는 [0,1]이어야 합니다. 예를 들어, 분홍색 음영은 [1 0.5 0.8]로 지정할 수 있습니다.

    색을 제어하는 일부 함수 인수는 RGB 3색을 허용하지 않지만, 색을 제어하는 객체 속성은 일반적으로 RGB 3색을 지원합니다.

  • 16진수 색 코드 — 해시 기호(#)로 시작하고 이어서 3개 또는 6개의 16진수 숫자가 오는 string형이나 문자형 벡터를 지정하여 사용자 지정 색을 만듭니다. 16진수 숫자의 범위는 0~F입니다. 이 값은 대/소문자를 구분하지 않습니다. 따라서, 색 코드 "#FF8800", "#ff8800", "#F80", "#f80"은 모두 같은 주황색 음영을 지정합니다.

    색을 제어하는 일부 함수 인수는 16진수 색 코드를 허용하지 않지만, 객체 속성에 해당하는 이름-값 인수를 사용하여 16진수 색 코드를 지정할 수 있습니다. 예를 들어 scatter(x,y,sz,"MarkerFaceColor","#FF8800")은 산점도 플롯의 마커 색을 주황색으로 설정합니다.

다음 표에는 유효한 색 이름 및 짧은 이름과 함께 이에 대응하는 RGB 3색과 16진수 색 코드가 모두 나열되어 있습니다.

색 이름짧은 이름RGB 3색16진수 색 코드모양
"red""r"[1 0 0]"#FF0000"

Sample of the color red

"green""g"[0 1 0]"#00FF00"

Sample of the color green

"blue""b"[0 0 1]"#0000FF"

Sample of the color blue

"cyan" "c"[0 1 1]"#00FFFF"

Sample of the color cyan

"magenta""m"[1 0 1]"#FF00FF"

Sample of the color magenta

"yellow""y"[1 1 0]"#FFFF00"

Sample of the color yellow

"black""k"[0 0 0]"#000000"

Sample of the color black

"white""w"[1 1 1]"#FFFFFF"

Sample of the color white

다음 표에는 라이트 테마와 다크 테마에서 플롯의 디폴트 색 팔레트가 나열되어 있습니다.

팔레트팔레트 색

"gem" — 라이트 테마 디폴트 값

R2025a 이전: 대부분의 플롯은 기본적으로 이 색을 사용합니다.

Sample of the "gem" color palette

"glow" — 다크 테마 디폴트 값

Sample of the "glow" color palette

orderedcolors 함수와 rgb2hex 함수를 사용하여 이러한 팔레트의 RGB 3색과 16진수 색 코드를 가져올 수 있습니다. 예를 들어, "gem" 팔레트의 RGB 3색을 가져와서 16진수 색 코드로 변환해 보겠습니다.

RGB = orderedcolors("gem");
H = rgb2hex(RGB);

R2023b 이전: RGB = get(groot,"FactoryAxesColorOrder")를 사용하여 RGB 3색을 가져옵니다.

R2024a 이전: H = compose("#%02X%02X%02X",round(RGB*255))를 사용하여 16진수 색 코드를 가져옵니다.

막대 차트의 색 지정하기

bar 함수를 호출하고 선택적 color 인수를 "red"로 지정하여 빨간색 막대 차트를 만듭니다. 나중에 차트의 다른 특성을 사용자 지정할 수 있도록 bar 객체를 b로 반환합니다.

b = bar(1:10,"red");

Figure contains an axes object. The axes object contains an object of type bar.

이제 FaceColorEdgeColor 속성을 16진수 색 코드 "#80B3FF"로 설정하여 막대 채우기 색과 윤곽선 색을 연한 파란색으로 변경합니다.

b.FaceColor = "#80B3FF";
b.EdgeColor = "#80B3FF";

Figure contains an axes object. The axes object contains an object of type bar.

산점도 플롯에 마커 색 지정하기

난수로 구성된 산점도 플롯을 생성합니다. 마커 크기를 75포인트로 지정하고 이름-값 인수를 사용하여 마커 윤곽선과 채우기 색을 지정합니다. MarkerEdgeColor 속성은 윤곽선 색을 제어하고 MarkerFaceColor는 채우기 색을 제어합니다.

x = rand(1,100);
y = rand(1,100);
scatter(x,y,75,"MarkerEdgeColor","b", ...
    "MarkerFaceColor",[0 0.7 0.7])

Figure contains an axes object. The axes object contains an object of type scatter.

일련의 플롯에 색 지정하기

일련의 플롯을 생성하는 방법에는 다음 두 가지가 있습니다.

  • 플로팅 함수를 여러 번 호출하고 hold 함수를 사용하여 좌표축의 내용을 유지합니다.

  • 여러 데이터 계열이 포함된 행렬을 플로팅 함수에 전달합니다. plot 함수는 항상 행렬 입력값을 받으며, 그 외 많은 다른 플로팅 함수도 행렬 입력값을 지원합니다.

어느 쪽 방법으로든 색을 지정하려면 출력 인수와 함께 원하는 플로팅 함수를 호출하십시오. 그러면 각 plot 객체에 액세스할 수 있습니다. 그런 다음 변경할 plot 객체의 속성을 설정합니다.

예를 들어, 100개 점으로 채워진 마커를 포함하는 산점도 플롯을 생성해 보겠습니다. 출력 인수 s1을 사용하여 scatter 함수를 호출합니다. hold 함수를 호출하여 좌표축의 내용을 유지한 다음, 출력 인수 s2s3을 사용하여 scatter 함수를 두 번 더 호출합니다. 변수 s1, s2, s3Scatter 객체입니다.

figure
x = 1:5;
s1 = scatter(x,[6 3 9 10 7],100,"filled");
hold on
s2 = scatter(x,[16 13 19 20 17],100,"filled");
s3 = scatter(x,[26 23 29 33 27],100,"filled");
hold off

Figure contains an axes object. The axes object contains 3 objects of type scatter.

두 번째 Scatter 객체의 색을 자주색 음영으로 변경합니다.

s2.MarkerFaceColor = [0.7 0 1];

Figure contains an axes object. The axes object contains 3 objects of type scatter.

scatter 함수는 행렬 입력값도 지원하므로(R2021a부터), 행렬을 전달하고 객체로 구성된 벡터를 반환하여 동일한 플롯을 생성할 수 있습니다.

figure
x = 1:5;
y = [6 3 9 10 7; 16 13 19 20 17; 26 23 29 33 27];
s = scatter(x,y,100,"filled");

Figure contains an axes object. The axes object contains 3 objects of type scatter.

이 경우에 두 번째 데이터 계열의 색을 변경하려면 s의 요소를 참조하여 두 번째 Scatter 객체에 액세스합니다.

s(2).MarkerFaceColor = [0.7 0 1];

Figure contains an axes object. The axes object contains 3 objects of type scatter.

참고 항목

함수

속성

도움말 항목