window창이 두개로 분리되어 표출됩니다.

게시판 IDL Q&A window창이 두개로 분리되어 표출됩니다.

4 답변 글타래를 보이고 있습니다
  • 글쓴이
    • #3001 Reply
      chojh
      회원

      coyote 라이브러리를 이용하여 그려진 데이터에 colorbar를 표출하고자 합니다.

      LoadCT, 21
      colors = [1, 70, 100]
      labels = [‘Snow’, ‘Water’,’Desert’]
      cgDCBar, colors, /addcmd, COLOR=’navy’, LABELS=labels, TITLE=’Land Key’, /VERTICAL, POSITION=[0.15, 0.1, 0.20, 0.9]

      그러나 이와 같이 입력하였을 때 이미 그려진 데이터와 같은 화면에 표시되지 않고 윈도우창이 분류되어 2개의 창에 각각 나타납니다.
      어떠한 방법으로 colorbar 를 그려진 데이터 옆에 표출할 수 있을지 모르겠습니다.

      도움 주신다면 감사하겠습니다.

    • #3002 Reply
      mwkim
      회원

      안녕하세요.

      질문하신 내용인 coyote 라이브러리 사용 과정에서 발생한 문제로 보이는데,

      사실 올려주신 내용만으로는 어떤 문제때문인지 파악하기 어렵습니다.

      아마 해당 코드 실행 이전에 어떤 데이터를 표출하는 코드가 있었을텐데

      그 부분도 같이 올려주셔야 정확히 알 수 있을 것 같습니다.

      예를 들어 아래와 같은 코드를 수행했을때는 컬러바가 하나의 창으로 표출되었습니다.

      =================================
      loadct, 21
      data = HANNING(300,300)*255
      colors = [1, 70, 100]
      labels = [‘Snow’, ‘Water’,’Desert’]
      cgWindow, ‘Contour’, data
      cgDCBar, colors, /addcmd, COLOR=’navy’, LABELS=labels, TITLE=’Land Key’, /VERTICAL, POSITION=[0.15, 0.1, 0.20, 0.9]
      =================================

      참고로 cgDCBar 함수에 /addcmd 함수를 사용하시면 cyWindow 함수를 통해 생성된 창이나

      또는 coyote 라이브러리를 통해 생성된 창에 한 해서 그 위에 그려지는 것 같습니다.

      기존 IDL 함수(DG 체계) 위에 그리려면, /addcmd 키워드를 빼시면 됩니다(NG 체계에서는 안 됩니다.)

      개인적으로 권유를 드리자면 굳이 예전에 사용하던 코드를 이용해야하거나

      coyote 라이브러리만의 기능이 필요한 부분이 아니라면

      IDL 내장 함수를 우선 사용하시는 것이 좋을 것 같습니다.

    • #3003 Reply
      chojh
      회원

      답변 감사드립니다.

      pro chojh
      worldelvfile=filepath(‘worldelv.dat’,subdirectory=[‘examples’,’data’])

      worldelvsize=[360,360]
      worldelvimage=bytarr(worldelvsize[0],worldelvsize[1])

      openr,unit,worldelvfile,/get_lun
      readu, unit,worldelvimage
      free_lun, unit

      winsize=[400,400]
      winmargin=(winsize-worldelvsize)/2

      owindow=obj_new(‘IDLgrWindow’,retain=2,dimensions=winsize,title=’world elevation:first method’)
      oview=obj_new(‘IDLgrView’,viewplane_rect=[0.,0.,winsize])
      omodel=obj_new(‘idlgrmodel’)

      opalette=obj_new(‘IdLgrPalette’)
      opalette->loadct,5
      oimage=obj_new(‘IDLgrImage’,worldelvimage,palette=opalette)

      omodel->add,oimage
      oview->add,omodel
      omodel->translate,winmargin[0],winmargin[1],0
      owindow->draw,oview

      loadct, 5
      colors = [1, 70, 100]
      labels = [‘Snow’, ‘Water’,’Desert’]
      cgDCBar, colors, COLOR=’navy’, LABELS=labels, TITLE=’Land Key’, /VERTICAL, POSITION=[0.15, 0.1, 0.20, 0.9]

      end

      위는 코드의 전문입니다.
      분류된 컬러만을 colorbar로 표현하기 위해 coyote 라이브러리를 이용하였습니다.
      IDL 내장함수만으로 분류된 컬러만을 colorbar로 표현할 수 있는지 궁금합니다.

      • #3004 Reply
        mwkim
        회원

        객체그래픽(OG)체계는 저도 안 써봐서 잘 모르겠습니다…

        알려드린 것과 같이 그림 표출을 DG 체계로 하시면 coyote 라이브러리 사용이 가능해 보이고

        NG 체계라면은 COLORBAR 함수를 사용하시면 됩니다.

        참고로 NG 체계에서 표출하는 코드는 다음과 같습니다.
        (COLORBAR에서 title과 tickname이 같은 방향이여서
        위에 올려주신 예제와 같이 출력하기위해 title을 별도로 표출했습니다.)

        ==========================================

        worldelvsize=[360,360]

        worldelvimage = HANNING(360,360)*255

        winsize=[500,400]
        winmargin=[winsize[0]-worldelvsize[0],(winsize[1]-worldelvsize[1])/2,0,(winsize[1]-worldelvsize[1])/2]

        win = WINDOW(DIMENSIONS=winsize, WINDOW_TITLE=’world elevation:first method’,/NO_TOOLBAR)
        img = IMAGE(worldelvimage,RGB_TABLE=5,MARGIN=winmargin, /DEVICE, /CURRENT)

        LOADCT, 5, RGB_TABLE = ctbl
        colors = [1, 70, 100]
        labels = [‘Snow’, ‘Water’,’Desert’]
        ctbl = ctbl[[1,70,100],*]
        cbar = COLORBAR(RGB_TABLE=ctbl,COLOR=’navy’,ORIENTATION=1,TEXTPOS=1,$
        TICKNAME=[‘Snow’, ‘Water’,’Desert’],POSITION=[0.10, 0.1, 0.15, 0.9])
        cbartitle = TEXT(winmargin[0]*0.25,0.5,’Land Key’,ORIENTATION=90,ALIGNMENT=0.5)

    • #3006 Reply
      chojh
      회원

      네, 잘 표출이 됩니다. 감사드립니다.

    • #3007 Reply
      Sangwoo
      회원

      사족으로 첨언하자면, Coyote Graphics 라이브러리는 전적으로 Direct Graphics 기반입니다. Object Graphics 또는 New Graphics와는 호환이 안됩니다. OG나 NG에서는 그 체계만의 방법을 사용해야 하는데 컬러바의 경우 NG 체계에서는 COLORBAR라는 함수를 사용하면 됩니다. 가급적이면 NG 체계의 사용을 권장합니다. OG는 유저 편의성 측면에서 제약이 좀 많습니다.

4 답변 글타래를 보이고 있습니다
'window창이 두개로 분리되어 표출됩니다.'에 답변달기
글쓴이 정보: