So zeichnen Sie Bilder mit mehreren Anpassungen nebeneinander mit Python

Das Überlagern passt Bilder mit Python gut in den WCS-Raum

Umgebung

OK, wenn Matplotlib und Astropy in Python installiert sind. Wenn das anconda3-System enthalten ist, ist es standardmäßig in Ordnung.

Ein Beispiel für die Überlappung zweier Bilder mit silbernem Schuss

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.

Punkt

――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.

Code- und Dateispeicherung

Informationen zum Aufnehmen eines Bildes finden Sie unter So suchen Sie mit Pythons Astroquery und erhalten ein passendes Bild mit Skyviewを参考にされたい。

Beispielcode

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()


Ausgabeergebnis

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.

NGC4051.png

Referenzbeispiel

[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

So zeichnen Sie Bilder mit mehreren Anpassungen nebeneinander mit Python
So rufen Sie mehrere Arrays mit Slice in Python ab.
So sammeln Sie Bilder in Python
Zeichnen von Daten einer Galaxie mit sichtbarem Licht mithilfe der OpenNGC-Datenbank in Python
[Google Colab] Ich möchte mehrere Bilder nebeneinander in einer Kachel anzeigen
[Python] So zeigen Sie die Elemente der Liste nebeneinander an
Wie man Autokorrelation und partielle Autokorrelation mit Python zeichnet
Verwendung mehrerer Argumente bei der Parallelverarbeitung mithilfe der Mehrfachverarbeitung in Python
So schreiben Sie in Python die Verkettung von Zeichenfolgen in mehrere Zeilen
So zeigen Sie mehrere Bilder einer Galaxie in Kacheln an
Beenden bei Verwendung von Python in Terminal (Mac)
So führen Sie einen Befehl mit einem Unterprozess in Python aus
Wie man in Python entwickelt
So schneiden Sie ein Block-Multiple-Array aus einem Multiple-Array in Python
So definieren Sie mehrere Variablen in einer Python for-Anweisung
So installieren Sie Python mit Anaconda
Verwendung von SQLite in Python
Wie man MySQL mit Python benutzt
So verpacken Sie C in Python
Verwendung von ChemSpider in Python
Verwendung von PubChem mit Python
Umgang mit Japanisch mit Python
Objektextraktion im Bild durch Mustervergleich mit OpenCV mit Python
So löschen Sie mehrere angegebene Positionen (Indizes) in einer Python-Liste
Anzeigen von Legendenmarkierungen in einem mit Python 2D-Plot
So generieren Sie eine neue Protokollgruppe in CloudWatch mit Python in Lambda
[Einführung in Python] Wie verwende ich eine Klasse in Python?
Dynamisches Definieren von Variablen in Python
So machen Sie R chartr () in Python
[Itertools.permutations] So löschen Sie eine Sequenz in Python
Senden Sie mit Python (Python3) E-Mails an mehrere Empfänger.
So arbeiten Sie mit BigQuery in Python
Melden Sie sich mit Anforderungen in Python bei Slack an
So erhalten Sie den Wert aus dem Parameterspeicher in Lambda (mit Python)
Funktion zum Speichern von Bildern nach Datum [python3]
Wie bekomme ich Stacktrace in Python?
So zeigen Sie die neunundneunzig Tabelle in Python an
So extrahieren Sie einen Polygonbereich in Python
So überprüfen Sie die Version von opencv mit Python
[Einführung in Python] So löschen Sie Zeilen, die mehrere Bedingungen in Pandas.DataFrame erfüllen
So wechseln Sie die Python-Version in Cloud9
So passen Sie den Bildkontrast in Python an
Verwendung von __slots__ in der Python-Klasse
So schreiben Sie eine Zeichenfolge, wenn Python mehrere Zeilen enthält
So füllen Sie mit Python dynamisch Nullen aus
Verwendung regulärer Ausdrücke in Python
[Rails] Erkennen radikaler Bilder durch Analysieren von Bildern mithilfe der Cloud Vision API
So zeigen Sie Hello World in Python an
So suchen Sie mit Pythons Astroquery und erhalten passende Bilder mit Skyview
Blender 2.9, Python, Wählen Sie mehrere Netze nach Koordinaten aus
Verwendung ist und == in Python
Wie schreibe ich Ruby to_s in Python
So zeigen Sie Bilder in Djangos Admin an
So zeichnen Sie ein OpenCV-Bild mit Pygame
Sortieren durch Angabe einer Spalte im Python Numpy-Array.
Was tun, wenn die Python-Version in Cloud 9 von einer anderen Person erstellt wurde?
So erstellen Sie eine Umgebung für die Verwendung mehrerer Python-Versionen auf einem Mac
Lesen aller in * .py enthaltenen Klassen in dem von Python angegebenen Verzeichnis
So studieren Sie die Grundprüfung zur Python 3-Ingenieurzertifizierung durch Python-Anfänger (bestanden im August 2020)
Ich habe ein Modul in C-Sprache erstellt, das von Python geladene Bilder filtert
Verwendung der C-Bibliothek in Python