Skip to content
Snippets Groups Projects
Commit 52d0d1de authored by Jalil Varela Manjarres's avatar Jalil Varela Manjarres
Browse files

Entrega finalizada

parent c83ed64e
Branches master
No related tags found
No related merge requests found
ENTREGA.html 0 → 100644
source diff could not be displayed: it is too large. Options to address this: view the blob.
%% Cell type:markdown id: tags:
# Jalil Varela Manjarres
# Tarea 2
## Diagrama de Hertzprung-Russell
* Es un grafico que representa la informacion acerca de las luminosidades de las estrellas en funcion de sus temperaturas efectivas(color). La informacion contenida en el grafico permitio dar un paso importante para entender como las estrellas evolucionan a travez del tiempo.
* El diagrama muestra que hay diferentes agrupacion, clasificandoselas en:
1) Una secuencia principal: las estrellas caen sobre una diagonal que van desde muy frias hasta muy calientes
2) Gigantes rojas: estrellas con colores mas rojizas que las de las secuencia principal
3) Super gigantes rojas: Estrellas de coloracion rojiza o amarilla, mucho mas luminosas que las gigantes rujas
4) Enanas blancas: estrellas muy debiles de temperaturas superficiales altas
referencia: [http://www.astronomia.edu.uy/CTE2/C6.pdf]
%% Cell type:code id: tags:
``` python
#Librerias que se van a utilizar
import matplotlib.colors as mcol
import matplotlib.cm as cm
import matplotlib.pyplot as plt
import numpy as np
```
%% Cell type:markdown id: tags:
## Replicando el diagrama de Hertzprung-Russell
%% Cell type:markdown id: tags:
El primero paso es extrar la informacion de los archivos
%% Cell type:code id: tags:
``` python
#Se abren los archivos con los datos
enanas=open('./data/dwarfs.csv','r')
gigantes=open('./data/giants.txt','r')
medias=open('./data/ms.csv','r')
supergigantes=open('./data/supergiants.txt','r')
#Se leen los archivos y se almacenan en las variables ena,giga,med,sup como strings
ena=enanas.read()
giga=gigantes.read()
med=medias.read()
sup=supergigantes.read()
#Se cierran los archivos
enanas.close()
gigantes.close()
medias.close()
supergigantes.close()
```
%% Cell type:code id: tags:
``` python
# Se comprueba que efecitvamente las variables almacenaron el archivo como un string
giga
```
%% Output
'lum temp radius\n304.2285727480961 3654.601099459581 145.4834741161055\n58.8843655355589 3808.609875061861 66.64293840181843\n9.246981739382225 3991.7516919319555 27.60343000307192\n58.50594519500058 4164.818179799484 50.83296773697527\n32.03317600852812 4425.7738830794915 33.290930956014336\n'
%% Cell type:markdown id: tags:
Ahora la idea es crear una funcion que permita extrar a su vez tanto los archivos .txt o .csv, en sus respectivas columnas de luminosidad, temperatura o radio. Las columnas se encuentran separadas por espacios ' ' o por comas ',' respectivamente
%% Cell type:code id: tags:
``` python
# La funcion va a tomar como argumentos el string y el respectivo separador y devuelve 3 arrays,
#correspondientes a las columnas luminosidad, temperatura y radio
def variables_sep(x,s):
#Se incializan las listas donde se van a almacenar las columnas
lum=[]
tem=[]
radius=[]
#El string ingresado se transforma en una lista, tomando como separador (\n), correspondiendo cada elemento a una fila
g=x.split('\n')
#Se llenan las columnas, pasando fila por fila
for i in g[1:len(g)-1]:
col=i.split(s)
lum.append(float(col[0]))
tem.append(float(col[1]))
radius.append(float(col[2]))
#Devuelve un array con cada columna llena
return np.array(lum),np.array(tem),np.array(radius)
```
%% Cell type:markdown id: tags:
%% Cell type:code id: tags:
``` python
#Se crea una paleta de colores
#Normalizanmos los valores minimos y maximos de la secuencia principal
normc=mcol.Normalize(min(variables_sep(med,',')[1]),max(variables_sep(med,',')[1]))
#Se crean una paleta de colores que vayan desde el roja hasta el azul de forma equidistante entre cada uno
cm1 = mcol.LinearSegmentedColormap.from_list('redtoblue',["r","orange","yellow","white","b"])
#Recibe los datos normalizados, y la paleta de colores que se creo y devuelve el el mapa de colores
g=cm.ScalarMappable(norm=normc, cmap=cm1)
```
%% Cell type:markdown id: tags:
Ahora lo que sigue es pintar las graficas
%% Cell type:code id: tags:
``` python
# Crea la ventana con el tamaño 10 de ancho y 6 de largo
plt.figure(figsize=(10,6))
#En esta se pintan las graficas correspondientes a cada uno de los archivos
#Para tal motivo se extran los elementos de las columnas de los archivos y se usa la funcion scatter, la cual permite establecer
#el tamaño y el color de cada uno de los datos, para el color nos ayudamos de la paleta que creamos anteriormente
#Grafica de las gigantes
plt.scatter(variables_sep(giga,' ')[1],variables_sep(giga,' ')[0],s=5*variables_sep(giga,' ')[2],c=g.to_rgba(variables_sep(giga,' ')[1]),edgecolor='gray')
##Ademas se pone un texto centrado en el punto maximo de x y de y para los datos de las Gigantes
plt.text(np.max(variables_sep(giga,' ')[1]), np.max(variables_sep(giga,' ')[0]), 'Giants', fontsize = 12, horizontalalignment='center', verticalalignment='center')
#Grafico de las enanas
plt.scatter(variables_sep(ena,',')[1],variables_sep(ena,',')[0],s=5*variables_sep(ena,',')[2],c=g.to_rgba(variables_sep(ena,',')[1]),edgecolor='gray')
plt.text(np.max(variables_sep(ena,',')[1])-2000, np.max(variables_sep(ena,',')[0]) , 'Dwarfs', fontsize = 12, horizontalalignment='center', verticalalignment='center')
#Grafico de la Secuencia principal
plt.scatter(variables_sep(med,',')[1],variables_sep(med,',')[0],s=5*variables_sep(med,',')[2],c=g.to_rgba(variables_sep(med,',')[1]),edgecolor='gray')
plt.text(np.max(variables_sep(med,',')[1])-4500, np.max(variables_sep(med,',')[0]) , 'Main Sequence', fontsize = 12, horizontalalignment='center', verticalalignment='center')
#Grafico de las Supergigantes
plt.scatter(variables_sep(sup,' ')[1],variables_sep(sup,' ')[0],s=5*variables_sep(sup,' ')[2],c=g.to_rgba(variables_sep(sup,' ')[1]),edgecolor='gray')
plt.text(np.max(variables_sep(sup,' ')[1])-4000, np.max(variables_sep(sup,' ')[0]) + 0.1, u'SuperGiants', fontsize = 12, horizontalalignment='center', verticalalignment='center')
#Se ponen los nombres de los ejes y el titulo
plt.xlabel('Temperature(K)')
plt.ylabel('Luminosity(L$_{lum}$)')
plt.title('The Hertzprung-Russell diagram')
#Se pone la escala y logaritmica
plt.yscale('log')
#Llama los elementos de los eje con .gca() y luego invierte el eje y
plt.gca().invert_xaxis()
```
%% Output
%% Cell type:markdown id: tags:
# Animación
%% Cell type:code id: tags:
``` python
from matplotlib.animation import FuncAnimation
#Se crea una ventana con un tamaño dado y se establecen los limites del eje x y y
fig=plt.figure(figsize=(10,6))
ax = plt.axes(xlim=(13500, 3000), ylim=(10**-5, 10**7))
#Se pone la escala logaritmica
plt.yscale('log')
#Se ponen nombre a los ejes y titulo a la grafica
plt.xlabel('Temperature(K)')
plt.ylabel('Luminosity(L$_{lum}$)')
plt.title('The Hertzprung-Russell diagram')
#coleccion de las propiedades de la grafica que se van a pintar utilizando el formato scatter
scat = ax.scatter([], [])
#Se determina la funcion inicial
def init():
scat.set_offsets([])
return scat,
#Se concatenan todos las diferentes columnas para luego hacer una sola grafica
x=np.concatenate((variables_sep(ena,',')[1],variables_sep(med,',')[1],variables_sep(giga,' ')[1],variables_sep(sup,' ')[1]),axis=0)
y=np.concatenate((variables_sep(ena,',')[0],variables_sep(med,',')[0],variables_sep(giga,' ')[0],variables_sep(sup,' ')[0]),axis=0)
z=np.concatenate((variables_sep(ena,',')[2],variables_sep(med,',')[2],variables_sep(giga,' ')[2],variables_sep(sup,' ')[2]),axis=0)
c=g.to_rgba(x)
#Se define la funcion que va a contener los frames de la animacion
def animate(i):
scat.set_offsets(np.c_[x[:i],y[:i]])
scat.set_color(c[:i])
scat.set_sizes(z[:i]*8)
scat.set_edgecolor('gray')
return scat,
#Se utilizan los parametros para generar la animacion
anim = FuncAnimation(fig, animate, init_func=init,
frames=len(x+1), interval=50, blit=True)
#Se guarda la animacion
anim.save('animation_Hertzprung_Russell_diagram.gif')
```
%% Output
MovieWriter ffmpeg unavailable; using Pillow instead.
%% Cell type:code id: tags:
``` python
!jupyter nbconvert --to html ENTREGA.ipynb
```
%% Output
[NbConvertApp] Converting notebook ENTREGA.ipynb to html
[NbConvertApp] Writing 696261 bytes to ENTREGA.html
animation_Hertzprung_Russell_diagram.gif

696 KiB

prueba.gif

696 KiB

0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment