#Ejercicio 2, clase 3. Melissa Pérez
#En este ejercicio se intenta realizar una animación a partir del diagrama de Hertzprung-Russell.
import matplotlib.pyplot as plt
import matplotlib.animation as animation
%matplotlib notebook
import matplotlib.pyplot as plt
import matplotlib.animation as animation
%matplotlib notebook
#Se importan las librerías necesarias para la animación.

import pandas
data = pandas.read_csv("data_dwarfs.csv")
j
lum = list(data["lum"])
temp = list(data["temp"])
radius = list(data["radius"])
​
colores = []
for j in range(len(temp)):
    colores.append(2**13)
data = pandas.read_csv("data_ms.csv")
lum = lum + list(data["lum"])
temp = temp + list(data["temp"])
radius = radius + list(data["radius"])
colores = colores + list(data["temp"])
data = pandas.read_csv("data_supergiants.txt", sep=" ")
lum = lum + list(data["lum"])
temp = temp + list(data["temp"])
radius = radius + list(data["radius"])
colores = colores + list(data["temp"])
data = pandas.read_csv("data_giants.txt", sep=" ")
lum = lum + list(data["lum"])
temp = temp + list(data["temp"])
radius = radius + list(data["radius"])
colores = colores + list(data["temp"])
#Con la librería pandas se hace la lectura de datos y se guardan en 3 listas como en el ejercicio 1. También se crea una lista colores, de nuevo, como #en el ejercicio 1. Con ella se define el c del cmap.

import matplotlib.pyplot as plt
​
​
​
fig, ax = plt.subplots()
fig.figsize=(12,10)
#ax.scatter(temp, lum, s=radius, c=colores, cmap = 'coolwarm_r',alpha=1)
​
ax.scatter([],[])
def init():
    line = ax.scatter([],[])
    plt.show()
    return line
def animate(i):
    lum2 = lum[:i+1]
    temp2 = temp[:i+1]
    radius2 = radius[:i+1]
    colores2 = colores[:i+1]
    line = ax.scatter(temp2, lum2, s=radius2, c=colores2, cmap = 'coolwarm_r',alpha=1)
    plt.show()
    return line
    
ax.set_xlabel("Temperatura", fontsize=15)
ax.set_ylabel("Luminosidad", fontsize=15)
ax.set_xlim(15000, 3000) 
ax.set_ylim(0.00001, 10000000) 
plt.xscale("log", base=2)
plt.yscale("log")
ax.set_title('HRD')
​
plt.xticks([12000,9000,6000,3000],[12000,9000,6000,3000])
plt.yticks([10**-5,10**-2,10**1,10**4,10**7])
ax.grid(True)
fig.tight_layout()
​
anim = FuncAnimation(fig, animate, init_func=init, frames=len(lum),interval=40)
anim.save('prueba.gif')
#plt.show()
Figure 1
MovieWriter ffmpeg unavailable; using Pillow instead.
#Se crea una animación, sin embargo no es la deseada ya que no aparecen una a una las estrellas, sino que van alternando de color.