- This topic has 3개 답변, 2명 참여, and was last updated 4 years, 4 months 전에 by Sangwoo.
-
글쓴이글
-
-
Yyong회원
volume 함수를 써서 3차원 자료를 구현하고 있습니다.
3차원의 전리권에서의 Global electron density map을 그리고 있는데, volume 함수에서는 image 함수에서 max_value, min_value를 사용하는 것처럼 colorbar와 함께 컬러를 조정할 수는 없는건가요? volume 함수안에 max_value, min_value를 사용했더니 엉뚱한 그림이 생성됩니다.코드안에서 volume 함수를 사용한 부분입니다.
tTEC = fltarr(73,71,193)
table_num=39
data=ttec[*,*,*]
vol=volume(data,rgb_table0=table_num,ASPECT_RATIO=1,/current) -
Sangwoo회원
말씀하신 증상이 VOLUME 함수로 표출된 볼륨 가시화 그림이 이상하다는 것인지 아니면 함께 생성된 컬러바가 이상하다는 것인지 궁금합니다. 그리고 예제코드에서 VOLUME 함수에 사용된 3차원 배열 data의 경우는 최소값 및 최대값이 모두 0이기 때문에, 볼륨으로 가시화할 경우에는 XYZ축 외에는 아무것도 나타나지 않습니다. 최소값과 최대값이 서로 차이가 나는 배열일 경우에는 정상적으로 표출됩니다.
볼륨 가시화에서 한가지 염두에 둬야 할 것은, 색상외에 Opacity(불투명도)라는 개념이 있어서 IDL의 VOLUME 함수에서는 최소값부터 최대값까지 범위에 대하여 Opacity가 0~255의 범위로 대응된다는 것입니다. 따라서 어떤 3차원 볼륨 데이터에 대하여 최소값이 0이고 최대값이 100이라고 한다면, 값 0은 Opacity 0에 대응되어 완전 투명 처리가 되고 값 100은 Opacity 255에 대응되어 완전 불투명 처리가 됩니다. 그리고 그 사이 값들은 어중간한 불투명도를 갖게 됩니다. 볼륨 가시화에 있어서는 이러한 방식을 고려하는 것이 필요합니다.
-
Yyong회원
답변 감사드립니다.
제가 원하는 것은 VOLUME 함수로 표출된 가시화 그림에서의 color scale을 지정하고 싶은것입니다.
예를들면 max_value=10, min_value=0, rgb_table0=39로 하였을때 data값이 max_value값에 가까울수로 가시화된 그림에서 빨간색 계통으로 표시되는 것입니다.
그런데 vol=volume(data,rgb_table0=table_num,max_value=10, min_value=0,ASPECT_RATIO=1,/current)로 지정하였을때 모두 빨간색으로 그림이 나타났습니다(투명도에는 차이가 있었습니다). max_value,min_value값을 지정하지 않았을때는 정상적으로 데이터에 맞게 그림이 나타났습니다.그리고 코드에서 사용한 데이터는 data(전자밀도)=fltarr(73,71,193,24) ; 경도(-180~180),위도(90~-90),고도(80~2000),시간(0~23h)입니다. 그래서 데이터안에서 최대값, 최소값 차이는 0이 아닙니다.
- 이 답변은 Yyong에 의해 4 years, 4 months 전에 수정됐습니다.
-
Sangwoo회원
저는 원본 데이터를 갖고 있지 않기 때문에 코드에 적어주신 내용대로만 볼 수 밖에 없는데요. FLTARR 함수로 생성된 배열은 모든 값들이 0.0으로 통일됩니다. 그래서 코드에 명시된 data 배열의 값들이 모두 0.0이 될 수 밖에 없어서 그렇게 말씀을 드렸던 것입니다. 어쨌든 우선은 다음과 같이 배열 data의 최소 및 최대값이 얼마인지 VOLUME 함수에 투입되기 직전에서 확인을 해보시기 바랍니다.
data=ttec[*,*,*]
print, min(data), max(data)
vol=volume(data,rgb_table0=table_num,max_value=10, min_value=0,ASPECT_RATIO=1,/current)볼륨의 색상이 전반적으로 붉게 나타나는 것은 39번 컬러테이블에서 뒷부분의 색상들만 활용되고 있다는 뜻입니다. 어쩌면 data 배열의 값들이 10 근처에서만 왔다갔다하는 상태여서 그럴 수도 있습니다. 예를 들어 실제로는 값들의 범위가 9~10인 상황이라면 그런 현상이 나타날 수 있습니다. 따라서 이미 말씀드렸듯이 VOLUME 함수에 투입되기 직전의 data 배열의 상태를 다시 한번 확인해보는 것이 필요할 것 같습니다.
-
-
-
글쓴이글