- This topic has 3개 답변, 2명 참여, and was last updated 10 years, 11 months 전에 by Sangwoo.
-
글쓴이글
-
-
IDLgrAXIS 객체의 축 이름(?) 이 이상해서 질문 드립니다.
ax = OBJ_NEW(‘idlgraxis’, 0, ycoord_conv=[0.1, 1])
om = OBJ_NEW(‘idlgrmodel’)
ov = OBJ_NEW(‘idlgrview’, viewplane_rect=[0,0,1,1])
ow = OBJ_NEW(‘idlgrwindow’, retain=2)om->ADD, ax
ov->ADD, om
ow->DRAW, ovnewr = [1e-4, 2e-3]
tran = norm_coord(newr)
ax->SETPROPERTY, range=newr, xcoord_conv=tran
ow->DRAW, ov
ax->GETPROPERTY, tickvalue=d
PRINT, d위의 예제를 실행 시켰을때
축 value가 시커멓게 표시가 됩니다.
처음 설정해 놓은 축의 range(0~1)범위보다 너무 넣으면 축 vlaue 가 표시 되질 않고
너무 작으면 예제 처럼 표시가 되는데요해결 방법이 없을까요??
-
Sangwoo회원
처음에 축 객체를 생성했을 때의 스케일이 중간에 축범위를 바꿔줌으로써 조정이 된 상태인데요. OG에서 축의 라벨값들도 사실은 IDLgrText 클래스의 객체들입니다. 그리고 이 텍스트 객체들 역시 그 스케일 조정의 영향을 받습니다. 예를 들면 처음에 축 범위가 0~1이었는데, 이 축을 나중에 0~100의 범위로 조정을 하면, 축 라벨 텍스트들의 크기 역시 영향을 받는단 얘기입니다. 그렇게 되면 사실 축 범위를 바꿀 때마다 라벨 문제의 크기가 자꾸 변하게 되겠죠. 지금도 그런 문제때문에 라벨 문자들의 가로 방향 크기가 너무 커진 경우입니다. 그래서 축 객체 생성후, 라벨 문자 객체의 속성을 조정함으로써, 이와 같은 범위 변화에 관계없이 원래 크기를 유지하도록 따로 설정을 해줘야 합니다. 처음에 축 객체를 생성한 직후에 다음과 같은 문구들을 넣어보세요.
ax -> GetProperty, TICKTEXT=oTT
oTT -> SetProperty, RECOMPUTE_DIMENSIONS=2그러면 축 라벨 문자들의 크기가 온전하게 유지가 되는 것을 확인할 수 있습니다. 그리고 이외에 추가적인 조언을 드린다면, 지금 그려진 축은 너무 화면에 꽉 차게 그려지고 있는데요. NORM_COORD로 얻어진 tran의 원소값들을 다음과 같이 적당히 조정해보세요. 그러면 좌우에 적당한 여백을 둘 수 있습니다. 이러한 조정값은 그래픽창의 크기 등에 따라서도 다를 수 있기 때문에 이리저리 해보시고 적당한 값을 찾으시면 됩니다.
tran[1] = tran[1]*0.84
tran[0] = tran[0]+0.11객체 지향 그래픽 체계란게 상당히 많은 부분들까지 프로그래머가 직접 챙겨줘야 하는 경우가 많습니다. 이 경우도 그러한 예라고 보시면 됩니다.
-
Sangwoo회원
코드로 적어주신 내용을 참조해보면 1d6 정도까지는 잘 되다가 1d7부터 축의 눈금을 제대로 잡지 못하는 현상이 보이는군요. 사실 정상적으로 되어야 하는데 뭔가 필요한 셋팅이 더 있는지도 모르겠습니다. 저도 좀 더 알아봐야 할 것 같습니다. 사실 NG 체계에서는 잘 되는 것으로 봐서는 뭔가 저도 모르는 비밀이 있나봅니다. 참고가 될 것 같아서 NG 체계에서의 테스트 코드를 아래 적어봅니다.
pl = plot(indgen(101), /nodata, xrange=[0D, 1D]+1D8, xtickformat='(D11.1)’)
-
바쁘실텐데 답변 감사합니다.
한가지 더 질문이 있습니다.
ax = OBJ_NEW(‘IDLGRAXIS’, 0, ycoord_conv=[0.1, 1])
ax -> GetProperty, TICKTEXT=oTT
oTT -> SetProperty, RECOMPUTE_DIMENSIONS=2
om = OBJ_NEW(‘IDLGRMODEL’)
ov = OBJ_NEW(‘IDLGRVIEW’, viewplane_rect=[0,0,1,1])
ow = OBJ_NEW(‘IDLGRWINDOW’, retain=2)om->ADD, ax
ov->ADD, om
ow->DRAW, ovnewr = [0, 1d]+1d7
tran = NORM_COORD(newr)
ax->SETPROPERTY, range=newr, xcoord_conv=tran
ow->DRAW, ov
위 예제를 돌려봤을때 축의 위치가 설정하대로 나오질 않습니다.
newr 을 크게 잡으면(9d7 이상) 이런 현상이 나타나는데요…
처음 설정해준 viewplane_rect에 비해 너무 넓은 범위를 잡아서 그런건가요??- 이 답변은 tlseorb0111에 의해 10 years, 12 months 전에 수정됐습니다.
-
-
글쓴이글