- This topic has 2개 답변, 2명 참여, and was last updated 6 years, 8 months 전에 by ChoiYoun.
-
글쓴이글
-
-
ChoiYoun회원
안녕하세요.
New Graphics 색상 설정 방법이 궁금하여 글 남깁니다.
다음과 같은 Direct Graphics 코드를 New Graphics로 변환하는 과정에서 문제가 발생하였습니다.
1234567891011121314151617contour, panorama_m, azimuth_array, elev_array, /NODATA, $XTITLE= 'azimuth[!Uo!N]', XRANGE = xrange, XST = 1, XMARGIN = [10, 10], $YTITLE = 'elevation[!Uo!N]', YRANGE = yrange, YST = 1;Gray color settingloadct, 0tvlct, r, g, b, /GETr = CONGRID(r[0:200], 256, /CENTER)g = CONGRID(g[0:200], 256, /CENTER)b = CONGRID(b[0:200], 256, /CENTER)tvlct, r, g, blevels = 100 * INDGEN(21)c_colors = BYTSCL(levels)contour, panorama_m, azimuth_array, elev_array, LEVELS = levels, C_COLORS = c_colors, /OVERPLOT, /CELL_FILLcontour, panorama_m, azimuth_array, elev_array, LEVELS = levels, /OVERPLOT, COLOR = 255즉, loadct 프로시저로 0번 “B-W LINEAR” 컬러테이블을 불러온 뒤 200번 색상(회색)까지만 읽어들여서 새로운 컬러테이블을 만들어 등치선을 그리는 코드입니다.
그리고 아래는 이를 New Graphics로 변환하여 동일한 결과를 얻기 위해 작성한 코드의 일부입니다. 호환되지 않는 CONTOUR 함수의 키워드는 적당히 변경하였습니다.
123456789101112131415161718c = CONTOUR(panorama_m, azimuth_array, elev_array, /NODATA, $DIMENSIONS = dimensions, $XTITLE= 'azimuth[!Uo!N]', XRANGE = xrange, $YTITLE = 'elevation[!Uo!N]', YRANGE = yrange);Gray color settingloadct, 0tvlct, r, g, b, /GETr = CONGRID(r[0:200], 256, /CENTER)g = CONGRID(g[0:200], 256, /CENTER)b = CONGRID(b[0:200], 256, /CENTER)tvlct, r, g, blevels = 100 * INDGEN(21)c_colors = BYTSCL(LEVELS)c = CONTOUR(panorama_m, azimuth_array, elev_array, C_VALUE = levels, C_COLOR = c_colors, /OVERPLOT, /FILL)c = CONTOUR(panorama_m, azimuth_array, elev_array, C_VALUE = levels, /OVERPLOT, COLOR = 255)하지만 New Graphics로 나온 등치선 그림은 제가 원하는 색상이 아닌 다른 어여쁜 색상으로 나와서 어디가 문제인지 감을 못잡고 있습니다. 조언 부탁드리겠습니다.
- 이 게시글은 ChoiYoun에 의해 6 years, 8 months 전에 수정됐습니다.
-
Sangwoo회원
TVLCT를 사용하여 컬러테이블 정보를 불러오는 것은 DG/NG 구분이 없습니다. 하지만 TVLCT를 사용하여 컬러테이블을 적용하는 부분에 있어서는 DG/NG 사이의 차이가 있습니다. TVLCT를 사용하여 컬러테이블을 적용하는 것은 DG에서만 가능합니다. NG에서는 컬러테이블을 적용하는 방식이 다른데, 여기서는 CONTOUR 함수에서 RGB_TABLE이라는 속성을 사용해야 합니다. 그런데 이 속성에 컬러테이블 정보를 부여하려면, 이미 얻어놓으신 r, g, b를 다음과 같이 256×3의 구조를 갖는 하나의 배열로 묶어야 합니다.
rgb = [[r], [g], [b]]
그런 다음에 다음과 같이 끝에서 두번째 줄에서 CONTOUR 함수 내에서 RGB_TABLE 속성에 rgb 배열을 부여하면 이 컬러테이블이 적용된 등치선 그림을 그릴 수 있습니다. 그러면 컬러테이블을 사용하여 색상이 채워진 그림을 얻게 됩니다.
c = CONTOUR(data, xx, yy, C_VALUE=levels, C_COLOR=c_colors, RGB_TABLE=rgb, /OVERPLOT, /FILL)
그리고 마지막 줄에서 사용된 CONTOUR 함수는 아마 앞서 색상을 채워 그려진 등치선 위에 선들만 덧그리는 목적일텐데요. 앞서 만들어놓은 컬러테이블 상에서 마지막 색상을 사용하고자 한다면, 컬러를 다음과 같이 명시해야 합니다.
c = CONTOUR(data, xx, yy, C_VALUE=levels, /OVERPLOT, COLOR=[r[255], g[255], b[255]])
NG 체계에서는 단일 색상을 설정할 때 DG에서와 같이 인덱스(0~255)를 부여하지 않습니다. 대신 위와 같이 RGB triplet을 주거나 아예 COLOR=’gray’와 같은 식으로 색상 명칭을 적습니다. 따라서 이 이슈는 전반적으로 컬러를 적용하는 방식에 있어서 NG/DG 사이의 차이에 대한 이해를 어느 정도는 필요로 합니다. 이 이슈와 약간이나마 연관성이 있을 것 같은 링크를 하나 소개해드립니다. 참조하시면 좋을 것 같습니다.
-
ChoiYoun회원
감사합니다. 많은 공부가 되었습니다.
-
-
글쓴이글