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: %% 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á* # *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: %% Cell type:markdown id: tags:
## Ejercicio No. 2 ## Ejercicio No. 2
- Después de tener un diseño de base para el ejercicio No. 1, en este ejercicio - 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 se pide generar una animación, en la cual se reproduzca el mismo gráfico de
antes pero las estrellas vayan apareciendo progresivamente antes pero las estrellas vayan apareciendo progresivamente
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
### Importamos el arreglo de numpy que guardamos en la carpeta data con el nombre estrellas.npy ### Importamos el arreglo de numpy que guardamos en la carpeta data con el nombre estrellas.npy
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
import numpy as np import numpy as np
estrellitas = np.load('./data/estrellas.npy') estrellitas = np.load('./data/estrellas.npy')
``` ```
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
### Hacemos el "fondo" donde van a aparecer los datos. ### Hacemos el "fondo" donde van a aparecer los datos.
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
from matplotlib import pyplot as plt from matplotlib import pyplot as plt
from matplotlib.animation import FuncAnimation from matplotlib.animation import FuncAnimation
fig = plt.figure(figsize=(12,8)) fig = plt.figure(figsize=(12,8))
axes=plt.axes(xlim=(3000, 14000), ylim=(10**(-5), 10**7)) axes=plt.axes(xlim=(3000, 14000), ylim=(10**(-5), 10**7))
# Invertimos el eje x # Invertimos el eje x
axes.invert_xaxis() axes.invert_xaxis()
# Colocamos escala logaritmica al eje y # Colocamos escala logaritmica al eje y
plt.yscale("log") plt.yscale("log")
plt.xlabel("Temperatura (K)",fontsize=20) plt.xlabel("Temperatura (K)",fontsize=20)
plt.ylabel(r"Luminosidad ($L_{sun}$)",fontsize=20) plt.ylabel(r"Luminosidad ($L_{sun}$)",fontsize=20)
size_letra=15 size_letra=15
# Las coordenadas donde se introducen los textos se ponen a ojo. # 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',(7700,0.1),fontsize=size_letra)
axes.annotate('Secuencia Principal',(11000,10),fontsize=size_letra) axes.annotate('Secuencia Principal',(11000,10),fontsize=size_letra)
axes.annotate('Gigantes Rojas',(5000,990),fontsize=size_letra) axes.annotate('Gigantes Rojas',(5000,990),fontsize=size_letra)
axes.annotate('Supergigantes Rojas',(6500,70000),fontsize=size_letra) axes.annotate('Supergigantes Rojas',(6500,70000),fontsize=size_letra)
axes.annotate('Gigantes Azules',(11000,10**5),fontsize=size_letra) axes.annotate('Gigantes Azules',(11000,10**5),fontsize=size_letra)
axes.annotate('Enanas Rojas',(8000,10**(-4)),fontsize=size_letra) axes.annotate('Enanas Rojas',(8000,10**(-4)),fontsize=size_letra)
plt.title("Grafica H-R",fontsize=25) plt.title("Grafica H-R",fontsize=25)
``` ```
%% Output %% Output
Text(0.5, 1.0, 'Grafica H-R') Text(0.5, 1.0, 'Grafica H-R')
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
### Creamos la animación ### 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`. 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. 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`. 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: Los argumentos de la funcion `scatter` corresponden a:
+ **Primer Argumento** :Valores de temperatura + **Primer Argumento** :Valores de temperatura
+ **Segundo Argumento** : Valores de luminosidad + **Segundo Argumento** : Valores de luminosidad
Estos dos argumentos ubican las parejas `(temp,lum)` en el grafico. Estos dos argumentos ubican las parejas `(temp,lum)` en el grafico.
+ **Tercer Argumento** :Valores de radio + **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 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 + **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. 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 + **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. 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: %% Cell type:code id: tags:
``` python ``` python
def animate(i): def animate(i):
axes.scatter(estrellitas[:i,1], axes.scatter(estrellitas[:i,1],
estrellitas[:i,0], estrellitas[:i,0],
s=estrellitas[:i,2]*10, s=estrellitas[:i,2]*10,
c=estrellitas[:i,1], c=estrellitas[:i,1],
cmap='RdYlBu') cmap='RdYlBu')
#print(i) #print(i)
animacion = FuncAnimation(fig, animate,frames=110, interval=100)#, blit=True) 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') animacion.save('aparecen_estrellas_test.gif')#, writer='imagemagick')
``` ```
%% Output %% Output
MovieWriter ffmpeg unavailable; using Pillow instead. MovieWriter ffmpeg unavailable; using Pillow instead.
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
### Bibliografia ### Bibliografia
+ https://www.kdnuggets.com/2019/05/animations-with-matplotlib.html + https://www.kdnuggets.com/2019/05/animations-with-matplotlib.html
+ https://matplotlib.org/stable/gallery/animation/rain.html + https://matplotlib.org/stable/gallery/animation/rain.html
+ https://www.youtube.com/watch?v=Ercd-Ip5PfQ&t=467s + 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