2016-06-12 6 views
1

matplotlibimshowを使用してフィット画像をプロットする際に少し問題があります。私のイメージは水平方向と垂直方向の両方で反転しているようです。誰かが正しい方向に私を向けることができれば、私は見落としているシンプルなものがあると確信しています。matplotlibが正しく配置されていないFITSファイルからプロットされた画像

これは私のイメージはどのように見えるかです:これは、プロットの私のイメージは(ように見えるものである

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

、私は私のイメージをロードしていますプロットは、私が含まれているコードより少し複雑ですが、私は、うまくいけば、自己充足コードとして重要な線を与えています): enter image description here

鋭い目を持つ人は、画像が水平と垂直の両方で反転していることを確認する必要があります。

答えて

4

FITSファイルの場合、原点は画像の左下隅にあるため、origin='lower'(デフォルトではMat plotlibはorigin='upper'を使用します)。

+0

これは昨夜遅く見つけられ、完璧に動作します。ありがとうございました。 – user3125347

+0

また、Pythonで天文画像をプロットする場合、ワールド座標をプロットできる2つの素晴らしいパッケージがあります: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) 
関連する問題