Skip to content
Snippets Groups Projects
Commit 5c49f045 authored by Jennifer Lorena Ortega Aguilar's avatar Jennifer Lorena Ortega Aguilar
Browse files

tarea completa

parent 74bd6560
No related branches found
No related tags found
No related merge requests found
ENTREGA.html 0 → 100644
This diff is collapsed.
%% Cell type:markdown id: tags:
## Nombre: Jennifer Ortega
### Ejercicio No. 1 - Diagrama de Hertzsprung-Russell
El diagrama de Hertzsprung-Russell es un gráfico de disperción que relaciona las temperaturas efectivas de las estrellas con su luminosidad. El gráfico tiene 5 regiones principales, cada una para un grupo diferente de estrellas.
- **Grupo 1**: Contiene estrellas promedio, donde la luminocidad esta directamente relacionada con la Temperatura, son estrellas que estan al principio o en la mitad de sus vidas.
- **Grupo 2 y 3**: Gigantes rojas y las supergigantes, son estrellas viejas de tamaño pequeño y mediano que se han hinchado, por lo tanto son muy luminosas aunque no esten calientes.
- **Grupo 4**: Enanas blancas, son super calientes pero no son muy luminosas, porque son muy pequeñas.
- **Grupo 5**: Gigantes azules son enormes y no tienen un tiempo de vida largo.
%% Cell type:code id: tags:
``` python
import numpy as np
import matplotlib.pyplot as plt
import math
%matplotlib inline
```
%% Cell type:markdown id: tags:
# Resolución ejercicio 1
- Primero damos una revisión del tipo de datos que vamos a manejar y como estan distribuidos, esto lo hacemos imprimiendo una parte de los datos.
- Abrimos los archivos y guardamos en cada variable.
- Agrupamos todos los datos en 3 variables, luminosidad, temperatura, radio.
- Realizamos la gráfica con matplotlib
%% Cell type:code id: tags:
``` python
# Abrimos un archivo para mirar los datos y la estructura que tienen
f = open("data/giants.txt", "r")
print(f.read(300))
```
%% Output
lum temp radius
304.2285727480961 3654.601099459581 145.4834741161055
58.8843655355589 3808.609875061861 66.64293840181843
9.246981739382225 3991.7516919319555 27.60343000307192
58.50594519500058 4164.818179799484 50.83296773697527
32.03317600852812 4425.7738830794915 33.290930956014336
%% Cell type:code id: tags:
``` python
# abrimos y guardamos los datos, excluyendo la primera fila ya que es un encabezado
giants = np.loadtxt('data/giants.txt', delimiter=' ',skiprows=1)
supergiants = np.loadtxt('data/supergiants.txt', delimiter=' ',skiprows=1)
dwarfs = np.loadtxt('data/dwarfs.csv', delimiter=',',skiprows=1)
ms = np.loadtxt('data/ms.csv', delimiter=',',skiprows=1)
data_final = np.concatenate((giants,supergiants,dwarfs,ms))
lum = data_final[0:, 0] # creamos la variable luminosidad
temp = data_final[0:, 1] # creamos la variable temperatura
rad = data_final[0:, 2] # creamos la variable radio
```
%% Output
<class 'numpy.ndarray'>
%% Cell type:code id: tags:
``` python
print(plt.style.available) # imprime los tipos de estilo existentes
temp_color=(-temp+max(temp)) # para cambiar la escala y que los colores coincidan con los pedidos en la tarea
```
%% Output
['Solarize_Light2', '_classic_test_patch', 'bmh', 'classic', 'dark_background', 'fast', 'fivethirtyeight', 'ggplot', 'grayscale', 'seaborn', 'seaborn-bright', 'seaborn-colorblind', 'seaborn-dark', 'seaborn-dark-palette', 'seaborn-darkgrid', 'seaborn-deep', 'seaborn-muted', 'seaborn-notebook', 'seaborn-paper', 'seaborn-pastel', 'seaborn-poster', 'seaborn-talk', 'seaborn-ticks', 'seaborn-white', 'seaborn-whitegrid', 'tableau-colorblind10']
%% Cell type:code id: tags:
``` python
from matplotlib import cm
import matplotlib.style
import matplotlib as mpl
mpl.style.use('classic') # seleccion del estilo del gráfico
fig, ax = plt.subplots()
plt.scatter(temp, np.log(lum), s=10*rad, c=temp_color, norm=matplotlib.colors.LogNorm(),
edgecolors='none', alpha= 0.8)
ax.set_xlim(max(temp), min(temp)) # cambiar el orden del eje temp(X)
# La siguientes lineas son los textos dentro de la gráfica
plt.title("Diagrama Hertzsprung-Russell")
plt.xlabel("Temperatura(K)")
plt.ylabel("log(Luminosidad(Lsun))")
# escribe los textos de acuerdo a la posición
plt.text(0.6, 0.42, 'Main Sequence', transform=ax.transAxes)
plt.text(0.2, 0.55, 'Main Sequence', transform=ax.transAxes)
plt.text(0.7, 0.85, 'Red SuperGiants', transform=ax.transAxes)
plt.text(0.2, 0.88, 'Blue Giants', transform=ax.transAxes)
plt.text(0.8, 0.70, 'Red Giants', transform=ax.transAxes)
plt.text(0.50, 0.18, 'White Dwarfs', transform=ax.transAxes)
ax.grid(False) # para que no salga la cuadrícula
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 miso gráfico de
antes pero las estrellas vayan apareciendo progresivamente
%% Cell type:markdown id: tags:
# Resolución ejercicio 2
- Realizamos la animación con la función FuncAnimation de matplotlib.
- Generamos la función animate
- Realizamos la animación
%% Cell type:code id: tags:
``` python
import numpy as np
from matplotlib import pyplot as plt
from matplotlib.animation import FuncAnimation
#plt.style.use('seaborn-pastel')
log_lum = np.log(lum) # creamos una nueva variable, para facilitar la escritura
fig = plt.figure() # definimos la figura
#fig.tight_layout()
ax1 = plt.subplot(111, xlim=(min(temp), max(temp)), ylim=(min(log_lum), max(log_lum)))
plt.title("Diagrama Hertzsprung-Russell")
plt.xlabel("Temperatura(K)")
plt.ylabel("log(Luminosidad(Lsun))")
ax1.set_xlim(max(temp), min(temp))
plt.style.use('dark_background') # para cambiar el estilo del fondo
scat = ax1.scatter(temp, log_lum, s=10*rad, c=temp_color, norm=matplotlib.colors.LogNorm(),
edgecolors='none', alpha= 0.8)
def init():
scat.set_offsets(np.c_[temp,log_lum])
return scat,
def animate(i):
'''Funcion que sirve para generar imagenes en función del orden de aparicion de las estrellas'''
x = temp[0:i:1]
y = log_lum[0:i:1]
if i > len(giants):
plt.text(1.0, 0.85, 'Red Giants', transform=ax.transAxes)
if i > (len(giants)+2):
plt.text(1., 1.1, 'Red SuperGiants', transform=ax.transAxes)
if i >(len(supergiants)+len(giants)):
plt.text(0.3, 1.1, 'Blue Giants', transform=ax.transAxes)
if i > (len(supergiants)+len(giants)+len(dwarfs)):
plt.text(0.60, 0.18, 'White Dwarfs', transform=ax.transAxes)
if i > (len(supergiants)+len(giants)+len(dwarfs)+40):
plt.text(0.5, 0.7, 'Main Sequence', transform=ax.transAxes)
scat.set_offsets(np.c_[x,y])
return scat,
anim = FuncAnimation(fig, animate, init_func=init,
frames=len(temp), interval=400)# genera la animacion
anim.save('ENTREGA.gif') # guarda la animacion
```
%% Output
MovieWriter ffmpeg unavailable; using Pillow instead.
%% Cell type:markdown id: tags:
## Nota:
La ubicación del texto dentro de la imagen difiere entre la imagen que se presenta en el jupyter notebook, y la imagen guardada, esto solo sucede en el gif, por lo que en esta sección (animación) se presentan, algunos textos fuera de la imagen, pero en la imagen guardada se encuentran bien ubicados.
%% Cell type:code id: tags:
``` python
# para exportar el notebook a html
import os
os.system('jupyter nbconvert --to html ejercicio3.ipynb')
```
%% Output
65280
%% 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