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

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

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

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

      가능한 방법이 있을까요?

    • #5300 Reply
      Sangwoo
      회원

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

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

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

    • #5301 Reply
      sjlee
      회원

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

    • #5302 Reply
      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 years, 11 months 전에 수정됐습니다.
3 답변 글타래를 보이고 있습니다
'2차원 영상을 행방향으로 한꺼번에 plot 그리기(?)'에 답변달기
글쓴이 정보: