#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.