2016-06-12 3 views
1

matplotlibimshow을 사용하여 맞는 이미지를 플로팅하는 것과 관련하여 약간의 문제가 있습니다. 내 이미지가 가로 및 세로로 뒤집힌 것 같습니다. 누군가가 올바른 방향으로 나를 가리킬 수 있다면 그것이 간과 할 수있는 간단한 것이있을 것이라고 확신합니다.이미지가 matplotlib 방향이 잘못 지정된 FITS 파일에서 플롯

그래서 enter image description here

, 내 이미지를로드하고 있습니다으로 :

이처럼 내 이미지가 보일 것입니다 무엇

from astropy.io import fits 
import matplotlib 
import matplotlib.pyplot as pyplot 
#Opening/reading in my fits file 
hdulist = fits.open('.../myfits.fits') 
#Accessing the image data and specifying the dimensions I wish to use 
my_image = hdulist[0].data[0,0:,0:] 
#Plotting the image 
pyplot.imshow(image_SWIFT_uvm2_plot, cmap='gray', vmin=0, vmax=0.5) 
pyplot.show() 

이 플롯에서 내 이미지는 모습입니다 (플롯은 제가 포함시킨 코드보다 조금 복잡합니다. 그러나 필자는 임계 선을 자급 자족 코드로 제공했습니다 :

enter image description here

예민한 눈을 가진 사람들은 이미지가 수평 및 수직으로 뒤집 혔음을 확인해야합니다.

답변

4

FITS 파일의 경우 원점은 이미지의 왼쪽 하단에 있으므로 origin='lower'을 사용해야합니다 (기본적으로 Mat plotlib는 origin='upper'을 사용합니다).

+0

어젯밤 늦게 발견되어 완벽하게 작동합니다. 고맙습니다. – user3125347

+0

또한 파이썬으로 천문 이미지를 플로팅 할 때 WCSAxes와 APLpy라는 세계 좌표를 플롯 할 수있는 두 가지 훌륭한 패키지가 있음을 잊어 버리십시오. – saimn

+0

예, 현재 내 gridspec 레이아웃 설정에서 APLpy를 구현하고 있습니다. – user3125347

2

astropy 모듈을 한번도 사용한 적이 없지만 PyFITS가 NumPy 배열로 이미지 데이터를 열어 놓은 것을 알고 있습니다. (그리고 내가 reading인데, astropy.io.fits가 PyFITS의 기능을 상속 했으므로 같은 방식으로 작동). 이 경우 numpy.fliplrnumpy.flipud을 사용하여 원하는 방향으로 배열을 뒤집을 수 있습니다. 그냥 다른 방법으로

import numpy as np 
pyplot.imshow(np.fliplr(np.flipud(image_SWIFT_uvm2_plot)), cmap='gray', 
    vmin=0, vmax=0.5) 

와 라인

pyplot.imshow(image_SWIFT_uvm2_plot, cmap='gray', vmin=0, vmax=0.5) 

교체, 당신은 그것을 뒤집어 조금 선형 대수를 할 수있는, 아니면 그냥이 플립을 모두 수행하는 두 번

np.rot90을 사용하는 것과 같습니다 있습니다
pyplot.imshow(np.rot90(image_SWIFT_uvm2_plot, k=2), cmap='gray', vmin=0, vmax=0)