New Graphics 색상 설정

게시판 IDL Q&A New Graphics 색상 설정

2 답변 글타래를 보이고 있습니다
  • 글쓴이
    • #5026 Reply
      ChoiYoun
      회원

      안녕하세요.

      New Graphics 색상 설정 방법이 궁금하여 글 남깁니다.

      다음과 같은 Direct Graphics 코드를 New Graphics로 변환하는 과정에서 문제가 발생하였습니다.

      즉, loadct 프로시저로 0번 “B-W LINEAR” 컬러테이블을 불러온 뒤 200번 색상(회색)까지만 읽어들여서 새로운 컬러테이블을 만들어 등치선을 그리는 코드입니다.

      그리고 아래는 이를 New Graphics로 변환하여 동일한 결과를 얻기 위해 작성한 코드의 일부입니다. 호환되지 않는 CONTOUR 함수의 키워드는 적당히 변경하였습니다.

      하지만 New Graphics로 나온 등치선 그림은 제가 원하는 색상이 아닌 다른 어여쁜 색상으로 나와서 어디가 문제인지 감을 못잡고 있습니다. 조언 부탁드리겠습니다.

      • 이 게시글은 ChoiYoun에 의해 6 years, 8 months 전에 수정됐습니다.
    • #5028 Reply
      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 사이의 차이에 대한 이해를 어느 정도는 필요로 합니다. 이 이슈와 약간이나마 연관성이 있을 것 같은 링크를 하나 소개해드립니다. 참조하시면 좋을 것 같습니다.

      http://blog.daum.net/swrush/409

    • #5029 Reply
      ChoiYoun
      회원

      감사합니다. 많은 공부가 되었습니다.

2 답변 글타래를 보이고 있습니다
'New Graphics 색상 설정'에 답변달기
글쓴이 정보: