OK, wenn Matplotlib und Astropy in Python installiert sind. Wenn das anconda3-System enthalten ist, ist es standardmäßig in Ordnung.
Am Beispiel des sichtbaren Lichts und der Röntgenbilder des NGC4051 werden das gesamte Bilddiagramm und das vergrößerte Diagramm nahe der Mitte als Beispiele gezeigt.
Generieren Sie einfach eine WCS-Klasse aus der Bildanpassungsdatei und fügen Sie sie in die Projektionsoption der matplotlib ein. Dies allein wird jedoch nur in der ursprünglichen Bildgröße angezeigt.
Wenn Sie eine bestimmte Stelle vergrößern möchten, schneiden Sie das WCS-Objekt auf die gleiche Weise wie die Bilddatei. Der Teil hriwcs [hricx-hridx: hricx + hridx, hricy-hridx: hricy + hridx] des Beispielcodes. Sie können dies der wcs-Option von matplotlib geben.
――Wenn Sie zwei Bilder übereinander anzeigen möchten, wird dies zu einem schwierigen Problem. In diesem Fall wird es kurz in Zusammenführen von Bildern mit WCS-Koordinaten und Plotten mit Python zusammengefasst.
Informationen zum Aufnehmen eines Bildes finden Sie unter So suchen Sie mit Pythons Astroquery und erhalten ein passendes Bild mit Skyviewを参考にされたい。
qiita_plot_fits_2image.py
import matplotlib
matplotlib.use('TkAgg')
import glob
import matplotlib.pyplot as plt
import sys
from matplotlib.colors import LogNorm
from astropy.wcs import WCS
from astropy.io import fits
name="NGC4051"
hri = glob.glob(name + '*HRI*.fits')
dss = glob.glob(name + '*DSS*.fits')
if len(hri) == 1 and len(dss) == 1:
pass
else:
print("need to store HRI and DSS fits")
F = plt.figure(figsize=(10,8))
hrifilename = hri[0]
hriname = hrifilename.replace(".fits",".png ")
hrihdu = fits.open(hrifilename)[0]
hriwcs = WCS(hrihdu.header)
hridata = hrihdu.data
hrixlen, hriylen = hridata.shape
hricx = int(0.5 * hrixlen)
hricy = int(0.5 * hriylen)
hridx = int(hrixlen*0.1)
hriwcscut = hriwcs[hricx-hridx:hricx+hridx,hricy-hridx:hricy+hridx]
dssfilename = dss[0]
dssname = dssfilename.replace(".fits",".png ")
dsshdu = fits.open(dssfilename)[0]
dsswcs = WCS(dsshdu.header)
dssdata = dsshdu.data
dssxlen, dssylen = dssdata.shape
dsscx = int(0.5 * dssxlen)
dsscy = int(0.5 * dssylen)
dssdx = int(dssxlen*0.1)
dsswcscut = dsswcs[dsscx-dssdx:dsscx+dssdx,dsscy-dssdx:dsscy+dssdx]
plt.figtext(0.45,0.93, name, size="large")
plt.figtext(0.15,0.9, "X-ray, Rosat HRI")
plt.figtext(0.57,0.9, "Optical, UK Shimidt")
plt.subplot(221, projection=dsswcs)
# plt.subplot(221, projection=hriwcs)
try:
plt.imshow(hridata, origin='lower', norm=LogNorm())
plt.colorbar()
except:
print("ERROR, couldn't plot log-z scale")
plt.close()
plt.grid(color='white', ls='solid')
plt.xlabel('Galactic Longitude')
plt.ylabel('Galactic Latitude')
plt.subplot(223, projection=dsswcscut)
# plt.subplot(223, projection=hriwcscut)
plt.imshow(hridata[hricx-hridx:hricx+hridx,hricy-hridx:hricy+hridx], origin='lower')
plt.colorbar()
plt.grid(color='white', ls='solid')
plt.xlabel('Galactic Longitude')
plt.ylabel('Galactic Latitude')
plt.subplot(222, projection=dsswcs)
try:
plt.imshow(dssdata, origin='lower', norm=LogNorm())
plt.colorbar()
except:
print("ERROR, couldn't plot log-z scale")
plt.imshow(dssdata, origin='lower')
plt.colorbar()
plt.grid(color='white', ls='solid')
plt.xlabel('Galactic Longitude')
plt.subplot(224, projection=dsswcscut)
plt.imshow(dssdata[dsscx-dssdx:dsscx+dssdx,dsscy-dssdx:dsscy+dssdx], origin='lower')
plt.colorbar()
plt.grid(color='white', ls='solid')
plt.xlabel('Galactic Longitude')
plt.savefig(name + ".png ")
plt.close()
Die beiden oberen Übersichten zeigen die Z-Achse als Protokoll und die beiden unteren als Linear. Wenn die Z-Achse als Protokoll angezeigt wird, kann gesagt werden, dass nur leere oder Null-Daten vorhanden sind. Versuchen Sie also, Ausnahme zu verwenden, um dies zu vermeiden.
[Wie man mit Pythons Astroquery sucht und passende Bilder mit Skyview erhält]( Ein Beispiel für eine GIF-Animation, die durch Erfassen von Röntgenbildern (ROSAT) und sichtbarem Licht (DSS) mithilfe von https://qiita.com/yamadasuzaku/items/df185d151248578e8e1e erstellt wurde. Um eine GIF-Animation zu erstellen, habe ich sie mit convert -delay 100 -loop 1 * .png xrayopt.gif generiert.
Recommended Posts