곡면 플롯 데이터와 컬러맵 간의 관계
surf
또는 mesh
와 같은 함수를 사용하여 곡면 플롯을 생성할 때, colormap
함수를 호출하여 색 체계를 사용자 지정할 수 있습니다. 모양을 더 제어하려는 경우 곡면에 대한 색의 방향이나 패턴을 변경할 수 있습니다. 이러한 사용자 지정을 수행하려면 곡면과 컬러맵 사이의 관계를 제어하는 배열의 값을 변경해야 합니다.
곡면과 컬러맵 간의 관계
Surface
객체의 CData
속성에는 플롯의 특정 위치를 컬러맵의 색과 연결하는 인덱싱 배열 C
가 포함되어 있습니다. C
는 곡면 z = f(x,y)에 대해 다음 관계를 가집니다.
C
는Z
와 크기가 동일합니다. 여기서Z
는 곡면의 각 그리드 점에서의 f(x,y) 값을 포함하는 배열입니다.C(i,j)
값은 곡면상의 그리드 위치(i,j)
의 색을 제어합니다.기본적으로,
C
는Z
와 같으며, 이는 고도에 따라 달라지는 색에 해당합니다.기본적으로,
C
의 범위는 컬러맵 배열의 행 개수에 선형적으로 매핑됩니다.
예를 들어, Z = X + Y
의 3×3 샘플링은 N
개 항목을 포함하는 컬러맵에 대해 다음 관계를 가집니다.
가장 작은 값(-2
)은 컬러맵의 첫 번째 행에 매핑됩니다. 가장 큰 값(2
)은 컬러맵의 마지막 행에 매핑됩니다. C
의 중간값은 컬러맵의 중간 행에 선형적으로 매핑됩니다.
참고
앞에 나온 곡면 플롯은 색이 곡면의 꼭짓점에 할당되는 방법을 보여줍니다. 그러나, 디폴트 동작은 단색으로 패치 면을 채우는 것입니다. 이 단색은 주변 꼭짓점에 할당된 색을 기준으로 합니다. 자세한 내용은 FaceColor
속성 설명을 참조하십시오.
색의 방향이나 패턴 변경하기
디폴트 값 C=Z
를 사용하는 경우 색은 Z
가 변경됨에 따라 달라집니다.
[X,Y] = meshgrid(-10:10); Z = X + Y; s = surf(X,Y,Z); xlabel('X'); ylabel('Y'); zlabel('Z');
곡면을 생성할 때 C
를 지정하여 이러한 동작을 변경할 수 있습니다. 예를 들어, 다음 곡면의 색은 X
에 따라 달라집니다.
C = X; s = surf(X,Y,Z,C); xlabel('X'); ylabel('Y'); zlabel('Z');
또는, CData
속성을 직접 설정할 수 있습니다. 다음 명령을 사용하면 색이 Y
에 따라 달라집니다.
s.CData = Y;
색이 단일 차원의 변경 내용에 따라 달라질 필요는 없습니다. 실제로, Z
와 크기가 같다면 어떤 배열이든 CData
가 될 수 있습니다. 예를 들어, 다음 평면의 색은 sinc 함수의 형태를 따릅니다.
R = sqrt(X.^2 + Y.^2) + eps; s.CData = sin(R)./(R);