Skip to content
Snippets Groups Projects
Commit b6be789a authored by Jose Miguel Ladino Mendez's avatar Jose Miguel Ladino Mendez
Browse files

Entrega tarea clase03 desde jupyterhub

parent c83ed64e
No related branches found
No related tags found
No related merge requests found
.ipynb_checkpoints/
DiagramaH-R.gif

4.82 MiB

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:
# José Miguel Ladino Méndez - Maestría en Ciencias Astronomía - UNAL
# LACoNGA Physics - Ciencia de Datos - Ejercicios-clase-03-datos
%% Cell type:markdown id: tags:
## Ejercicio No. 1
%% Cell type:markdown id: tags:
* Investigue sobre el diagrama de Hertzprung-Russell, una herramienta muy
potente en astronomia, y describa un poco al respecto para darle contexto al
resto de la tarea
* El objetivo es generar un diagrama HR lo más parecido al de [esta referencia](https://socratic.org/questions/what-is-the-hertzsprung-russell-diagram-and-why-is-it-so-important-to-astronomy-#277707). No lucirá idéntico por que no se usarán exactamente los mismos datos,
y las unidades pueden ser ligeramente distinta. La idea sí es dejar su figura
lo más parecida a la de referencia en el estilo: colores, escalas en los ejes,
tamaño de los marcadores, leyendas, textos en el gráfico, etc.
* Los datos para crear la figura están en la carpeta `Data`. Cada tabla contiene
las informaciones sobre un tipo de estrellas según indican los nombres de
archivo. La información viene en 3 columnas: luminosidad en luminosidades
solares, Temperatura en Kelvin y Radio de la estrella en unidades arbitrarias
* La idea es que cada estrella en el gráfico tenga un color representativo
de su temperatura (que estrellas frías son rojas y estrellas calientes
son azules) y que el tamaño del símbolo sea representativo del tamaño de
cada estrella para diferenciar entre enanas, gigantes y estrellas de
secuencia principal
* Busque que su código sea semi automático; es indispensable leer
los datos desde el propio programa, no copiarlos a mano, y hallar una forma
de obtener los tamaños y colores sin declararlos uno a uno
## Solución:
%% Cell type:markdown id: tags:
# Diagrama de Hertzprung-Russell (diagrama H-R)
### ["El diagrama de Hertzprung-Russell es como una tabla periódica,pero de las estrellas".](https://naukas.com/2011/09/08/cien-anos-del-diagrama-de-hertzsprung-russell-el-grafico-que-organizo-las-estrellas/)
%% Cell type:markdown id: tags:
Fue realizado por primera vez en 1905 por el astrónomo Ejnar Hertzprung, luego de manera independiente en 1913 por Henry Norris Russell. El diagrama de Hertzsprung mostraba la luminosidad de las estrellas en función de su color, mientras que el realizado por Russell mostraba la luminosidad en función del tipo espectral. Con el tiempo se mostro que ambos diagramas son equivalentes. [2]
De manera usual, el eje horizontal muestra como a medida que aumenta la temperatura de una estrella, su color también cambia, yendo desde el rojo a un tono azulado, pasando antes por tonos naranjas y blancos. El eje vertical muestra la luminosidad tomando como referencia al Sol, facilitando así una identificación intuitiva de la luminosidad del resto de estrellas. [1]
El diagrama muestra que las estrellas tienden a encontrarse agrupadas en algunas zonas específicas del mismo.
La zona predominante es la diagonal que va de la región superior izquierda (caliente y brillante) a la región inferior derecha (fría y menos brillante), esta región se denomina secuencia principal. El factor común de las estrellas que forman parte de esta secuencia es que todas producen energía mediante la fusión de hidrógeno para producir helio en su interior. En relación con la masa, las estrellas de mayor masa, las gigantes azules, se sitúan en la zona superior izquierda (zona caliente y brillante), mientras que las estrellas de menor masa, las enanas rojas, se encuentran a la derecha y abajo (zona fría y menos brillante). En la esquina inferior izquierda se encuentran las enanas blancas, y en la esquina superior derecha de la secuencia principal se encuentran las gigantes rojas y las supergigantes. [2]
%% Cell type:markdown id: tags:
* [1] https://naukas.com/2011/09/08/cien-anos-del-diagrama-de-hertzsprung-russell-el-grafico-que-organizo-las-estrellas/
* [2] http://astro.org.sv/wp-content/uploads/2015/07/Charla-Diagrama-de-Hertzprung-Russell-1.pdf
%% Cell type:markdown id: tags:
![diagrama](https://useruploads.socratic.org/fiSP0m0ARcuU0oeaTZun_hr_diagram.jpg)
%% Cell type:code id: tags:
``` python
import pandas as pd #importando librería pandas para leer los datos
dwarfs = pd.read_csv('data/dwarfs.csv')
giants = pd.read_csv('data/giants.txt', sep=' ') # sep=' ' para leer correctamente las filas y columnas
ms = pd.read_csv('data/ms.csv')
supergiants = pd.read_csv('data/supergiants.txt', sep=' ')
dataframes = pd.concat([dwarfs,giants,ms,supergiants]) # para concatenar en un solo dataframe
#dataframes.to_csv(r'export_dataframe.csv')
```
%% Cell type:code id: tags:
``` python
import matplotlib.pyplot as plt #importando librería matplotlib.pyplot para graficar y editar grafico
#separando los datos de cada columna sin el encabezado e indexado
temperatura = dataframes.temp
luminosidad = dataframes.lum
Restrellas = dataframes.radius
#iniciando las configuraciones de la figura:
#tamaño, titulo, labels, limimtes de ejes y escala logarítmica en el eje vertical
plt.figure(figsize = (15,10))
plt.title('Diagrama Hertzsprung - Russell\n', fontsize = 20, fontweight = 'bold')
plt.xlabel('Temperatura (K)', fontsize=12, fontweight = 'bold')
plt.ylabel('Luminosidad ($L_{Sol}$)', fontsize = 12, fontweight = 'bold')
plt.xlim(14000, 2500)
plt.ylim(0.00001,100000000)
plt.yscale('log')
#insertando textos en sus respectivas regiones con su edición.
plt.text(12000, 9000000, 'Gigantes\n azules', fontsize = 14, fontweight = 'bold')
plt.text(5200, 9000000, 'Supergigantes\n rojas', fontsize = 14, fontweight = 'bold')
plt.text(5200, 500, 'Gigantes\n rojas', fontsize = 14, fontweight = 'bold')
plt.text(12000, 8, 'Secuencia\n principal', fontsize = 14, fontweight = 'bold')
plt.text(5200, 0.005, 'Secuencia\n principal', fontsize = 14, fontweight = 'bold')
plt.text(9500, 0.005, 'Enanas\nblancas', fontsize = 14, fontweight = 'bold')
#insertando puntos con su determinada edicion de tamaño, color y contorno.
plt.scatter(temperatura, luminosidad, Restrellas*25, temperatura, edgecolors = 'k', cmap = 'RdYlBu')
#plt.colorbar() # para ver barra de colores de convensión en función de la temperatura
plt.show()
```
%% Output
%% Cell type:markdown id: tags:
## Ejercicio No. 2
* Después de tener un diseño de base para el ejercicio No. 1, en este ejercicio
se pide generar una animación, en la cual se reproduzca el mismo gráfico de
antes pero las estrellas vayan apareciendo progresivamente
## Solución:
%% Cell type:code id: tags:
``` python
from matplotlib.animation import FuncAnimation #importando FuncAnimation para animación
#iniciando las configuraciones de la figura:
#tamaño, titulo, labels, limimtes de ejes y escala logarítmica en el eje vertical
graf = plt.figure(figsize=(15,10))
plt.title('Diagrama Hertzsprung - Russell\n', fontsize = 20, fontweight = 'bold')
plt.xlabel('Temperatura (K)', fontsize=12, fontweight = 'bold')
plt.ylabel('Luminosidad ($L_{Sol}$)', fontsize = 12, fontweight = 'bold')
plt.xlim(14000, 2500)
plt.ylim(0.00001,100000000)
plt.yscale('log')
#definiendo la función gif para la animación con entrada t el cual será el iterador del gif
def gif(t):
if any: # condicional para insertar los puntos iteradamente,
#retorna true si alguno de los elementos en t es true
x=[]
y=[]
R=[]
x.append(dataframes.temp.iloc[:t]) #añadiendo a listas los datos de cada columna,
# usando iloc para tomar los datos en base a la posición segun fila y columna
y.append(dataframes.lum.iloc[:t])
R.append(dataframes.radius.iloc[:t]*25) #*25 para aumentar visibilidad de estrellas
z = dataframes.temp.iloc[:t]
s = plt.scatter(x, y , R, z, cmap='RdYlBu', edgecolors='k')
if t > len(dataframes): #condicional para insertar los textos a cada zona correspondiente al final de
#aparecer todas las estrellas
plt.text(12000, 9000000, 'Gigantes\n azules', fontsize = 14, fontweight = 'bold')
plt.text(5200, 9000000, 'Supergigantes\n rojas', fontsize = 14, fontweight = 'bold')
plt.text(5200, 500, 'Gigantes\n rojas', fontsize = 14, fontweight = 'bold')
plt.text(12000, 8, 'Secuencia\n principal', fontsize = 14, fontweight = 'bold')
plt.text(5200, 0.005, 'Secuencia\n principal', fontsize = 14, fontweight = 'bold')
plt.text(9500, 0.005, 'Enanas\nblancas', fontsize = 14, fontweight = 'bold')
return s
anim= FuncAnimation(graf,gif,frames=len(dataframes)+25, interval=200) #aplicación de la función de animación
#+25 para ver figura finalizada
anim.save('DiagramaH-R.gif') #Animación guardada
plt.close(graf)
```
%% Output
MovieWriter ffmpeg unavailable; using Pillow instead.
%% Cell type:markdown id: tags:
* ***Nota:*** si la animación no se visualiza en la celda Markdown siguiente, porfavor ver animación en 'DiagramaH-R.gif'
%% Cell type:markdown id: tags:
<img src="DiagramaH-R.gif">
%% Cell type:code id: tags:
``` python
```
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