2015-10-21 42 views
0

我遇到了用astropy查看圖像的問題。這裏是我的代碼:Imshow在與astropy一起使用時不顯示圖像

from astropy.io import fits 
import matplotlib.pyplot as plt 
hdu_list=fits.open("500m2deep.fit") 
image_data=hdu_list[0].data 
hdu_list.close() 
plt.imshow(image_data,cmap='gray') 
plt.show() 

打開文件工作正常,我可以顯示image_data和相似的條目。但圖片不顯示,如果我使用imshow。它顯示了以下錯誤:

C:\Python27\lib\site-packages\IPython\core\formatters.py:239: FormatterWarning: Exception in image/png formatter: FormatterWarning,

如果我使用,所建議的一些網站,%matplotlib內聯,或類似的東西,這個錯誤消失,但沒有圖像顯示在所有的程序運行,終止,無圖像持久性有機污染物向上。我也嘗試在imshow()之前加入類似plt.figure(的東西),但這也沒有幫助。

如果我使用Spyder,Ipython或Ipython Notebook,會發生這種情況。我正在使用最新版本的python(x,y)。

如何顯示圖片?

+0

還有什麼更多的警告?似乎很奇怪,它會非常不明確。這聽起來可能是你的matplotlib和/或IPython配置有問題。而不是調用'plt.show()'如果你調用'plt.savefig('img.png')'並將圖像寫入PNG會發生什麼,然後打開它?從上面給出的代碼示例中,您所做的任何事情都沒有錯或不尋常。 – Iguananaut

+0

特別是,這*可能*與宇宙無關。你可以通過像'plt.imshow(numpy.arange(10000).reshape(100,100))那樣來排除這個問題。 plt.show()'。應該給你一個彩虹。如果圖像沒有顯示,那麼IPython和matplotlib之間的通信可能會出現問題。 – Iguananaut

+0

有沒有可能讓FITS圖像可用,所以其他人可以嘗試看看他們是否可以重現問題? – Evert

回答

-1

通常,HDU列表中的第一個元素包含FITS標頭而不是圖像。您可能希望將標題保留爲單獨的變量。

header_data=hdu_list[0].data 
image_data=hdu_list[1].data 

的python4astronomers網頁有一些很好的例子:https://python4astronomers.github.io/core/numpy_scipy.html

+0

HDU 0中的圖像至少與HDU 1中的圖像一樣常見。如果HDU 0中沒有圖像,'hdu_list [0] .data'可能會崩潰或返回'None'。 – keflavich

+0

這給出了一個錯誤:列表索引超出範圍。此外,來自同一實驗室的人員在他們的電腦上使用完全相同的代碼,並獲得一張照片,所以我認爲它是0. – BlackyTheCat

+0

嗯,可能值得檢查兩件事情:您能否成功通過'plt.plot(範圍(10))'?如果您按照不同的FITS文件(https://python4astronomers.github.io/core/numpy_scipy.html)中的這些說明操作,是否會得到相同的錯誤? – user3148185

0

也許來不及對你有用的解決方案,但MAYB別人也能從中獲利。 我最近遇到了同樣的問題,在Ubuntu 16.04,蟒蛇3.5和1.1.1 Astropy使用示例代碼從astropy網站(第一和最後一行添加我的),它是:

#!/usr/bin/python3 
import matplotlib.pyplot as plt 
from astropy.wcs import WCS 
from astropy.io import fits 
from astropy.utils.data import get_pkg_data_filename 

filename = get_pkg_data_filename('galactic_center/gc_msx_e.fits') 

hdu = fits.open(filename)[0] 
wcs = WCS(hdu.header) 
plt.subplot(projection=wcs) 
plt.imshow(hdu.data, vmin=-2.e-5, vmax=2.e-4, origin='lower') 
plt.grid(color='white', ls='solid') 
plt.xlabel('Galactic Longitude') 
plt.ylabel('Galactic Latitude') 
plt.show() 

它沒有開放數字窗口,但沒有顯示任何圖像數據。 將astropy版本更新爲1.3(也將numpy更新爲1.11.3)修復了問題。現在它工作正常。

相關問題