지도표출질문드립니다.

게시판 IDL Q&A 지도표출질문드립니다.

이 게시글은 3개 답변과 2명 참여가 있으며 마지막으로  qrjtl5383에 의해 2 월, 1 주 전에 업데이트 됐습니다.

  • 글쓴이
  • #5531 답변

    qrjtl5383
    회원

    세가지의 질문이 있습니다.
    1. 그림에서 그려진 데이터값(매우작게분포되어보이진않음..서울위치에있음..)의 컬러범위와 우측에 나타는 컬러바(range?)의 색이 맞지 않습니다. 어떻게 수정하면 동일하게 고칠 수 있을까요?
    2. 컬러바에서 0.00, *****의 값이 뒤에 겹쳐서 나오는데 이걸 지울 수 있을까요?
    3. grid의 숫자가 조밀하게 기재되어 이를 수정하고싶습니다.

    결과에 관한 그림은 url로 첨부하였습니다.
    “https://blog.naver.com/qrjtl5383/221512266223″

    많은 조언 부탁드립니다.

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    ;;;;;;;;;;;;;;;;; plot graph ;;;;;;;;;;;;;;;;;;;;;;;;;

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    set_plot,’ps’ ;–>graph file type

    device,filename=’test_201711’+string(day,format='(i2.2)’)+’_’+string(tim,format='(i2.2)’)+’0000.ps’,$

    xsize=17, ysize=15, bits_per_pixel=1024,/color

    erase, 251

    !P.background=255

    !P.color=0

    !P.font=1

    ;;map_set,37.,122.0, limit=[25, 100, 50, 150], /lambert,/isotropic,color=0,$
    map_set,39.,123.0, /lambert,/isotropic,color=0,scale=200e5,$

    /noerase, charsize= 2, position=[0.05,0.06,0.8,0.89]

    loadct,23

    lv=[0.01,0.1,1,10,100,1000,10000,100000,100000000000] ;–>color intervals

    c=16+32*indgen(9)

    contour,conc[*,*,1,1],lon[*],lat[*], /overplot, c_color=c, level=lv,/cell_fill,position=[0.1,0.1,0.8,0.7]

    ;print,min(conc[*,*,1,1]), max(conc[*,*,1,1])

    ;print,total(conc[*,*,*,1])

    ;
    colorbar, position=[0.97,0.10+0.02,0.99,0.10+0.75], range=[ min(conc[*,*,1,1]), max(conc[*,*,1,1]) ], DIVISIONS=8,$

    ncolor=8, bottom=231, format='(f5.2)’, /vertical, color=0, charsize=1.5, charthick=1.

    erase, colorbar

    lv=[0.01,0.1,1,10,100,1000,10000,100000,1000000 ]

    for i=7,9-1 do begin&$

    xyouts,0.9,0.10+0.742-i*0.090,string(lv[8-i],format='(f4.2)’),/normal,color=0,charsize=1.6,charthick=1.&$

    endfor

    for i=0,7-1 do begin&$

    xyouts,0.88,0.10+0.742-i*0.090,string(lv[8-i],format='(f10.0)’),/normal,color=0,charsize=1.6,charthick=1.&$

    endfor

    ;

    loadct,0

    ;xyouts,0.03,0.955,”Cs-137 ( 2nd layer )”,/normal,color=0,charsize=2.5,charthick=1.

    xyouts,0.88,0.10+0.78,”(Microgram/m3)”,/normal,color=0,charsize=1.5,charthick=1.

    map_grid, box_axes=1, color=1, LONDEL=1, LATDEL=1, lable=10,charsize=1.5

    map_continents, /hires, /countries, /coasts, mlinethick=4.0,color=0

    device,/close

    end

  • #5532 답변

    Jonghyuk
    회원

    colorbar 라는 라이브러리가 coyote 라이브러리라고 생각합니다. coyote 라이브러리는 한번은 업데이트 하셔야 할 것 같은데, 가장 최근 버전에서 colorbar는 cgcolorbar로 이름이 바뀌었습니다.

    David Fanning의 coyote library에서 colobar(cgcolorbar)는 DIVISION과 NCOLORS를 지정할 수 있는데, 이 때, NCOLORS=NC라고 하면, 컬러바에서 사용하는 색은 0부터 NC-1 까지의 색상을 가져옵니다. BOTTOM을 지정하면, 컬러바에서 사용하는 색은 BOTTOM값에서 BOTTOM값+NC-1 까지의 색상을 가져오게 됩니다.
    위 코드에서 사용한 것처럼, BOTTOM=231, NCOLORS=8 이면, 231, 232, 233, 234, 235, 236, 237, 238 번의 8개 색상을 가져다 씁니다. 위 코드처럼 23번 컬러테이블을 쓴다면, 231번은 좀 어두운 주황색이고, 232~238번은 모두 비슷한(조금씩 더 붉은색이 짙어지는) 주황색이 될 것입니다. 올려주신 그림의 컬러바가 그렇게 보일 것입니다.

    이에 반에 Contour에서는 C_COLOR 키워드에 c 변수에 해당하는 값을 넣어 줌으로써, 23번 컬러테이블의 전 범위를 넓게 사용하고 있습니다. 이 차이를 맞춰야 하는데, COLORBAR를 위와 같이 쓰실 계획이면, 사용하고자 하는 색상 9개를 컬러테이블에 올려 놓는 것이 좋습니다.

    LOADCT, 23, NCOLORS=10

    위와 같이 하였을 때, 23번 컬러테이블을 10개로 균등분할하여, 샘플링하고, 이를 컬러테이블 번호 0번부터 9번까지 채워 넣습니다. 0번은 검은색으로 컬러바에서 안쓸 색이기 때문에, 10개를 불러왔습니다.

    c=indgen(9)+1

    이렇게 하여 Contour에서 1번부터 9번까지의 색을 사용하도록 합니다.

    cgcolorbar, position=[0.97,0.10+0.02,0.99,0.10+0.75], DIVISIONS=8,$
    NCOLORS=8, bottom=1, format='(A1)’, /vertical, color=0, charsize=1.5, charthick=1.

    저는 과거의 colorbar 프로시저를 확인하지는 못했지만,cgcolorbar가 비슷할 것으로 생각합니다. 위와 같이 NCOLORS=8로 하고 Bottom을 1로 하여 1번부터 8번 컬러까지 사용하도록 지정합니다.

    그리고 FOMRAT='(A1)’으로 처리하면 눈금값이 출력되지 않습니다. 뒤에서 xyouts로 눈금값을 직접 출력하기 때문에, colorbar의 눈금값 출력을 막아 버리는 것이 좋겠습니다. 혹시, 유용할지 모르니, cgcolorbar 명령에, /YLOG 키워드가 있다는 것도 검토해 보십시오. 눈금값을 지수스케일로 지정합니다.

    MAP_GRID 명령을 쓸 때, LATDEL=5, LONDEL=5 로 5도 간격으로 눈금값을 표출하게 설정하면 경위도 눈금값이 겹쳐 보이지 않습니다.

  • #5536 답변

    Jonghyuk
    회원

    xloadct, 23
    IDL> xloadct, 23
    IDL> xpalette

    xloadct, 23, ncolors=10
    IDL> xloadct, 23, ncolors=10
    IDL> xpalette

    xloadct, 23, ncolors=10, bottom=128
    IDL> xloadct, 23, ncolors=10, bottom=128
    IDL> xpalette

  • #5538 답변

    qrjtl5383
    회원

    덕분에 IDL 프로그램 업무가 수월하게 진행되었습니다. 감사합니다.

'지도표출질문드립니다.'에 답변달기
글쓴이 정보: