image 위에 plot을 겹쳐그리는 질문드립니다

게시판 IDL Q&A image 위에 plot을 겹쳐그리는 질문드립니다

3 답변 글타래를 보이고 있습니다
  • 글쓴이
    • #986 Reply
      inmyta27
      회원

      image 위에 plot으로 선을 넣고 싶은데 image 뒤로 plot이 그려져서 보이지가 않아서 문의드립니다.
      아래코드를 이용해서 그림을 그리면 image와 컬러바는 제대로 나오고 그 뒤에 plot 이 겹쳐져서 그려진거 같은데
      image의 흰바탕에 의해 안보여서요…
      이렇게 질문드립니다.
      ;==========================conduct PS <measured_oblate>==========================

      xrange=[min(d), max(d)]
      yrange=[min(obl), max(obl)]

      print, xrange[0],xrange[1]
      print, yrange[0],yrange[1]

      bin1=(xrange[1]-xrange[0])/100.
      bin2=(yrange[1]-yrange[0])/100.

      print, bin1, bin2

      density=hist_2d(d, obl, bin1=bin1, bin2=bin2,min1=xrange[0], max1=xrange[1],min2=yrange[0], max2=yrange[1])

      maxdensity=ceil(max(density)/1e2)*1e2
      scaleddensity=bytscl(density, min=0, max=maxdensity)

      outfile1=’oblate_20120823.ps’

      SET_PLOT, ‘ps’
      DEVICE,/times,FILENAME=outfile1,/ENCAPSULATED, $
      XSIZE=18,YSIZE=15,/COLOR,BITS=8, XOFFSET=.0,YOFFSET=0.0

      loadct,39

      tvlct, cgcolor(‘white’,/triple),0
      tvlct, r, g, b, /get

      palette=[[r],[g],[b]]

      plot, e_diameter, hlk, xrange=xrange, yrange=yrange, xstyle=1, ystyle=1, color=’black’,$
      position=[0.1, 0.1, 0.87, 0.87]

      cgimage, scaleddensity, /overplot, xrange=xrange, yrange=yrange, /axes,$; Palette=palette, $
      xtitle=’Drop diameter [mm]’, YTITLE=’Axis ratio’,font=2,color=’black’,$
      position=[0.125,0.125,0.9,0.8]

      xyouts, 0.66, 0.18, ‘Measured data’,charsize=1.3, charthick=2.1,color=1,/normal

      thick=(!D.Name EQ ‘ps’)? 6:2

      cgcolorbar, position=[0.125, 0.875, 0.9, 0.925], title=’Number Density [#]’,font=2,$
      charsize=1.3,charthick=2.1,color=’black’,$
      range=[0, maxdensity], ncolors=255, bottom=1,tlocation=’top’

      device,/close

    • #987 Reply
      Sangwoo
      회원

      아마도 PLOT으로 그려진 XY축 공간안에 이미지가 딱맞게 그려지도록 하기 위하여, PLOT에 이어서 cgImage가 사용된 것 같습니다. 사실 cgImage는 IDL의 기본 라이브러리가 아닌 Coyote 라이브러리에 있는 프로그램인 것으로 아는데, 저는 개인적으로 사용해보지는 않아서 내부적인 과정은 정확히는 모릅니다. 하지만 제 생각에는 cgImage가 사용된 후에 PLOT이 한번 더 사용되어야 할 것 같습니다. 다만, 이 때 다른 인자나 키워드들은 그대로 사용하되 /NOERASE라는 키워드를 추가하면 기존의 그림(여기서는 cgImage로 그려진 이미지일겁니다)을 지우지 않고 플롯을 다시 덧그려주는 역할을 합니다.

    • #995 Reply
      inmyta27
      회원

      말씀해주신것처럼 cgimage 다음에
      plot, e_diameter, hlk, xrange=xrange, yrange=yrange, xstyle=1, ystyle=1, color=’black’,$
      position=[0.1, 0.1, 0.87, 0.87],/NOERASE 를 넣었더니 image 위에 plot이 겹쳐집니다.

      그런데.. 이렇게하면 x,y 축 눈금들도 모두 중첩되서 써져서요.. 이건 어떻게 해결이 안되는지 궁금합니다.
      또 제가 plot을 하나만 추가가 아니라 몇개 더 추가를 하는데
      noerase를 쓸때는 oplot이 적용이 안되서

      위와 같은 형태로 plot을 색깔과 선스타일만 바꿔서 했더니 모두 다 나타나지만.. 역시나 x, y축 눈금들도
      모두 중첩되고 색깔도 하나는 빨강, 주황, 파랑 …등.. 모두 중첩되는데
      혹시 이 부분을 해결할 방법을 아는지 궁금합니다.

    • #998 Reply
      Sangwoo
      회원

      플롯을 그릴 때 축 자체가 아예 안나오게 하는 방법은 XSTYLE, YSTYLE 키워드의 값을 4로 셋팅하는 것입니다. 이 방법을 사용해보세요.

      PLOT, ~~~~, XSTYLE=4, YSTYLE=4

3 답변 글타래를 보이고 있습니다
'image 위에 plot을 겹쳐그리는 질문드립니다'에 답변달기
글쓴이 정보: