HOWTO · MATLAB
MATLAB RGB 삼중항
선, 산점도 점, 개별 막대에 RGB 삼중항을 사용해 MATLAB 플롯 색상을 설정하는 방법을 알아봅니다.
이 페이지의 내용
MATLAB에서 사용자 지정 플롯 색상을 설정하려면 RGB 삼중항을 사용합니다. 이는 빨강, 녹색, 파랑 순서의 세 원소 벡터이며, 각 성분은 0부터 1까지입니다. 선의 Color 속성을 하나의 삼중항으로 설정하거나, N×3 행렬을 제공해 N개의 산점도 점이나 막대를 개별적으로 색칠합니다.
MATLAB에서 RGB 삼중항 이해하기
RGB 삼중항은 빨강, 녹색, 파랑의 강도를 그 순서대로 저장합니다. 예를 들어 [1 0 0]은 빨강, [0 1 0]은 녹색, [0 0 1]은 파랑입니다. 성분을 혼합하면 다른 색상이 만들어집니다. [0.5 0.5 0]은 빨강과 녹색을 결합해 차분한 노랑이 됩니다. 성분이 0이면 해당 색상은 전혀 기여하지 않고, 1이면 최대 강도로 기여합니다.
그래픽 객체 전체가 하나의 색상을 공유해야 할 때는 삼중항 하나를 사용합니다. 점별 또는 막대별 색상을 지정하려면 N×3 행렬에 행마다 삼중항 하나씩 배치합니다. 여기서 N은 플롯할 항목의 수입니다.
RGB 삼중항으로 선 색상 설정하기
선 객체의 Color 속성은 RGB 삼중항 하나를 받습니다. 이 완전한 예제는 사인 곡선을 플롯하고 그 선을 사용자 지정 붉은 색상으로 설정합니다.
warning('off', 'Octave:gnuplot-graphics');
set(0, 'defaultfigurevisible', 'off');
x = 0:0.1:10;
y = sin(x);
plot(x, y, 'Color', [0.8 0.2 0.2], 'LineWidth', 2);
title('Sine Wave with Custom Color');
xlabel('X-axis');
ylabel('Y-axis');
grid on;
빨강, 녹색, 파랑의 강도를 조정하려면 세 값을 변경합니다. 각 값은 0부터 1 사이의 범위를 유지합니다. 같은 삼중항이 선 전체에 적용됩니다.
산점도 점에 RGB 색상 할당하기
개별 산점도 색상을 지정하려면 N×3 색상 행렬을 scatter에 전달합니다. 각 행은 x 및 y 벡터에서 같은 위치에 있는 점에 대응합니다. 다음 완전한 예제는 네 개의 점을 사용하고 각 점에 서로 다른 색상을 부여합니다.
warning('off', 'Octave:gnuplot-graphics');
set(0, 'defaultfigurevisible', 'off');
x = [1 2 3 4];
y = [2 4 3 5];
colors = [1 0 0; 0 1 0; 0 0 1; 0.8 0.4 0];
scatter(x, y, 80, colors, 'filled');
xlabel('X');
ylabel('Y');
title('Scatter Points with RGB Colors');
grid on;
행렬은 점마다 하나의 행을 가져야 하며, 세 열에는 빨강, 녹색, 파랑 값이 들어갑니다. 삼중항 하나만 전달하면 점들이 그 색상을 공유합니다.
RGB 삼중항으로 개별 막대 색상 설정하기
MATLAB에서는 막대 객체의 FaceColor 속성을 'flat'으로 설정하고 그 CData에 N×3 행렬을 할당합니다. 각 행이 하나의 막대 색상을 제공합니다. 예를 들어 bars = bar(values)를 만든 뒤에는 bars.FaceColor = 'flat'; bars.CData = colors;를 사용합니다. 이 Bar 객체 인터페이스는 MATLAB 전용입니다. 아래의 실행 가능한 Octave 예제는 각 막대를 패치로 그려서 각 직사각형이 대응하는 RGB 삼중항을 받을 수 있게 합니다.
warning('off', 'Octave:gnuplot-graphics');
set(0, 'defaultfigurevisible', 'off');
values = [3 5 2 8];
colors = [0.2 0.6 0.8; 0.8 0.2 0.2; 0.2 0.8 0.2; 0.5 0.5 0.2];
hold on;
for k = 1:numel(values)
x = k;
patch([x-0.4 x+0.4 x+0.4 x-0.4], [0 0 values(k) values(k)], colors(k,:));
end
set(gca, 'XTick', 1:numel(values), 'XTickLabel', {'A', 'B', 'C', 'D'});
xlim([0.5 numel(values)+0.5]);
xlabel('Category');
ylabel('Value');
title('Bars with Individual RGB Colors');
grid on;
하나의 MATLAB 막대 시리즈에서는 CData의 행이 순서대로 막대에 대응합니다. 모든 막대가 일치해야 한다면 평면 면 색상과 색상 행렬을 사용하는 대신 FaceColor를 하나의 RGB 삼중항으로 직접 설정합니다. Octave의 bar 핸들은 MATLAB의 Bar.CData 속성을 노출하지 않으므로, 서로 다른 면 색상을 할당할 때는 그쪽에서 패치 객체를 사용합니다.