import pandas as pd #importando librerÃas
import numpy as np
import ROOT
%jsroot on
stars= pd.read_csv('../data-used/stars.csv') #leyendo el .csv con pandas
stars
stars.replace(',','_', regex=True, inplace=True) #remplazar , por _
stars.replace(' ','_', regex=True, inplace=True) #remplazar espacios por _
#pandas,
stars = stars.reset_index(drop=True)
stars = stars.dropna()
stars.to_csv('../codigo/starsmod.csv')
starsmod = ROOT.TFile.Open("../codigo/starsmod.root") #abriendo data en formato .root
tree = starsmod.Get("ntuple") #obteniendo data
tree
tree.GetEntries() #número de filas
canvas = ROOT.TCanvas("Canvas","Magnitud absoluta(Mv)",800,600)
hist = ROOT.TH1F("Magnitud absoluta(Mv)",
"Magnitud absoluta de las estrellas; Intervalos de magnitud absoluta (Mv) ; Numero de estrellas ",
7,-15,27)
for event in tree:
hist.Fill(tree.Absolute_magnitude)
hist.SetFillColor(1)
hist.Draw()
canvas.Draw()
80*100/240
canvas2 = ROOT.TCanvas("Canvas2","Temperatura(K)",800,600)
hist2 = ROOT.TH1F("Temperatura(K)",
"Temperatura de las estrellas; Intervalos de Temperatura (K) ; Numero de estrellas ",7,0,40490)
for event in tree:
hist2.Fill(tree.Temperature)
hist2.SetFillColor(2)
hist2.Draw()
canvas2.SetLogy()
canvas2.Draw()
120*100/240
canvas3 = ROOT.TCanvas("Canvas3","Luminosidad(L/Lo)",800,600)
hist3 = ROOT.TH1F("Luminosidad(L/Lo)",
"Luminosidad de las estrellas (L/Lo); Intervalos de luminosidad (L/Lo) ; Numero de estrellas ",
7,0,900000)
for event in tree:
hist3.Fill(tree.Luminosity)
hist3.SetFillColor(3)
hist3.Draw()
canvas3.SetLogy()
canvas3.Draw()
162*100/240
canvas4 = ROOT.TCanvas("Canvas4","Radio(R/Ro)",800,600)
hist4 = ROOT.TH1F("Radio(R/Ro)",
"Radios de las estrellas (R/Ro); Intervalos del cociente de radios (R/Ro);Numero de estrellas",
7,0,2249)
for event in tree:
hist4.Fill(tree.Radius)
hist4.SetFillColor(4)
hist4.Draw()
canvas4.SetLogy()
canvas4.Draw()
200*100/240
import matplotlib.pyplot as plt
def Temperatura(star):
T=[]
for j in star:
T.append(j[0])
return T
def Luminosidad(star):
T=[]
for j in star:
T.append(j[1])
return T
def Radios(star):
T=[]
for j in star:
T.append(j[2])
return T
def Mag(star):
T=[]
for j in star:
T.append(j[3])
return T
starsa=np.array(stars)
plt.figure(figsize = (15,10))
plt.title('Diagrama Hertzsprung - Russell\n', fontsize = 12, fontweight = 'bold')
plt.xlabel('Temperatura (K)', fontsize=12, fontweight = 'bold')
plt.ylabel('Luminosidad ($L_{Sol}$)', fontsize = 12, fontweight = 'bold')
plt.xlim(40000, 0)
plt.ylim(0.00001,100000000)
plt.yscale('log')
plt.text(35000, 9000000, 'Gigantes\n azules', fontsize = 14, fontweight = 'bold')
plt.text(7200, 9000000, 'Supergigantes\n rojas', fontsize = 14, fontweight = 'bold')
plt.text(7200, 500, 'Gigantes\n rojas', fontsize = 14, fontweight = 'bold')
plt.text(14000, 8, 'Secuencia\n principal', fontsize = 14, fontweight = 'bold')
plt.text(9500, 0.005, 'Enanas\nblancas', fontsize = 14, fontweight = 'bold')
plt.scatter(Temperatura(starsa), Luminosidad(starsa), Radios(starsa)*25, Temperatura(starsa), edgecolors = 'k', cmap = 'RdYlBu')
#plt.colorbar() # para ver barra de colores de convensión en función de la temperatura
plt.show()
stars['Star_type'].value_counts()
stars['Spectral_Class'].value_counts()
tipos=["M","B","O","A","F","K","G"]
tipos2=["Brown Dwarf","Red Dwarf", "White Dwarf", "Main Sequence Star", "Supergiant","Hypergiant" ]
plt.figure(figsize = (15,10))
plt.subplot(121)
plt.title('Tipos de estrellas ', fontsize = 12, fontweight = 'bold')
plt.pie(stars['Star_type'].value_counts(), labels=tipos2, autopct="%0.1f %%")
plt.axis("equal")
plt.subplot(122)
plt.title('Clases espectrales ', fontsize = 12, fontweight = 'bold')
plt.pie(stars['Spectral_Class'].value_counts(), labels=tipos, autopct="%0.1f %%")
plt.axis("equal")
plt.show()
import seaborn as sns
plt.figure(figsize = (6,7))
plt.title('Mapa de calor de correlación\n ', fontsize = 12, fontweight = 'bold')
sns.heatmap(stars.corr(), annot=True)
plt.show()
stars['Star_type']
O = stars[stars["Spectral_Class"] == 'O']
B = stars[stars["Spectral_Class"] == 'B']
A = stars[stars["Spectral_Class"] == 'A']
F = stars[stars["Spectral_Class"] == 'F']
G = stars[stars["Spectral_Class"] == 'G']
K = stars[stars["Spectral_Class"] == 'K']
M = stars[stars["Spectral_Class"] == 'M']
plt.figure(figsize = (15,10))
plt.subplot(211)
plt.title('Tipo de estrella VS Magnitud absoluta (Mv) y Temperatura(K)\n para cada clase espectral\n ', fontsize = 12, fontweight = 'bold')
plt.xlabel('Magnitud absoluta (Mv)', fontsize=12, fontweight = 'bold')
plt.ylabel('Tipo de estrella', fontsize = 12, fontweight = 'bold')
ax7=plt.scatter( M['Absolute_magnitude(Mv)'],M['Star_type'], label="M")
ax2=plt.scatter( B['Absolute_magnitude(Mv)'],B['Star_type'], label="B")
ax1=plt.scatter( O['Absolute_magnitude(Mv)'],O['Star_type'], label="O")
ax3=plt.scatter( A['Absolute_magnitude(Mv)'],A['Star_type'], label="A")
ax4=plt.scatter( F['Absolute_magnitude(Mv)'],F['Star_type'], label="F")
ax6=plt.scatter( K['Absolute_magnitude(Mv)'],K['Star_type'], label="K")
ax5=plt.scatter( G['Absolute_magnitude(Mv)'],G['Star_type'], label="G")
plt.legend(loc = 'upper right')
plt.subplot(212)
#plt.title('Luminosidad (L/Lo) vs Mag\n', fontsize = 20, fontweight = 'bold')
plt.xlabel('Temperatura(K)', fontsize=12, fontweight = 'bold')
plt.ylabel('Tipo de estrella', fontsize = 12, fontweight = 'bold')
plt.scatter( M['Temperature(K)'],M['Star_type'], label="M")
plt.scatter( B['Temperature(K)'],B['Star_type'], label="B")
plt.scatter( O['Temperature(K)'],O['Star_type'], label="O")
plt.scatter( A['Temperature(K)'],A['Star_type'], label="A")
plt.scatter( F['Temperature(K)'],F['Star_type'], label="F")
plt.scatter( K['Temperature(K)'],K['Star_type'], label="K")
plt.scatter( G['Temperature(K)'],G['Star_type'], label="G")
plt.legend(loc = 'lower right')
plt.show()
plt.figure(figsize = (15,10))
plt.subplot(121)
plt.title('Radio(R/Ro) VS Magnitud absoluta(Mv)\n para cada clase espectral\n ', fontsize = 12, fontweight = 'bold')
plt.xlabel('Magnitud absoluta (Mv)', fontsize=12, fontweight = 'bold')
plt.ylabel('Radio(R/Ro)', fontsize = 12, fontweight = 'bold')
plt.yscale('log')
plt.scatter( M['Absolute_magnitude(Mv)'],M['Radius(R/Ro)'], label="M")
plt.scatter( B['Absolute_magnitude(Mv)'],B['Radius(R/Ro)'], label="B")
plt.scatter( O['Absolute_magnitude(Mv)'],O['Radius(R/Ro)'], label="O")
plt.scatter( A['Absolute_magnitude(Mv)'],A['Radius(R/Ro)'], label="A")
plt.scatter( F['Absolute_magnitude(Mv)'],F['Radius(R/Ro)'], label="F")
plt.scatter( K['Absolute_magnitude(Mv)'],K['Radius(R/Ro)'], label="K")
plt.scatter( G['Absolute_magnitude(Mv)'],G['Radius(R/Ro)'], label="G")
plt.legend(loc = 'upper right')
plt.subplot(122)
plt.title('Luminosidad(L/Lo) VS Magnitud absoluta(Mv)\n para cada clase espectral\n', fontsize = 12, fontweight = 'bold')
plt.xlabel('Magnitud absoluta (Mv)', fontsize=12, fontweight = 'bold')
plt.ylabel('Luminosidad ($L_{Sol}$)', fontsize = 12, fontweight = 'bold')
plt.yscale('log')
plt.scatter( M['Absolute_magnitude(Mv)'],M['Luminosity(L/Lo)'], label="M")
plt.scatter( B['Absolute_magnitude(Mv)'],B['Luminosity(L/Lo)'], label="B")
plt.scatter( O['Absolute_magnitude(Mv)'],O['Luminosity(L/Lo)'], label="O")
plt.scatter( A['Absolute_magnitude(Mv)'],A['Luminosity(L/Lo)'], label="A")
plt.scatter( F['Absolute_magnitude(Mv)'],F['Luminosity(L/Lo)'], label="F")
plt.scatter( K['Absolute_magnitude(Mv)'],K['Luminosity(L/Lo)'], label="K")
plt.scatter( G['Absolute_magnitude(Mv)'],G['Luminosity(L/Lo)'], label="G")
plt.legend(loc = 'upper right')
plt.show()