패치 데이터와 컬러맵 간의 관계
Patch
객체를 사용하는 그래픽스를 생성하는 경우, colormap
함수를 호출하여 전체 색 체계를 제어할 수 있습니다. 또한, 다음과 같은 방법으로 컬러맵과 패치 간의 관계를 제어할 수도 있습니다.
특정 색을 면에 할당
특정 색을 각 면을 둘러싼 꼭짓점에 할당
이러한 관계를 제어하는 방법은 패치를 지정하는 방법, 즉 x, y, z 좌표로 지정하는지 또는 면-꼭짓점 데이터로 지정하는지에 따라 다릅니다.
컬러맵과 x, y, z 좌표 배열의 관계
x, y, z 좌표 배열을 사용하여 Patch
객체를 생성하는 경우, Patch
객체의 CData
속성에는 인덱싱 배열 C
가 포함됩니다. 이 배열은 컬러맵과 패치 간의 관계를 제어합니다. 면에 색을 할당하려면 C
를 배열로 지정하십시오. 여기서
C
는 n×1 배열입니다. 여기서 n은 면 개수입니다.C(i)
의 값은 면i
의 색을 제어합니다.
다음은 C
와, 컬러맵 및 3개 면에 대한 각 관계를 보여주는 예입니다. C(i)
의 값은 꼭짓점 (X(i,:)
, Y(i,:)
)으로 정의된 면의 색을 제어합니다.
C
의 가장 작은 값은 0
입니다. 이 값은 컬러맵의 첫 번째 행에 매핑됩니다. C
의 가장 큰 값은 1
이며 이 값은 컬러맵의 마지막 행에 매핑됩니다. C
의 중간값은 컬러맵의 중간 행에 선형적으로 매핑됩니다. 이 경우, C(2)
는 컬러맵의 시작 부분에서 약 2/3 떨어진 지점에 위치한 색에 매핑됩니다. 다음 코드는 앞에 있는 그림에서 설명한 Patch
객체를 생성합니다.
X = [0 0 5; 0 0 5; 4 4 9]; Y = [0 4 0; 3 7 3; 0 4 0]; C = [0; .6667; 1]; p = patch(X,Y,C); colorbar
꼭짓점에 색을 할당하려면 C
를 배열로 지정하십시오. 여기서
C
는 m×n 배열이며, 여기서 m은 면당 꼭짓점 개수이고 n은 면 개수입니다.C(i,j)
의 값은 면j
의 꼭짓점i
의 색을 제어합니다.
다음은 C
와, 컬러맵 및 6개 꼭짓점에 대한 각 관계를 보여주는 예입니다. C(i,j)
의 값은 (X(i,j)
, Y(i,j)
)의 꼭짓점에 대한 색을 제어합니다.
패치 면의 경우와 마찬가지로, MATLAB®은 C
의 값을 컬러맵의 행 개수로 스케일링합니다. 이 경우, 가장 작은 값은 C(2,2)=1
이며 이 값은 컬러맵의 첫 번째 행에 매핑됩니다. 가장 큰 값은 C(3,1)=6
이며 이 값은 컬러맵의 마지막 행에 매핑됩니다.
다음 코드는 앞에 있는 그림에서 설명한 Patch
객체를 생성합니다. 꼭짓점 색이 각 면 전반에 걸쳐 섞이도록 FaceColor
속성이 'interp'
로 설정됩니다.
clf X = [0 3; 0 3; 5 6]; Y = [0 3; 5 6; 0 3]; C = [5 4; 2 0; 6 3]; p = patch(X,Y,C,'FaceColor','interp'); colorbar
컬러맵과 면-꼭짓점 데이터의 관계
면-꼭짓점 데이터를 사용하여 패치를 생성하는 경우, Patch
객체의 FaceVertexCData
속성에는 인덱싱 배열 C
가 포함됩니다. 이 배열은 컬러맵과 패치 간의 관계를 제어합니다.
면에 색을 할당하려면 C
를 배열로 지정하십시오. 여기서
C
는 n×1 배열입니다. 여기서 n은 면 개수입니다.C(i)
의 값은 면i
의 색을 제어합니다.
다음은 C
와, 컬러맵 및 3개 면에 대한 각 관계를 보여주는 예입니다.
C
의 가장 작은 값은 0
이며 이 값은 컬러맵의 첫 번째 행에 매핑됩니다. C
의 가장 큰 값은 1
이며 이 값은 컬러맵의 마지막 값에 매핑됩니다. C
의 중간값은 컬러맵의 중간 행에 선형적으로 매핑됩니다. 이 경우, C(2)
는 컬러맵의 맨 아래 부분에서 약 2/3 떨어진 지점에 위치한 색에 매핑됩니다.
다음 코드는 앞에 있는 그림에서 설명한 Patch
객체를 생성합니다. 디폴트 색인 검은색 대신 컬러맵 색을 표시하기 위해 FaceColor
속성을 'flat'
으로 설정합니다.
clf vertices = [0 0; 0 3; 4 0; 0 4; 0 7; 4 4; 5 0; 5 3; 9 0]; faces = [1 2 3; 4 5 6; 7 8 9]; C = [0; 0.6667; 1]; p = patch('Faces',faces,'Vertices',vertices,'FaceVertexCData',C); p.FaceColor = 'flat'; colorbar
꼭짓점에 색을 할당하려면 Patch
객체의 FaceVertexCData
속성을 배열 C
로 지정하십시오. 여기서
C
는 n×1 배열입니다. 여기서 n은 꼭짓점 개수입니다.C(i)
의 값은 꼭짓점i
의 색을 제어합니다.
다음은 C
와, 컬러맵 및 6개 꼭짓점에 대한 각 관계를 보여주는 예입니다.
패치 면의 경우와 마찬가지로, MATLAB은 C
의 값을 컬러맵의 행 개수로 스케일링합니다. 이 경우, 가장 작은 값은 C(2)=1
이며 이 값은 컬러맵의 첫 번째 행에 매핑됩니다. 가장 큰 값은 C(6)=6
이며 이 값은 컬러맵의 마지막 행에 매핑됩니다.
다음 코드는 앞에 있는 그림에서 설명한 Patch
객체를 생성합니다. 꼭짓점 색이 각 면 전반에 걸쳐 섞이도록 FaceColor
속성이 'interp'
로 설정됩니다.
clf vertices = [0 0; 0 5; 5 0; 3 3; 3 6; 6 3]; faces = [1 2 3; 4 5 6]; C = [5; 1; 4; 3; 2; 6]; p = patch('Faces',faces,'Vertices',vertices,'FaceVertexCData',C); p.FaceColor = 'interp'; colorbar