import numpy as np
from matplotlib import pyplot as plt
from matplotlib.animation import FuncAnimation
plt.style.use('seaborn-pastel')
#tabladwarfs = np.loadtxt("./data/dwarfs.csv", skiprows=1,delimiter=',')## delimiter para decir que la separacion entre columnas es ,
#tablagiants = np.loadtxt("./data/giants.txt", skiprows=1)
#tablams = np.loadtxt("./data/ms.csv", skiprows=1,delimiter=',')
#tablasuperg = np.loadtxt("./data/supergiants.txt", skiprows=1)
## RECORDAR en datos lum,temp,radius
## Mas facil juntar todo con np.vstack()
data1 = np.loadtxt("./data/dwarfs.csv", skiprows=1,delimiter=',')
data2 = np.vstack((data1,np.loadtxt("./data/giants.txt", skiprows=1) ) )
data3 = np.vstack((data2,np.loadtxt("./data/ms.csv", skiprows=1,delimiter=',') ) )
data = np.vstack((data3,np.loadtxt("./data/supergiants.txt", skiprows=1)) )
#print(data)
plt.figure(figsize=(11,8))
ax = plt.subplot(111)
lum = data[:,0]
temp = data[:,1]
radius = data[:,2]
n = len(lum)
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.set_xlim(temp.max()*1.1,temp.min()*0.7)
ax.set_ylim(bottom=lum.min()*0.3,top=lum.max()*9 )
plt.ylabel('Luminosity ($L_{sum}$)',fontsize='large')
plt.xlabel('Temperature ($K$)',fontsize='large')
#plt.xlim(temp.max()*1.1,temp.min()*0.7)#, plt.xticks([])
#plt.ylim(lum.min()*0.3,lum.max()*9)#, plt.yticks([])
ax.text(6500,5E-4,'DWARFS',c='Black' ,fontsize='large', fontweight=1000 )
ax.text(10400,145000 ,'Blue giants',c='Black' ,fontsize='large', fontweight=1000 )
ax.text(6000,25000,'Super red giants',c='Black' ,fontsize='large', fontweight=1000 )
ax.text(5600,200,'Red giants',c='Black' ,fontsize='large', fontweight=1000 )
ax.text(12000,7,'Main sequence',c='Black' ,fontsize='large', fontweight=1000 )
ax.text(7200,0.15,'Main sequence',c='Black' ,fontsize='large', fontweight=1000 )
plt.yscale('log')
#ax.scatter(temp,lum,s=10*radius, c=temp*0.5 , alpha=.5 , edgecolor='black' ,cmap = 'Spectral' )
line = ax.scatter(temp,lum,s=10*radius, c=temp*0.5 , alpha=.5 , edgecolor='black' ,cmap = 'Spectral' )
plt.show()
def init():
line = ax.scatter([],[])
plt.show()
return line
def animate(i):
temp2 = temp.copy() ## basicamente hago cero todo lo de la izquierda y asi el punto quedara fuera del grafico
for x in range(0,len(temp),1):
if temp[x] > i*200: ## chequeo que el punto en x (la temperatura) si este a la derecha
temp2[x]=0 ##si no esta a la derecha lo hago cero
line = ax.scatter(temp2,lum,s=10*radius, c=temp*0.5 , alpha=.5 , edgecolor='black' ,cmap = 'Spectral' )
plt.show()
return line
## como i aumenta eventualmente completare todos los puntos
fig, ax = plt.subplots()
fig.figsize=(12,10)
lum = data[:,0]
temp = data[:,1]
radius = data[:,2]
n = len(lum)
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.set_xlim(temp.max()*1.1,temp.min()*0.7)
ax.set_ylim(lum.min()*0.3,lum.max()*9)
#plt.xlim(temp.max()*1.1,temp.min()*0.7)#, plt.xticks([])
#plt.ylim(lum.min()*0.3,lum.max()*9)#, plt.yticks([])
ax.text(6500,5E-4,'DWARFS',c='Black' ,fontsize='large', fontweight=1000 )
ax.text(11000,65000 ,'Blue giants',c='Black' ,fontsize='large', fontweight=1000 )
ax.text(6000,25000,'Super red giants',c='Black' ,fontsize='large', fontweight=1000 )
ax.text(5900,500,'red giants',c='Black' ,fontsize='large', fontweight=1000 )
ax.text(12000,7,'Main sequence',c='Black' ,fontsize='large', fontweight=1000 )
ax.text(7200,0.15,'Main sequence',c='Black' ,fontsize='large', fontweight=1000 )
plt.yscale('log')
anim = FuncAnimation(fig, animate, init_func=init, frames=100,interval=50)
anim.save('prueba.gif')
MovieWriter ffmpeg unavailable; using Pillow instead.