diff --git a/Entrega_H_R.ipynb b/Entrega_H_R.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..57b4cd77276ca22a7ab818db0b3db26eb92c6f55 --- /dev/null +++ b/Entrega_H_R.ipynb @@ -0,0 +1,275 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Nombre: Carla Gomez\n", + "Estudiante Lic. FÃsica\n", + "Universidad Simón BolÃvar\n", + "Caracas, Venezuela\n", + "\n", + "**Ejercicio 1 y 2 Gráfico de Hertzsprung-Russell** \n", + "\n", + "El diagrama de Hertzsprung-Russell es un gráfico de estrellas que relaciona la luminosidad y las temperatura. Permitiendo clasificar las estrellas, ubicandolas en tres zonas definidas: \n", + "- Main sequence: va en diagonal mostrando estrellas luminosas - calientes y poco brillantes - rojas. \n", + "- Giants and Supergiants por encima de la main sequence\n", + "- Dwarves: por debajo de la diagonal (main sequence). \n", + "\n", + "Con este diagrama se puede manejar gran cantidad de estrellas gráficamente. \n", + "\n", + "En el siguiente ejercicio se plantea el uso de matplotlib para realizar un diagrama Hertzsprung-Russell, con data en 2 tipos de archivos .csv y .txt, y posteriormente animarla. \n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "id": "1UImXiD2PYDj" + }, + "outputs": [], + "source": [ + "import io\n", + "import matplotlib as mpl\n", + "import matplotlib.pyplot as plt\n", + "from matplotlib.colors import ListedColormap\n", + "from matplotlib import cm\n", + "from matplotlib.animation import FuncAnimation\n", + "from matplotlib import rc\n", + "from math import *\n", + "import matplotlib.animation as animation\n", + "import csv, json\n", + "rc('animation', html='jshtml')" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "id": "sxWwstZANZuO" + }, + "outputs": [], + "source": [ + "#Lee los archivos y guarda la informacion en la variable full_data\n", + "def read_file(filename, delimiter = ','):\n", + " with open(filename) as csv_file:\n", + " data = csv.reader(csv_file, delimiter=delimiter)\n", + " isHeader = True\n", + " total = 0\n", + " for row in data:\n", + " if (not isHeader):\n", + " total = total + 1\n", + " full_data.append(row)\n", + " else:\n", + " isHeader = False\n", + " #Responde con el numero de lineas\n", + " return total\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "id": "vTFmS3IQOBGN" + }, + "outputs": [], + "source": [ + "\n", + "full_data = []\n", + "#Lee cada archivo\n", + "mainMark = read_file('./data/ms.csv')\n", + "dwarfMark = mainMark + read_file('./data/dwarfs.csv')\n", + "giantsMark = dwarfMark + read_file('./data/giants.txt', ' ')\n", + "supergiantsMark = giantsMark + read_file('./data/supergiants.txt', ' ')" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "id": "2x3LhSG2j2kg" + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:9: MatplotlibDeprecationWarning: Adding an axes using the same arguments as a previous axes currently reuses the earlier instance. In a future version, a new instance will always be created and returned. Meanwhile, this warning can be suppressed, and the future behavior ensured, by passing a unique label to each axes instance.\n", + " if __name__ == '__main__':\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<Figure size 432x288 with 1 Axes>" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<Figure size 720x720 with 1 Axes>" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "#Titulo\n", + "plt.title('Hertzprung-Russel')\n", + "#Espacio que ocupa\n", + "fig = plt.figure(figsize=(10,10))\n", + "#Invierte el axis X\n", + "plt.gca().invert_xaxis()\n", + "\n", + "#Etiquetas de las escalas\n", + "ax = plt.axes()\n", + "ax.set_ylabel('log_lum')\n", + "ax.set_xlabel('temp')\n", + "#Eje Y con escala logaritmica\n", + "ax.set_yscale('log')\n", + "\n", + "index = 0\n", + "total = 0\n", + "temperature = []\n", + "luminosity = []\n", + "radius = []\n", + "\n", + "#Esta funcion se ejecuta en cada cuadro de la animacion\n", + "def frame(w):\n", + " #Variables globales que la funcion necesita\n", + " global index, full_data, temperature, luminosity, radius\n", + " \n", + " #Agrega una fila en cada cuadro\n", + " temperature.append(float(full_data[index][0]))\n", + " luminosity.append(float(full_data[index][1]))\n", + " radius.append(float(full_data[index][2]) * 3)\n", + " \n", + " #Cada vez que llega al final de uno de los archivos, agrega una etiqueta\n", + " if index == mainMark:\n", + " ax.annotate('Main Sequence',(10000,10))\n", + " elif index == dwarfMark:\n", + " ax.annotate('Dwarves',(7000,0.001))\n", + " elif index == giantsMark:\n", + " ax.annotate('Giants',(5000,300))\n", + " elif index == supergiantsMark -1:\n", + " ax.annotate('Supergiants',(6500,99000))\n", + " index = index + 1\n", + " \n", + " #Genera el grafico con la data actual\n", + " plot = ax.scatter(x=luminosity, y=temperature, c=cm.spectral(temperature), s=radius)\n", + " return plot" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "id": "9DRFvs3OQSYT" + }, + "outputs": [], + "source": [ + "anim = animation.FuncAnimation(fig, frame, frames=len(full_data) - 1, blit=False, repeat=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 817 + }, + "id": "KPqg6-1NllIs", + "outputId": "4a2f74db-2a96-4a49-cf11-3a613e2137eb" + }, + "outputs": [ + { + "ename": "AttributeError", + "evalue": "module 'matplotlib.cm' has no attribute 'spectral'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/IPython/core/formatters.py\u001b[0m in \u001b[0;36m__call__\u001b[0;34m(self, obj)\u001b[0m\n\u001b[1;32m 343\u001b[0m \u001b[0mmethod\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mget_real_method\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mobj\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mprint_method\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 344\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mmethod\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 345\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mmethod\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 346\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 347\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/.local/lib/python3.7/site-packages/matplotlib/animation.py\u001b[0m in \u001b[0;36m_repr_html_\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 1395\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mto_html5_video\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1396\u001b[0m \u001b[0;32melif\u001b[0m \u001b[0mfmt\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m'jshtml'\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1397\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mto_jshtml\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1398\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1399\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/.local/lib/python3.7/site-packages/matplotlib/animation.py\u001b[0m in \u001b[0;36mto_jshtml\u001b[0;34m(self, fps, embed_frames, default_mode)\u001b[0m\n\u001b[1;32m 1384\u001b[0m \u001b[0membed_frames\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0membed_frames\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1385\u001b[0m default_mode=default_mode)\n\u001b[0;32m-> 1386\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msave\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpath\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mwriter\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mwriter\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1387\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_html_representation\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpath\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread_text\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1388\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/.local/lib/python3.7/site-packages/matplotlib/animation.py\u001b[0m in \u001b[0;36msave\u001b[0;34m(self, filename, writer, fps, dpi, codec, bitrate, extra_args, metadata, extra_anim, savefig_kwargs, progress_callback)\u001b[0m\n\u001b[1;32m 1142\u001b[0m _is_saving=True, manager=None):\n\u001b[1;32m 1143\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0manim\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mall_anim\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1144\u001b[0;31m \u001b[0manim\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_init_draw\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# Clear the initial frame\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1145\u001b[0m \u001b[0mframe_number\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1146\u001b[0m \u001b[0;31m# TODO: Currently only FuncAnimation has a save_count\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/.local/lib/python3.7/site-packages/matplotlib/animation.py\u001b[0m in \u001b[0;36m_init_draw\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 1717\u001b[0m \u001b[0;31m# artists.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1718\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_init_func\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1719\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_draw_frame\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnext\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnew_frame_seq\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1720\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1721\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/.local/lib/python3.7/site-packages/matplotlib/animation.py\u001b[0m in \u001b[0;36m_draw_frame\u001b[0;34m(self, framedata)\u001b[0m\n\u001b[1;32m 1740\u001b[0m \u001b[0;31m# Call the func with framedata and args. If blitting is desired,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1741\u001b[0m \u001b[0;31m# func needs to return a sequence of any artists that were modified.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1742\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_drawn_artists\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_func\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mframedata\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_args\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1743\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_blit\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1744\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_drawn_artists\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m<ipython-input-11-3a3ed84add5e>\u001b[0m in \u001b[0;36mframe\u001b[0;34m(w)\u001b[0m\n\u001b[1;32m 41\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 42\u001b[0m \u001b[0;31m#Genera el grafico con la data actual\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 43\u001b[0;31m \u001b[0mplot\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0max\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mscatter\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mluminosity\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mtemperature\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mc\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mcm\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mspectral\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtemperature\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0ms\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mradius\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 44\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mplot\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mAttributeError\u001b[0m: module 'matplotlib.cm' has no attribute 'spectral'" + ] + }, + { + "data": { + "text/plain": [ + "<matplotlib.animation.FuncAnimation at 0x7f3d8868bcc0>" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "anim" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'/home/gomezc/ejercicios-clase-03-datos'" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pwd" + ] + } + ], + "metadata": { + "colab": { + "collapsed_sections": [], + "name": "Hertzprung-Russell.ipynb", + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +}