2016-06-12 5 views
0

파이썬 패키지 matplotlib.imshow를 사용하여 맞는 세계 좌표계 값 또는 어쩌면 오른쪽 승천 또는 적위를 사용하여 맞는 이미지를 그릴 수 있는지 궁금합니다. 이 페이지 하단의 플롯과 유사 x와 y 값이 아닌 실제 픽셀 값으로 : http://astroplotlib.stsci.edu/page_images.htm플롯팅은 WCS를 x 축과 y 축으로 사용하여 matplotlib.imshow 이미지에 맞습니다.

불행하게도, 제공되는 스크립트가 IDL에 ... 뭔가 아직 능숙하지 오전에 ...

내 gridspec 레이아웃을 설명하면 도움이 될 것입니다 :

fig = pyplot.figure(figsize=(11,11)) 

gridspec_layout = gridspec.GridSpec(3,3) 
gridspec_layout.update(hspace=0.0, wspace=0.0) 

hdulist_org_M33_UVM2 = fits.open('myfits.fits') 
wcs = WCS(hdulist_org_M33_UVM2[0].header) 

pyplot_2 = fig.add_subplot(gridspec_layout[2]) 

ax = WCSAxes(fig, [0.1, 0.1, 0.8, 0.8], wcs=wcs) 

pyplot_2.add_axes(ax) 

하지만 운이 없다.

감사합니다.

+2

[APLpy] (https://aplpy.github.io)를 보았습니까? – Evert

+0

@Evert 나는 참으로. Gridspec 레이아웃으로 자습서 제안을 구현하는 방법이 무엇인지 완전히 명확하지 않습니다 ...? 이것이 어떻게 이루어 졌는지 알아? – user3125347

+0

@Evert 내 질문을 업데이트하여 Gridspec 레이아웃을 포함 시켰습니다. Gridspec 모듈에서 작동하지 않는 것 같습니다 : "AttributeError : 'AxesSubplot'객체에 'add_axes'속성이 없습니다." – user3125347

답변

1

하나의 해결책은 subplot parameter to FITSFigure을 사용하고 gridspec에서 경계를 가져 오는 것일 수 있습니다. 다음과 같은 라인을 따라

뭔가 :

from matplotlib import pyplot 
from matplotlib import gridspec 
import aplpy 

fig = pyplot.figure(figsize=(11, 11)) 
gridspec_layout = gridspec.GridSpec(3, 3) 
gridspec_layout.update(hspace=0.0, wspace=0.0) 
axes = fig.add_subplot(gridspec_layout[2]) 
m33 = aplpy.FITSFigure('wfpcii.fits', figure=fig, 
         subplot=list(gridspec_layout[2].get_position(fig).bounds), 
         # dimensions and slices are not normally necessary; 
         # my test-figure has 3 axes 
         dimensions=[0, 1], slices=[0]) 
print(dir(gridspec_layout[2])) 
print(gridspec_layout[2].get_position(fig).bounds) 
m33.show_colorscale() 
pyplot.show() 

정말 꽤 있지만 작동합니다하지 않습니다. 축에 직접 FITSFigure을 첨부하는 더 쉬운 방법을 발견하면이 대답을 수정하거나 새 질문을 올리겠습니다.

+0

정말 잘 작동합니다! 축 레이블 및 틱 글꼴의 글꼴 스타일을 편집하는 방법이 있습니까? APLpy 설명서를 살펴 봐야 할 것 같아요 ... 최고의 튜토리얼/가이드 링크가 있다면 ...? – user3125347

+0

또한 색상 맵을 어떻게 변경합니까? 예를 들어 cmap = 'gray'을 aplpy.FITSFigure 인수로 지정하면됩니다. 또는 show.colorscale() 인수 내에서? – user3125347

+1

그게 다 설명서에 있습니다. 질문에 대한 답변은 [튜토리얼] (http://aplpy.readthedocs.io/en/stable/quickstart.html)에도 있습니다. 문서를 조금 더 열람하는 것이 가치가 있을지 모릅니다. – Evert