Comment tracer les données de lumière visible d'une galaxie à l'aide de la base de données OpenNGC en python

Qu'est-ce que le catalogue Open NGC?

(OpenNGC) [https://github.com/mattiaverga/OpenNGC] est une base de données qui organise NGC (New General Catalog) et IC (Index Catalog).

PyOngc dans l'interface python

Vous pouvez facilement obtenir les données en utilisant https://github.com/mattiaverga/PyOngc. Il peut être installé avec pip install pyongc sur la série python3.

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

Lorsque vous installez pyongc, des outils de ligne de commande sont également installés et vous pouvez voir combien d'étoiles et de galaxies sont incluses avec la commande suivante.

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

Lors de l'analyse de l'ensemble du catalogue

Si vous souhaitez analyser l'ensemble du catalogue, téléchargez le fichier csv d'origine. Si wget est installé, vous devriez pouvoir le télécharger en une seule fois ci-dessous.

python


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

Exemple de tracé NGC.csv

Exemple de code

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

diagramme de nuage de points matplotlib

ngc_bk_bs.png

Diagramme de paire Seaborn sns.

ngc_bvk_galaxy.png

Description de la base de données

Il y a une explication sur https://github.com/mattiaverga/OpenNGC/blob/master/NGC_guide.txt.

Comment simplifier le type de hable, supprimer Nan puis tracer

Par exemple, il existe de nombreux types de hable et vous voudrez peut-être les simplifier. Dans ce cas,

python


set(df["Hubble"])

Comme, vérifiez le type de type de hable. Créez un dictionnaire pour le convertir et créez une nouvelle colonne pour enregistrer le résultat de la conversion.

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

Ici, par exemple, un exemple de simple division en trois parties, Etype, Stype et Nan, est montré. La conversion de E en E est récursive et peut être folle, alors évitez de convertir le même caractère.

Comment supprimer Nan

Je ne veux pas avoir Nan dans les données, donc j'extrais uniquement les colonnes nécessaires et j'exécute dropna dessus pour supprimer Nan.

python


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

Exemple de code

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


Figure générée

ngc_bk_bj.png

Recommended Posts

Comment tracer les données de lumière visible d'une galaxie à l'aide de la base de données OpenNGC en python
Comment tracer l'autocorrélation et l'autocorrélation partielle avec Python
Comment tracer plusieurs images ajustées côte à côte en utilisant Python
Comment quitter lors de l'utilisation de Python dans Terminal (Mac)
Comment récupérer plusieurs tableaux à l'aide de slice en python.
Comment exécuter une commande à l'aide d'un sous-processus en Python
Comment développer en Python
Compagnon de science des données en python, comment spécifier des éléments dans les pandas
Comment installer Python à l'aide d'Anaconda
[Python] Comment FFT des données mp3
[Python] Comment faire PCA avec Python
Comment collecter des images en Python
Comment utiliser SQLite en Python
[Question] Comment obtenir les données des données textarea en temps réel à l'aide du flacon du framework Web Python
Comment utiliser Mysql avec python
Comment envelopper C en Python
Comment utiliser ChemSpider en Python
Comment utiliser PubChem avec Python
Comment gérer le japonais avec Python
Comment mettre à jour une source de données de classeur packagée Tableau à l'aide de Python
Comment afficher les marques de légende en un avec le tracé Python 2D
[Introduction à Python] Comment utiliser la classe en Python?
Comment définir dynamiquement des variables en Python
[Itertools.permutations] Comment créer une séquence en Python
Comment utiliser BigQuery en Python
Connectez-vous à Slack à l'aide de requêtes en Python
Comment obtenir stacktrace en python
Obtenez des données Youtube en Python à l'aide de l'API Youtube Data
Comment extraire une zone de polygone en Python
Comment vérifier la version d'opencv avec python
Comment changer de version de Python dans cloud9
Comment régler le contraste de l'image en Python
Comment utiliser __slots__ dans la classe Python
Comment remplir dynamiquement des zéros avec Python
Comment utiliser "deque" pour les données Python
Comment utiliser les expressions régulières en Python
Comment afficher Hello World en python
Comment utiliser is et == en Python
Comment écrire Ruby to_s en Python
Comment générer un nouveau groupe de journaux dans CloudWatch à l'aide de python dans Lambda
Comment envoyer une image visualisée des données créées en Python à Typetalk
Convertir un document XML stocké dans une base de données XML (BaseX) au format CSV (en utilisant Python)
Comment obtenir la valeur du magasin de paramètres dans lambda (en utilisant python)
Comment recevoir des arguments de ligne de commande en Python
[REAPER] Comment jouer à Reascript avec Python
Comment générer une séquence en Python et C ++
Comment incorporer des variables dans des chaînes python
Comment prendre plusieurs arguments lors d'un traitement parallèle à l'aide du multitraitement en python
Résumé de la façon d'importer des fichiers dans Python 3
Comment simplifier l'ajustement polymorphe restreint en python
Comment utiliser la bibliothèque d'images Python dans la série python3
Comment implémenter la mémoire partagée en Python (mmap.mmap)
[Python] Comment nommer les données de table et les sortir avec csv (méthode to_csv)
Comment créer un fichier JSON en Python
[Python] Comment lire les données de CIFAR-10 et CIFAR-100
Résumé de l'utilisation de MNIST avec Python
[Introduction à Python] Comment gérer les données au format JSON
Comment spécifier la version TLS dans les requêtes python
Comment obtenir des données d'article à l'aide de l'API Qiita