Bonjour,
Je me permets de poster quelque chose dans la section car je bloque sur la création de ma carte de densité d'étoiles.
Je crée un diagramme couleur-magnitude (si jamais ça intéresse du monde : CMD) d'un champ stellaire.
Pour ce faire, j'utilise le code que j'ai écrit suivant :
Ok, cela marche bien et j'obtiens le résultat suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 #!/usr/bin/python # coding: utf-8 from astropy.io import fits from astropy.table import Table from astropy.table import Column import numpy as np import matplotlib.pyplot as plt ################################### # Importation du fichier de champ # ################################### filename = '/home/valentin/Desktop/Field169_combined_final_roughcal.fits_traite_traiteXY_traiteXY_final' print 'Fichier en cours de traitement' + str(filename) + '\n' # Ouverture du fichier à l'aide d'astropy field = fits.open(filename) # Lecture des données fits tbdata = field[1].data ##################################### # Traçage des différents graphiques # ##################################### fig1 = plt.figure(1) plt.plot(tbdata['g0-r0'], tbdata['g0'], '.') plt.title('Diagramme Couleur-Magnitude') plt.xlabel('(g0-r0)') plt.ylabel('g0') plt.xlim(-1.5,2.5) plt.ylim(14,28) plt.gca().invert_yaxis() plt.show() print "Création du Diagramme"
Néanmoins, j'aimerai faire une boîte de sélection pour afficher sur ce graphique par exemple (ou sur un autre, voir les 2), seulement les étoiles (points) ayant un (g0-r0) compris entre -0.4 < (g0-r0) < 0.8
Ce que je fais, c'est de coder cette sélection :
Puis je trace :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 ####################################### # Paramètres pour la carte de densité # ####################################### # Boite des étoiles bleues : Tri_1 = tbdata[((tbdata['g0-r0']) < 0.8) & (-0.4 < (tbdata['g0-r0']))] # Ne garder que les -0.4 < (g-r)0 < 0.8 print Tri_1
Mais forcément j'ai une erreur de dimension entre x et y. Ce qu'il faut faire c'est donc récupérer uniquement les valeurs de la colonne g0 correspondant aux lignes qui respectent mon Tri_1
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 fig2 = plt.figure(2) plt.plot(Tri_1, tbdata['g0'], '.') plt.title('Diagramme Couleur-Magnitude étoiles bleues') plt.xlabel('(g0-r0)') plt.ylabel('g0') plt.xlim(-1.5,2.5) plt.ylim(14,28) plt.gca().invert_yaxis() plt.show()
Mais je bloque sur la façon d'écrire cela ...
==> En gros la question c'est, comment faire une boîte de sélection
Mon fichier fits se compose de la façon suivante :
ID RA DEC NDET DEPTHFLAG SEPINDX [65] SEPFINDX [65] U UERR G GERR R RERR I IERR Z ZERR CHI SHARP FLAG PROB EBV g0 r0 i0 z0 X Y g0-r0
------------- ---------- ---------- ---- --------- ------------ ------------- ----- ---- ------- --------- ------- --------- ------- ---------- ------- ---------- -------- --------- ---- ---- --------- ------- ------- ------- ------- ------- ------- -------- --------
Field169.1255 184.766833 -30.472462 17 3 1254 .. -1 1254 .. -1 99.99 9.99 21.4875 0.0100426 20.0497 0.0070361 18.9002 0.00376412 18.4352 0.00425852 0.911594 -0.212171 -1 0.87 0.0709362 21.257831573486328, 19.895366668701172, 18.787057876586914, 18.348880767822266, -0.23369831258206375, 0.98211750000000109, 1.3624649047851562
Sur environ 200.000 lignes
Merci d'avance pour votre aide !
Partager