Estudiante: María José Ramos

Análisis de Datos

Módulo 1: Research Software Engineering in Python

Tarea 2: Ejercicios para practicar la lectura de archivos y la creación de imágenes

Ejercicio 1: generar diagrama de Hertzprung-Russell

Los diagramas de Hertzprung-Russell son herramientas gráficas utilizadas en astronomía, las cuales relacionan la luminosidad de una estrella con su temperatura (o bien su tipo espectral con su magnitud absoluta). Son muy útiles para el estudio de la evolución y clasificación estelar. Para este ejercicio, se propone generar un diagrama de Hertzsprung-Russell con las escalas de los ejes, textos y etiquetas adecuadas. Para ello, se usa la información de temperatura en Kelvin, Luminosidad en Luminosidades solares y radio en unidades arbitrarias para cuatro grupos de estrellas, que se puede encontrar en sus respectivos archivos dentro de la carpeta data. Además, los tamaños y colores de las estrellas deben ser representativos.
Referencia: (https://socratic.org/questions/what-is-the-hertzsprung-russell-diagram-and-why-is-it-so-important-to-astronomy-#277707)

Ejercicio 2: generar animación para el diagrama de Hertzprung-Russell

Con base en el diagrama del ejercicio 1 se debe generar una animación, en la cual se reproduzca el mismo gráfico de antes pero las estrellas vayan apareciendo progresivamente.

Ejercicio 1

Para hacer el diagrama se necesitan algunas librerías de Python: pandas para leer la data; matplotlib.pyplot para generar el gráfico y matplotlib.animation para generar la animación.

Para escribir las unidades en el gráfico, se usará letra en cursiva, la cual se obtiene de rcParams.

Cada estrella será representada por un círculo proporcional a su tamaño, el cual tendrá un color de acuerdo a su data correspondiente. Para evitar asignar los colores uno a uno, se usa un mapa de colores y de él, se obtiene el mismo número de colores que de estrellas hay en la data. En esta variante a la referencia, se usan los colores del mapa 'coolwarm', que resultan útiles para representar temperaturas. Sin embargo, como las estrellas de mayor temperatura son azules y las de menor temperatura son rojas, se necesita el reverso de este mapa de colores, dado por coolwarm_r.

Algunos factores a tomar en cuenta para el plot del diagrama:
a) Los colores claros de colors se perciben mejor en fondo negro.
b) El eje x representa la temperatura en Kelvin ('temp' en data).
c) El eje y representa la luminosidad en Luminosidades solares ('lum').
d) El marcador marker para representar un punto en la gráfica debe ser un círculo cuyo tamaño s=size viene dado por el radio ('radius') y de color proporcional a 'temp', proveniente de colors.
e) La data debe estar etiquetada en el gráfico, de acuerdo a la clasificación de sus estrellas.
f) El eje x debe estar invertido, la temperatura decrece hacia la derecha.
g) Las escalas de los ejes son logarítmicas.

Ejercicio 2

Para generar la animación se ha importado FuncAnimation; se repite el código del diagrama pero asignando size y opacity como variables, y al final se anexará la función update para usar en la animación. En esta variante, para que las estrellas aparezcan, se cambiarán los parámetros s y alpha del comando scatter por cada frame creado. Alpha es un float entre 0 y 1, donde 0 es transparente (no se ven los marcadores) y 1 es opaco (se ven los marcadores). Note que el valor de size y opacity en la función update depende del número de frames y que en size se mantiene la dependencia con el radio.