Skip to content
Snippets Groups Projects
Commit 29813108 authored by Jesus David Bermudez Sanchez's avatar Jesus David Bermudez Sanchez
Browse files

ajustes finales del archivo

parent f3642b8a
No related branches found
No related tags found
No related merge requests found
%% Cell type:markdown id: tags:
# *Mi nombre es Jesus David Bermudez Sanchez, soy estudiante de la Maestria en Fisica de la Universidad Nacional de Colombia, Sede Bogotá*
---
%% 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
%% Cell type:markdown id: tags:
### Importamos el arreglo de numpy que guardamos en la carpeta data con el nombre estrellas.npy
%% Cell type:code id: tags:
``` python
import numpy as np
estrellitas = np.load('./data/estrellas.npy')
```
%% Cell type:markdown id: tags:
### Hacemos el "fondo" donde van a aparecer los datos.
%% Cell type:code id: tags:
``` python
from matplotlib import pyplot as plt
from matplotlib.animation import FuncAnimation
fig = plt.figure(figsize=(12,8))
axes=plt.axes(xlim=(3000, 14000), ylim=(10**(-5), 10**7))
# Invertimos el eje x
axes.invert_xaxis()
# Colocamos escala logaritmica al eje y
plt.yscale("log")
plt.xlabel("Temperatura (K)",fontsize=20)
plt.ylabel(r"Luminosidad ($L_{sun}$)",fontsize=20)
size_letra=15
# Las coordenadas donde se introducen los textos se ponen a ojo.
axes.annotate('Secuencia Principal',(7700,0.1),fontsize=size_letra)
axes.annotate('Secuencia Principal',(11000,10),fontsize=size_letra)
axes.annotate('Gigantes Rojas',(5000,990),fontsize=size_letra)
axes.annotate('Supergigantes Rojas',(6500,70000),fontsize=size_letra)
axes.annotate('Gigantes Azules',(11000,10**5),fontsize=size_letra)
axes.annotate('Enanas Rojas',(8000,10**(-4)),fontsize=size_letra)
plt.title("Grafica H-R",fontsize=25)
```
%% Output
Text(0.5, 1.0, 'Grafica H-R')
%% Cell type:markdown id: tags:
### Creamos la animación
Para crear la animacion, definimos una funcion que llamamos `animate()`, la cual depende de una variable `i`. Esta variable es una variable interna de la libreria `FuncAnimation`, es de tipo `int` y va desde ``0`` hasta `frames-1`.
La función `animate(i)` es la encargada de "actualizar" la animacion.
En el cuadro i-esimo de la animacion estamos haciendo un grafico de dispersion con los datos hasta la i-esima _fila_ del arreglo `estrellitas`.
Los argumentos de la funcion `scatter` corresponden a:
+ **Primer Argumento** :Valores de temperatura
+ **Segundo Argumento** : Valores de luminosidad
Estos dos argumentos ubican las parejas `(temp,lum)` en el grafico.
+ **Tercer Argumento** :Valores de radio
Este argumento es el que controla el tamaño del punto que aparece. Esta multiplicado por `10` para hacer mas evidente las diferencias entre los puntos
+ **Cuarto Argumento** :Valores de temperatura
Este argumento es el encargado de poner color en los puntos. En este caso los coloca de acuerdo a los datos de temperatura.
+ **Quinto Argumento** : Mapa de Colores
Este argumento corresponde a los colores con los que se pintan los puntos en el grafico. Existen muchas posibilidades. Sin embargo, en este caso se escogio el mapa de color `'RdYlBu'`, que es el mapa de colores mas parecido al de la referencia orginal que encontre.
%% Cell type:code id: tags:
``` python
def animate(i):
axes.scatter(estrellitas[:i,1],
estrellitas[:i,0],
s=estrellitas[:i,2]*10,
c=estrellitas[:i,1],
cmap='RdYlBu')
#print(i)
animacion = FuncAnimation(fig, animate,frames=110, interval=100)#, blit=True)
# La animacion NO se muestra en el notebook.
animacion.save('aparecen_estrellas_test.gif')#, writer='imagemagick')
```
%% Output
MovieWriter ffmpeg unavailable; using Pillow instead.
%% Cell type:markdown id: tags:
### Bibliografia
+ https://www.kdnuggets.com/2019/05/animations-with-matplotlib.html
+ https://matplotlib.org/stable/gallery/animation/rain.html
+ https://www.youtube.com/watch?v=Ercd-Ip5PfQ&t=467s
......
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