colormap 은 pseudo coloring 을 할 때 사용하는 색상의 조합인데, 무턱대고 사용하는 것보다는 경우에 따라 적당한 것을 고르는 것이 합당하다. 이 글은 우선 python 의 matplotlib 에서 제공하는 colormap 을 살펴보고, color map 을 사용할 때의 주의점에 관한 논문을 살펴 본다. 그리고, 마지막으로 간단하게 두 가지 색으로 colormap 을 만들 때 RGB 코드 상으로 어떻게 하는지 살펴 본다.
matplotlib 은 python 에서 여러 종류의 그림을 matlap 처럼 쉽게 그릴 수 있게 해 주는 library 이다. 그 중 colormap 은 상당히 여러 종류가 있는데, 전체적으로는 다음 그림과 같다.
위의 colormap 들을 각각의 그림 파일로 저장한 것은 아래에 있다.
위 파일들을 모두 하나의 압축 파일에 집어 넣은 것은 다음에 있다.
주로 rainbow color map 을 자주 사용하는데, 이것은 그리 좋은 것은 아니라고 한다. IEEE 에 2007년에 나온 글을 첨부한다.
Rainbow Color Map (Still) Considered Harmful.pdf
위 글에 나오는 내용을 아래에 살짝 요약한다.
[미완]
RGB 코드로 R --> G 와 같은 단색으로 변경시킬 때는 단순히
RGB(0,255,0) ---> RGB(0,c,0) ---> RGB(0,0,0) --> RGB(c,0,0) --> RGB(255,0,0)
으로 하면 제일 녹색에서부터 어두워져서 가장 빨강색으로 변하게끔 색을 끌어 올 수 있다. c 의 값은 [0,255] 의 범위이다. 이 코드의 경우 정가운데는 검은색으로 나타나게 된다. 만약 중간색을 흰색으로 하고 싶다면 다음과 같은 방식을 사용한다.
RGB(0,255,0) -->RGB(255-c,255,255-c) --> RGB(255,255,255) --> RGB(255,255-c,255-c) --> RGB(255,0,0);
역시 c 의 값은 [0,255] 범위이다.
위를 C/C++ 코드로 보자면 다음과 같다.
// 중간이 흰색. // v : [-1, +1] COLORREF get_two_code_color(double v) { int c = static_cast<int>(fabs(v)*255.0); if(c > 255) c = 255; COLORREF cr = RGB(255,255-c,255-c); if(v < 0) cr = RGB(255-c,255,255-c); return cr; } // 중간이 검은색. // v : [-1, +1] COLORREF get_two_code_color2(double v) { int c = static_cast<int>(fabs(v)*255.0); if(c > 255) c = 255; COLORREF cr = RGB(c,0,0); if(v < 0) cr = RGB(0,c,0); return cr; }
python 이나 delphi, java 등 RGB 에 다른 범위의 값을 사용하는 언어들은 적당히 변경하면 된다.
'컴퓨터 > 전산, 그 외' 카테고리의 다른 글
맥북 프로 레티나의 해상도 확인 (13인치) (2) | 2014.01.27 |
---|---|
new 가 무서워, ㅋㅋ. (0) | 2013.05.01 |
C++ 사용자의 파이썬 추천 (14) | 2011.09.01 |
개발이라는 작업, 개발자 (0) | 2011.08.20 |
프로그래머와 수학 2 (3) | 2011.08.15 |