Le catalogue Hipparcos.
Description standard utile, si l'on lit l'anglais.
Utilisation du langage d'interrogation de la base de données pour extraire les champs : Type spectral, Fe-H, B-V, VMag (magnitude absolue).
import csv
import numpy as np
import matplotlib.pyplot as plt
# V/137D Hipparchos
SpType, Fe_H, B_V, VMag = 0, 1, 2, 3
tout = []
with open('hip99999.tsv', newline='') as csvfile:
spamreader = csv.reader(csvfile, delimiter=';')
for ligne in spamreader:
tout.append(ligne)
Remarque : emploi du trait de soulignement à la place du signe moins.
spectre = [] # listes des types spectraux
b_v = [] # liste des indices de couleur
vmag = [] # liste des magnitudes absolues
maxi = 80000 # on limite à 80000 étoiles
for i in range(maxi):
ligne = tout[i]
if (len(ligne[0].strip()) > 0) and (len(ligne[1].strip()) > 0) and len(ligne[2].strip()) > 0 and len(ligne[3].strip()) > 0:
spectre.append(ligne[0].strip())
b_v.append(float(ligne[2]))
vmag.append(float(ligne[3]))
G.K et M.O et B.Remarque : le code Python a été ici optimisé pour la facilité de lecture. Le fait de réaliser trois boucles au lieu d'une n'est pas idéal sur le plan de la consommation des ressources.
bvjaune, vmagjaune = [], [] # listes pour positionner les étoiles jaunes
bvrouge, vmagrouge = [], [] # listes pour positionner les étoiles rouges
bvbleu, vmagbleu = [], [] # listes pour positionner les étoiles bleues
for i in range(len(spectre)):
if "G" in spectre[i]:
bvjaune.append(b_v[i])
vmagjaune.append(vmag[i])
for i in range(len(spectre)):
if "K" in spectre[i] or "M" in spectre[i]:
bvrouge.append(b_v[i])
vmagrouge.append(vmag[i])
for i in range(len(spectre)):
if "O" in spectre[i] or "B" in spectre[i]:
bvbleu.append(b_v[i])
vmagbleu.append(vmag[i])
Utilisation de matplotlib.
Dans l'ordre :
Les étoiles des types spectraux _autres que O,B,G,K,M sont restées en noir.
fig = plt.figure(1, figsize=(10,12)) # dimensions du cadre
plt.plot(b_v, vmag, linestyle='none', marker = 'o', c = 'black', markersize = 2)
plt.plot(bvjaune, vmagjaune, linestyle='none', marker = 'o', c = 'yellow', markersize = 1)
plt.plot(bvrouge, vmagrouge, linestyle='none', marker = 'o', c = 'red', markersize = 1)
plt.plot(bvbleu, vmagbleu, linestyle='none', marker = '+', c = 'blue', markersize = 4)
axes = plt.gca()
axes.set_xlabel("Couleur : B-V")
axes.set_ylabel("Magnitudes")
axes.invert_yaxis()
Ce diagramme m'étonne :
Extensions possibles :
IV dans G1 IV) et tracer d'autres diagrammes colorés.HIP (numéro dans le catalogue Hipparcos) au moment de la sélection et que l'on fasse la recherche individuelle des étoiles via la bibliothèque astroquery.vizier