HSV와 HSL은 사람과 다르게 보이는 색상을 생성하는 데 더 적합하므로 RGB 색상 공간이 아닌 HSV 또는 HSL 색상 공간을 사용하는 것이 좋습니다. RGB에서 더 많은 작업을 수행 할 수 있습니다 (필요한 경우에는 변환이 계속 필요하지만).
HSV / HSL은 다음과 같습니다.
HSV 또는 HSL 색상 공간을 사용하는 경우 두 색상의 H (색조) 구성 요소 간의 차이가 색상 간 지각 거리의 근사치 인 것으로 가정 할 수 있습니다. 즉, 색상 변화가 클수록 다른 색은 인간에게 보일 것입니다. S (채도) 및 L / V (밝기 / 값)를 사용하여 몇 가지 매우 다른 색상을 표현할 수 있지만 색조를 변경하는 것과 동일한 값 변경에 대해 다르게 보이지는 않습니다.
필요한 고유 한 색상 수에 따라 색조 공간을 여러 색상으로 나눌 수 있습니다. 예를 들어 색조 범위가 256 값이고 16 개의 고유 한 색상이 필요한 경우 첫 번째 색상은 (0, 128, 128), 두 번째 색상은 (16, 128, 128) 등이 될 수 있습니다. 나는 중간에 S / L 값을 임의로 임의로 선택했습니다. 보통 색차를 명확하게 볼 수있을 정도로 가볍고 포화됩니다. 이 시스템은 간단하며 그래프 / 맵에서 색상의 인접성에 대해 알 필요가 없다고 가정합니다.
필요한 색상 수를 미리 알지 못하지만 상한을 알고 색조 범위를 상한을 염두에 둔 색상으로 나누면 여전히 지각 적으로 다른 색상을 얻을 수 있습니다. 상한
매우 많은 고유 한 색상이 필요한 경우 비슷한 색상을 가진 그래프의 다른 요소 근처에 표시되지 않는 한 매우 유사하거나 동일한 색상을 사용하여 벗어날 수 있습니다. 렌더링하려는 그래프에서 인접 상황을 알아야하며 항상 간단하지는 않지만 Dukeling이 의견에서 지적한 것처럼 좋은 생각이 아닐 수도 있습니다. 두 가지 다른 개념에 대한 그래프에서 두 번.
따라서 가장 복잡한 상황에서는 그래프가 복잡하여 위의 시스템을 사용하여 너무 유사한 색상의 고유 한 요소로 끝나지 않도록 충분한 색상 공간이 없습니다. 이 경우 시각화 그래프 요소의 인접 그래프를 작성해야합니다. 여기의 인접성은 퍼지 개념입니다. 실제 상황에 맞게 올바르게 정의해야합니다. 예를 들어 두 번째 예에서 7 월 12 일의 데이터에는 모든 색상이 다른 모든 색상에 인접한 초크 지점이 있습니다. 인접 그래프를 빌드 할 수있는 경우 도움이 될 수있는 한 가지 방법은 그래프 색상 문제입니다. 예를 들어 C ++의 boost :: graph와 같이 도움이 될 수있는 라이브러리가 있습니다 .