Plot x축 시간 조언 부탁드립니다.

게시판 IDL Q&A Plot x축 시간 조언 부탁드립니다.

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

  • 글쓴이
  • #5617 답변

    qrjtl5383
    회원

    안녕하세요,
    데이터를 가지고 그래프를 그려보다 X축에 문제가 있어 문의드립니다.
    저는 X축에 시간을 나타내고자 아래와 같이 프로그램을 작성하여 실행하였으나, x축이 0~100까지로 설정되어있고 제가 원하는 1109~1223으로 설정되지 않았습니다.
    또 1109를 11/09로 바꾸고 싶은데 어떻게 바꿔야할지 모르겟습니다..
    많은 조언 부탁드립니다



    PRO test_ng_barplot_0
    ;
    fig_sav = 1

    file = ‘/data1/jinju2/IDL_test/NewProject/sma.csv’
    data=READ_CSV(file, TYPES=[‘float’, ‘float’, ‘float’, ‘float’])
    ;help, data

    x1=data.field1
    x2=data.field2
    y1=data.field3
    y2=data.field4
    ;help, x1, x2, y1, y2

    ts=’201511090000′

    yr=STRMID(ts, 0, 4 )
    mo=STRMID(ts, 4, 2 )
    da=STRMID(ts, 6, 2 )
    hr=STRMID(ts, 8, 2 )
    mn=STRMID(ts, 10, 2 )
    tj = JULDAY(mo, da, yr, hr, mn)
    ;print, tj

    tj_new_ST = tj
    tj_new_EN = tj+(23D/24)+3
    ;print, tj_new_ST, tj_new_EN

    ts_new_ST=STRING(tj_new_ST, Format='(C(CMoI2.2, CDi2.2))’)
    ts_new_EN=STRING(tj_new_EN, Format='(C(CMoI2.2, CDi2.2))’)
    print, ts_new_ST
    print, ts_new_EN

    ST=intarr(ts_new_ST)
    EN=intarr(ts_new_EN)


    win = WINDOW(DIMENSIONS=[1000, 500])
    pl1 = PLOT(x2, y1, XRANGE=[ST, EN], YRANGE=[0, 60], AXIS_STYLE=1, color=’blue’, $
    XTITLE=’Time(hour)’, YTITLE=’PM!d2.5!n Concentration(μg/m!u3!n)’, $
    SYMBOL=’circle’, SYM_THICK=2, /SYM_FILLED, MARGIN=0.1, FONT_SIZE=12, FONT_STYLE=’italic’, /CURRENT, Name=’PM!d2.5!n’ )

    pl2 = PLOT(x2, y2, color=’red’,YRANGE=[0,12], AXIS_STYLE=4, $
    SYMBOL=’square’, /SYM_FILLED, MARGIN=0.1, /CURRENT, Name=’OC’)

    yaxis= AXIS(‘y’, LOCATION=[100], TICKDIR=1, TEXTPOS=10, TARGET=pl2, color=’black’, TITLE=’OC Concentration(μg/m!u3!n)’, TICKFONT_SIZE=12, TICKFONT_STYLE=’italic’);


    lgd=legend(target=[pl1, pl2], FONT_STYLE=’italic’,FONT_SIZE=10, shadow=0, position=[0.86, 0.88])

    IF fig_sav THEN win.Save, ‘/data1/jinju2/IDL_test/NewProject/plot_SMA.png’, WIDTH=800

    END

  • #5618 답변

    Sangwoo
    회원

    올리신 코드를 보면 PLOT 함수에서 X축 데이터가 x2라고 되어 있는데, 이 데이터가 어떤 값들을 담고 있는 것인지요? X축이 날짜/시간이 되게 하려면 X축 데이터는 Julian date 값들로 구성된 배열이 되어야 합니다. 예를 들어 y가 100개의 값들을 담고 있는 배열이라고 하면, 동일한 갯수의 Julian date 값들로 구성된 배열이 X축 데이터로 사용되어야 합니다. 예를 들어 이 배열이 tjs라고 한다면 대략 다음과 같은 형태로 PLOT 함수를 사용해야 합니다.

    p = PLOT(tjs, y, ~~~~)

    만약 tjs와 같은 배열이 없을 경우에는 직접 만들어야 할 수도 있습니다. 그럴 경우에는 TIMEGEN 함수를 사용합니다. 이 함수의 사용법은 아래 링크를 참조하시면 됩니다.

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

    그래서 갯수가 서로 동일한 tjs 및 y가 확보된 후에는 PLOT 함수를 사용하여 그림을 그리면 됩니다. 이 때 TICKUNITS 속성을 사용하여 X축 눈금의 간격을 제어할 수도 있고, XTICKFORMAT 속성을 사용하여 눈금별 문자의 형식을 제어할 수도 있습니다. 날짜 기반의 플롯을 그리는 방법에 관해서는 아래 링크를 참조하시면 됩니다.

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

    그리고 축 눈금 문자의 형식을 제어하는 일반적인 방법에 관해서는 아래 링크를 참조하시면 됩니다.

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

    다만 질문하셨던 것처럼 1109 대신 11/09와 같이 표시되도록 하려면, 다음과 같은 형태로 포맷 코드의 내용에 “/” 문자를 삽입하면 됩니다.

    ‘(C(CMoI2.2, “/”, CDi2.2))’

'Plot x축 시간 조언 부탁드립니다.'에 답변달기
글쓴이 정보: