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 :

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"
Ok, cela marche bien et j'obtiens le résultat suivant :

Nom : figure_1.png
Affichages : 279
Taille : 62,7 Ko

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 :

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
Puis je trace :

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

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 !