2차원 영상을 행방향으로 한꺼번에 plot 그리기(?)

게시판 IDL Q&A 2차원 영상을 행방향으로 한꺼번에 plot 그리기(?)

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

  • 글쓴이
  • #5299

    sjlee
    회원

    제목과 같이 어떻게 설명을 해야할지..^^;;;
    하고 싶은 것은 2차원 영상의 값을 plot 하고 싶은데,
    5*10의 배열이라고 했을때, plot의 x축(각 행)에 5개의 열방향 데이터 값을 한꺼번에 표출하고 싶습니다.

    가능한 방법이 있을까요?

  • #5300

    Sangwoo
    회원

    2차원 영상에 대하여 세로 방향의 프로파일(Profile)을 플롯으로 표출해야 하는 경우일 것 같습니다. 그러면 배열에 대하여 인덱싱을 그런 방식으로 해주면 됩니다. 5×10 형태인 원본 2차원 배열을 data라고 할 때, 맨 왼쪽에 위치한 첫번째 프로파일을 추출하여 표출하는 방식은 대략 다음과 같습니다.

    line = data[0, *]
    p = PLOT(line)

    물론 가로 방향으로 몇번째 위치를 기준으로 할 것이냐에 따라 0이란 값을 다른 인덱스 값으로 대체하면 됩니다.

  • #5301

    sjlee
    회원

    제가 하고자 하는 것은, 단순 프로파일이라기 보다…
    data=indgen(5,5)이라고 할때,
    각 라인의 5개 값들이 모두 plot 되는 그림입니다.
    plot의 x축 기준으로 설명하자면…
    x(0)는 0~4의 값 5개가 모두 찍히고
    x(1)는 5~9의 값 5개가 모두 찍히고..
    일반적이지는 않은 좀 이색적인 scatterplot이긴 합니다 .

  • #5302

    Sangwoo
    회원

    그런 경우라면 몇가지 방법이 있을 것 같은데, 제가 원래 언급했던 방법을 모든 X좌표들에 대하여 반복적으로 수행하는 것입니다. 즉 원본 2차원 데이터가 5X10의 형태라면 다음과 같습니다.

    FOR j=0, 4
    line = data[j, *]
    IF j EQ 0 THEN p = PLOT(line, LINESTYLE=6, SYMBOL=’circle’) ELSE $
    p = PLOT(line, LINESTYLE=6, SYMBOL=’circle’, /OVERPLOT)
    ENDFOR

    여기서 IF문이 사용된 이유는, 처음 플롯을 그릴 때에는 플롯을 생성해야 하는 반면 그 이후에는 중첩만 해야 하기 때문입니다. 그리고 플롯을 그릴 때 선을 잇지않고 심볼만 표시하기 위하여 몇몇 키워드들의 추가 사용은 필요합니다. 어쨌든 위 방법은 세로 방향 플롯을 반복적으로 표출하는 경우이고, 만약 가로 방향 플롯을 반복적으로 표출할 경우라면 다음과 같을 것입니다.

    FOR j=0, 9
    line = data[*, j]
    IF j EQ 0 THEN p = PLOT(line, LINESTYLE=6, SYMBOL=’circle’) ELSE $
    p = PLOT(line, LINESTYLE=6, SYMBOL=’circle’, /OVERPLOT)
    ENDFOR

    그리고 이러한 방법 외에도 SCATTERPLOT 함수를 사용하는 다른 방법도 있는데, 그 방법에 대해서는 제 블로그에 올려놓은 내용이 있으므로 이를 참조하시기 바랍니다.

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

    • 이 답변은  Sangwoo에 의해 5 월 전에 수정됐습니다.

답변은 로그인 후 가능합니다.