Zeichnen von Daten einer Galaxie mit sichtbarem Licht mithilfe der OpenNGC-Datenbank in Python

Was ist der Open NGC-Katalog?

(OpenNGC) [https://github.com/mattiaverga/OpenNGC] ist eine Datenbank, die NGC (New General Catalog) und IC (Index Catalog) organisiert.

PyOngc in der Python-Oberfläche

Sie können die Daten einfach über https://github.com/mattiaverga/PyOngc abrufen. Es kann mit pip install pyongc auf der Python3-Serie installiert werden.

python


import pyongc
name="NGC4051"                                                                                         
DSOobject = pyongc.Dso(name) 
gtype = DSOobject.getType() 
mag = DSOobject.getMagnitudes() 
surf = DSOobject.getSurfaceBrightness() 
hubble = DSOobject.getHubble()                                                                 
# print(gtype,mag,surf,hubble)
# ('Galaxy', (11.08, 12.92, 8.58, 8.06, 7.67), 22.87, 'SABb')

Wenn Sie pyongc installieren, werden auch Befehlszeilentools installiert, und Sie können sehen, wie viele Sterne und Galaxien im folgenden Befehl enthalten sind.

python


> ongc stats

PyONGC version: 0.5.1
Database version: 20191019
Total number of objects in database: 13978
Object types statistics:
	Star                         -> 546
	Double star                  -> 246
	Association of stars         -> 62
	Star cluster + Nebula        -> 66
	Dark Nebula                  -> 2
	Duplicated record            -> 636
	Emission Nebula              -> 8
	Galaxy                       -> 10490
	Globular Cluster             -> 205
	Group of galaxies            -> 16
	Galaxy Pair                  -> 212
	Galaxy Triplet               -> 23
	HII Ionized region           -> 83
	Nebula                       -> 93
	Nonexistent object           -> 14
	Nova star                    -> 3
	Open Cluster                 -> 661
	Object of other/unknown type -> 434
	Planetary Nebula             -> 129
	Reflection Nebula            -> 38
	Supernova remnant            -> 11

Bei der Analyse des gesamten Katalogs

Wenn Sie den gesamten Katalog analysieren möchten, laden Sie die ursprüngliche CSV-Datei herunter. Wenn wget installiert ist, sollten Sie es in einer Einstellung unten herunterladen können.

python


wget https://raw.githubusercontent.com/mattiaverga/OpenNGC/master/NGC.csv .

Beispiel für ein NGC.csv-Diagramm

Codebeispiel

python


import pandas as pd
df = pd.read_table('NGC.csv', header=0,delimiter=";")

import matplotlib.mlab as mlab
import matplotlib.pyplot as plt
import matplotlib.cm as cm
plt.rcParams['font.family'] = 'serif'
import matplotlib.colors as colors

fig = plt.figure(figsize=(14,7.))
ax = fig.add_subplot(1, 2, 1)

num=len(set(df["Hubble"]))
usercmap = plt.get_cmap('jet')
cNorm  = colors.Normalize(vmin=0, vmax=num)
scalarMap = cm.ScalarMappable(norm=cNorm, cmap=usercmap)

for i, sp in enumerate(set(df["Hubble"])):
    c = scalarMap.to_rgba(i)
    df_species = df[df['Hubble'] == sp]
    ax.scatter(data=df_species, x='B-Mag', y='K-Mag', label=sp, color=c, s=1)

plt.xlabel("B-Mag")
plt.ylabel("K-Mag")
plt.legend(bbox_to_anchor=(0., 1.01, 1., 0.01), loc='lower left',ncol=8, mode="expand", borderaxespad=0.,fontsize=8)

ax = fig.add_subplot(1, 2, 2)


for i, sp in enumerate(set(df["Hubble"])):
    c = scalarMap.to_rgba(i)
    df_species = df[df['Hubble'] == sp]
    ax.scatter(data=df_species, x='B-Mag', y='SurfBr', label=sp, color=c, s=1)

plt.xlabel("B-Mag")
plt.ylabel(r"Surface brigness within 25 mag isophoto (B-band) [mag/arcsec$^2$]")
plt.legend(bbox_to_anchor=(0., 1.01, 1., 0.01), loc='lower left',ncol=8, mode="expand", borderaxespad=0.,fontsize=8)

plt.savefig("ngc_bk_bs.png ")
plt.show()

import seaborn as sns
sns.pairplot(df[df["Type"]=="G"],vars=["B-Mag","V-Mag","K-Mag"])
plt.savefig("ngc_bvk_galaxy.png ")

Matplotlib-Streudiagramm

ngc_bk_bs.png

Seaborn sns.pairplot Diagramm

ngc_bvk_galaxy.png

Datenbankbeschreibung

Eine Erklärung finden Sie unter https://github.com/mattiaverga/OpenNGC/blob/master/NGC_guide.txt.

So vereinfachen Sie den Hable-Typ: Entfernen Sie Nan und zeichnen Sie dann

Zum Beispiel gibt es viele Hable-Typen, und Sie können sie vereinfachen. In diesem Fall,

python


set(df["Hubble"])

Überprüfen Sie den Typ des Habil-Typs. Erstellen Sie ein Wörterbuch, um es zu konvertieren, und erstellen Sie eine neue Spalte, um das Ergebnis der Konvertierung aufzuzeichnen.

python


htype={'E':"Etype", 'E-S0':"Etype",  'E?':"Etype",  'I':"Etype",  'IAB':"Etype",  'IB':"Etype",  \
'S0':"Etype", 'S0-a':"Etype",  'S?':"Etype",  'SABa':"Stype",   'SABb':"Stype",  'SABc':"Stype",  'SABd':"Stype",  'SABm':"Stype",  'SBa':"Stype", \
'SBab':"Stype", 'SBb':"Stype", 'SBbc':"Stype", 'SBc':"Stype", 'SBcd':"Stype", 'SBd':"Stype", 'SBm':"Stype", 'Sa':"Stype", 'Sab':"Stype", 'Sb':"Stype",  \
'Sbc':"Stype", 'Sc':"Stype", 'Scd':"Stype", 'Sd':"Stype", 'Sm':"Stype", "nan":"Nan"}
df["htype"] = df["Hubble"]
df = df.replace({"htype":htype})

Hier wird zum Beispiel ein Beispiel für die einfache Aufteilung in drei Teile, Etype, Stype und Nan, gezeigt. Das Konvertieren von E in E ist rekursiv und kann verrückt sein. Vermeiden Sie daher das Konvertieren in dasselbe Zeichen.

So löschen Sie Nan

Ich möchte Nan nicht in den Daten haben, also extrahiere ich nur die erforderlichen Spalten und führe darauf eine Dropna aus, um Nan zu löschen.

python


    ds = df_species.loc[:,["B-Mag","K-Mag","J-Mag"]] 
    ds = ds.dropna(how='any')

Beispielcode

python



import pandas as pd
df = pd.read_table('NGC.csv', header=0,delimiter=";")

htype={'E':"Etype", 'E-S0':"Etype",  'E?':"Etype",  'I':"Etype",  'IAB':"Etype",  'IB':"Etype",  \
'S0':"Etype", 'S0-a':"Etype",  'S?':"Etype",  'SABa':"Stype",   'SABb':"Stype",  'SABc':"Stype",  'SABd':"Stype",  'SABm':"Stype",  'SBa':"Stype", \
'SBab':"Stype", 'SBb':"Stype", 'SBbc':"Stype", 'SBc':"Stype", 'SBcd':"Stype", 'SBd':"Stype", 'SBm':"Stype", 'Sa':"Stype", 'Sab':"Stype", 'Sb':"Stype",  \
'Sbc':"Stype", 'Sc':"Stype", 'Scd':"Stype", 'Sd':"Stype", 'Sm':"Stype", "nan":"Nan"}

df["htype"] = df["Hubble"]
df = df.replace({"htype":htype})

import matplotlib.mlab as mlab
import matplotlib.pyplot as plt
import matplotlib.cm as cm
plt.rcParams['font.family'] = 'serif'
import matplotlib.colors as colors

fig = plt.figure(figsize=(14,7.))

ax = fig.add_subplot(1, 2, 1)
for i, sp in enumerate(set(df["htype"])):
    df_species = df[df['htype'] == sp]
    ds = df_species.loc[:,["B-Mag","K-Mag","J-Mag"]] 
    ds = ds.dropna(how='any')
    bk = ds["B-Mag"] - ds["K-Mag"]
    bj = ds["B-Mag"] - ds["J-Mag"]   
    ax.scatter(bk,bj,label=sp, s=2)
plt.xlabel("B-K")
plt.ylabel("B-J")
plt.legend(bbox_to_anchor=(0., 1.01, 1., 0.01), loc='lower left',borderaxespad=0.,fontsize=8)

ax = fig.add_subplot(1, 2, 2)
for i, sp in enumerate(set(df["htype"])):
    df_species = df[df['htype'] == sp]
    ds = df_species.loc[:,["B-Mag","K-Mag","J-Mag"]] 
    ds = ds.dropna(how='any')
    bj = ds["B-Mag"] - ds["J-Mag"]   
    ax.scatter(ds["B-Mag"],bj,label=sp, s=2)
plt.xlabel("B")
plt.ylabel("B-J")
plt.legend(bbox_to_anchor=(0., 1.01, 1., 0.01), loc='lower left',borderaxespad=0.,fontsize=8)

plt.savefig("ngc_bk_bj.png ")
plt.show()


Generierte Figur

ngc_bk_bj.png

Recommended Posts

Zeichnen von Daten einer Galaxie mit sichtbarem Licht mithilfe der OpenNGC-Datenbank in Python
Wie man Autokorrelation und partielle Autokorrelation mit Python zeichnet
So zeichnen Sie Bilder mit mehreren Anpassungen nebeneinander mit Python
Beenden bei Verwendung von Python in Terminal (Mac)
So rufen Sie mehrere Arrays mit Slice in Python ab.
So führen Sie einen Befehl mit einem Unterprozess in Python aus
Wie man in Python entwickelt
Data Science-Begleiter in Python, wie man Elemente in Pandas spezifiziert
So installieren Sie Python mit Anaconda
[Python] Wie man MP3-Daten fFT
[Python] Wie man PCA mit Python macht
So sammeln Sie Bilder in Python
Verwendung von SQLite in Python
[Frage] So erhalten Sie die Daten von Textbereichsdaten in Echtzeit mithilfe der Python-Webframework-Flasche
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
So aktualisieren Sie eine in Tableau gepackte Arbeitsmappen-Datenquelle mit Python
Anzeigen von Legendenmarkierungen in einem mit Python 2D-Plot
[Einführung in Python] Wie verwende ich eine Klasse in Python?
Dynamisches Definieren von Variablen in Python
[Itertools.permutations] So löschen Sie eine Sequenz in Python
So arbeiten Sie mit BigQuery in Python
Melden Sie sich mit Anforderungen in Python bei Slack an
Wie bekomme ich Stacktrace in Python?
Holen Sie sich Youtube-Daten in Python mithilfe der Youtube-Daten-API
So extrahieren Sie einen Polygonbereich in Python
So überprüfen Sie die Version von opencv mit Python
So wechseln Sie die Python-Version in Cloud9
So passen Sie den Bildkontrast in Python an
Verwendung von __slots__ in der Python-Klasse
So füllen Sie mit Python dynamisch Nullen aus
Verwendung von "deque" für Python-Daten
Verwendung regulärer Ausdrücke in Python
So zeigen Sie Hello World in Python an
Verwendung ist und == in Python
Wie schreibe ich Ruby to_s in Python
So generieren Sie eine neue Protokollgruppe in CloudWatch mit Python in Lambda
So senden Sie ein visualisiertes Bild der in Python erstellten Daten an Typetalk
In der XML-Datenbank (BaseX) gespeichertes XML-Dokument in das CSV-Format konvertieren (mit Python)
So erhalten Sie den Wert aus dem Parameterspeicher in Lambda (mit Python)
So empfangen Sie Befehlszeilenargumente in Python
[REAPER] Wie man Reascript mit Python spielt
So generieren Sie eine Sequenz in Python und C ++
Einbetten von Variablen in Python-Strings
Verwendung mehrerer Argumente bei der Parallelverarbeitung mithilfe der Mehrfachverarbeitung in Python
Zusammenfassung zum Importieren von Dateien in Python 3
So vereinfachen Sie die eingeschränkte Polypoly-Anpassung in Python
Verwendung der Python-Bildbibliothek in der Python3-Serie
So implementieren Sie Shared Memory in Python (mmap.mmap)
[Python] So benennen Sie Tabellendaten und geben sie mit csv aus (to_csv-Methode)
So erstellen Sie eine JSON-Datei in Python
[Python] Lesen von Daten aus CIFAR-10 und CIFAR-100
Zusammenfassung der Verwendung von MNIST mit Python
[Einführung in Python] Umgang mit Daten im JSON-Format
So geben Sie die TLS-Version in Python-Anforderungen an
So erhalten Sie Artikeldaten mithilfe der Qiita-API