Content for Decem's Python course.
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

at 1dc0dc5dc6e65abde460c51c0eebb56a45c46d92 324 lines 6.9 kB view raw
1{ 2 "cells": [ 3 { 4 "cell_type": "markdown", 5 "metadata": { 6 "slideshow": { 7 "slide_type": "slide" 8 } 9 }, 10 "source": [ 11 "## 12. Visualización de resultados con Matplotlib" 12 ] 13 }, 14 { 15 "cell_type": "markdown", 16 "metadata": { 17 "slideshow": { 18 "slide_type": "slide" 19 } 20 }, 21 "source": [ 22 "**Matplotlib** es una librería para Python que permite representar y dibujar gráficos en 2D de gran calidad. Se integra con NumPy, pandas y Jupyther\n", 23 "\n", 24 "Es la forma más utilizada de visualizar datos en Python." 25 ] 26 }, 27 { 28 "cell_type": "markdown", 29 "metadata": { 30 "slideshow": { 31 "slide_type": "slide" 32 } 33 }, 34 "source": [ 35 "Se puede instalar en nuestro entorno virtual con el siguiente comando:\n", 36 "\n", 37 "```\n", 38 "pipenv install matplotlib\n", 39 "```" 40 ] 41 }, 42 { 43 "cell_type": "markdown", 44 "metadata": { 45 "slideshow": { 46 "slide_type": "slide" 47 } 48 }, 49 "source": [ 50 "Para usar **Matplotlib** en Jupyter dentro de un notebook, y visualizar las gráficas en el propio navegador, primero tenemos que activar la libreria, con un comando de Jupyter (empieza con `%`):" 51 ] 52 }, 53 { 54 "cell_type": "code", 55 "execution_count": null, 56 "metadata": { 57 "slideshow": { 58 "slide_type": "fragment" 59 } 60 }, 61 "outputs": [], 62 "source": [ 63 "%matplotlib inline" 64 ] 65 }, 66 { 67 "cell_type": "markdown", 68 "metadata": { 69 "slideshow": { 70 "slide_type": "slide" 71 } 72 }, 73 "source": [ 74 "Después de activar Matplotlib en Jupyter, podemos importar la librería para utilizarla:" 75 ] 76 }, 77 { 78 "cell_type": "code", 79 "execution_count": null, 80 "metadata": { 81 "slideshow": { 82 "slide_type": "fragment" 83 } 84 }, 85 "outputs": [], 86 "source": [ 87 "import matplotlib.pyplot as plt" 88 ] 89 }, 90 { 91 "cell_type": "markdown", 92 "metadata": { 93 "slideshow": { 94 "slide_type": "fragment" 95 } 96 }, 97 "source": [ 98 "Se utiliza el alias `plt` como estándar de facto par el uso de **Matplotlib**." 99 ] 100 }, 101 { 102 "cell_type": "code", 103 "execution_count": null, 104 "metadata": { 105 "slideshow": { 106 "slide_type": "slide" 107 } 108 }, 109 "outputs": [], 110 "source": [ 111 "plt.plot(np.random.randn(50).cumsum())" 112 ] 113 }, 114 { 115 "cell_type": "markdown", 116 "metadata": { 117 "slideshow": { 118 "slide_type": "slide" 119 } 120 }, 121 "source": [ 122 "- La librería **Matplotlib** es muy extensa y puede ser compleja, pero se puede entender con una serie de conceptos generales que se utilizan de forma trasversal en toda esta.\n", 123 "\n", 124 "- Dibujar gráficas requiere acciones a diferentes niveles de abstracción, desde \"dibuja los valores de este array bi-dimensional\" a \"cambia el color de este pixel\".\n", 125 "\n", 126 "- Por ello, Matplotlib ofrece una jerarquía de funciones desde las más generales a las más específicas." 127 ] 128 }, 129 { 130 "cell_type": "markdown", 131 "metadata": { 132 "slideshow": { 133 "slide_type": "slide" 134 } 135 }, 136 "source": [ 137 "### Parte esencial de una gráfica: `figure`\n", 138 "\n", 139 "![Partes de una gráfica](https://matplotlib.org/_images/anatomy.png)\n" 140 ] 141 }, 142 { 143 "cell_type": "markdown", 144 "metadata": { 145 "slideshow": { 146 "slide_type": "slide" 147 } 148 }, 149 "source": [ 150 "#### Figure\n", 151 "\n", 152 "El objeto `figure` contiene los ejes de coordenadas, títulos, leyendas, y el lienzo donde se va a dibujar. Un objeto `figure` puede tener cualquier número de ejes, pero para ser útil, al menos ha de tener un par.\n" 153 ] 154 }, 155 { 156 "cell_type": "code", 157 "execution_count": null, 158 "metadata": { 159 "slideshow": { 160 "slide_type": "fragment" 161 } 162 }, 163 "outputs": [], 164 "source": [ 165 "fig = plt.figure()\n", 166 "fig.suptitle('figure vacío') \n", 167 "plt.plot()" 168 ] 169 }, 170 { 171 "cell_type": "markdown", 172 "metadata": { 173 "slideshow": { 174 "slide_type": "slide" 175 } 176 }, 177 "source": [ 178 "Cuando usas el comando `plot`, Matplotlib utiliza el último objeto `figure` definido, o lo crea en caso de que no exista ninguno con anterioridad." 179 ] 180 }, 181 { 182 "cell_type": "code", 183 "execution_count": null, 184 "metadata": { 185 "slideshow": { 186 "slide_type": "slide" 187 } 188 }, 189 "outputs": [], 190 "source": [ 191 "fig = plt.figure()\n", 192 "ax1 = fig.add_subplot(2, 2, 1)\n", 193 "plt.plot(np.random.randn(50).cumsum(), 'k--')\n", 194 "ax2 = fig.add_subplot(2, 2, 2)\n", 195 "plt.plot(np.random.randn(50).cumsum(), 'k--')\n", 196 "ax3 = fig.add_subplot(2, 2, 3)\n", 197 "plt.plot(np.random.randn(50).cumsum(), 'k--')" 198 ] 199 }, 200 { 201 "cell_type": "code", 202 "execution_count": null, 203 "metadata": { 204 "scrolled": true, 205 "slideshow": { 206 "slide_type": "slide" 207 } 208 }, 209 "outputs": [], 210 "source": [ 211 "x = np.arange(0, 3 * np.pi, 0.1)\n", 212 "y_sin = np.sin(x)\n", 213 "y_cos = np.cos(x)\n", 214 "\n", 215 "plt.subplot(2, 1, 1)\n", 216 "\n", 217 "plt.plot(x, y_sin)\n", 218 "plt.title('Sine')\n", 219 "\n", 220 "plt.subplot(2, 1, 2)\n", 221 "plt.plot(x, y_cos)\n", 222 "plt.title('Cosine')\n", 223 "\n", 224 "plt.show()" 225 ] 226 }, 227 { 228 "cell_type": "markdown", 229 "metadata": { 230 "slideshow": { 231 "slide_type": "slide" 232 } 233 }, 234 "source": [ 235 "**Matplotlib** también se integra en **pandas**, y se puede usar directamente como un método de un DataFrame." 236 ] 237 }, 238 { 239 "cell_type": "code", 240 "execution_count": null, 241 "metadata": { 242 "slideshow": { 243 "slide_type": "slide" 244 } 245 }, 246 "outputs": [], 247 "source": [ 248 "ts = pd.Series(np.random.randn(1000), index=pd.date_range('1/1/2000', periods=1000))\n", 249 "ts = ts.cumsum()\n", 250 "ts.plot()" 251 ] 252 }, 253 { 254 "cell_type": "code", 255 "execution_count": null, 256 "metadata": { 257 "slideshow": { 258 "slide_type": "slide" 259 } 260 }, 261 "outputs": [], 262 "source": [ 263 "df = pd.DataFrame(np.random.randn(1000, 4), index=ts.index, columns=['A', 'B', 'C', 'D'])\n", 264 "df = df.cumsum()\n", 265 "df.head()" 266 ] 267 }, 268 { 269 "cell_type": "code", 270 "execution_count": null, 271 "metadata": { 272 "slideshow": { 273 "slide_type": "slide" 274 } 275 }, 276 "outputs": [], 277 "source": [ 278 "plt.figure()" 279 ] 280 }, 281 { 282 "cell_type": "code", 283 "execution_count": null, 284 "metadata": { 285 "slideshow": { 286 "slide_type": "slide" 287 } 288 }, 289 "outputs": [], 290 "source": [ 291 "df.plot()" 292 ] 293 }, 294 { 295 "cell_type": "code", 296 "execution_count": null, 297 "metadata": {}, 298 "outputs": [], 299 "source": [] 300 } 301 ], 302 "metadata": { 303 "celltoolbar": "Slideshow", 304 "kernelspec": { 305 "display_name": "Python 3", 306 "language": "python", 307 "name": "python3" 308 }, 309 "language_info": { 310 "codemirror_mode": { 311 "name": "ipython", 312 "version": 3 313 }, 314 "file_extension": ".py", 315 "mimetype": "text/x-python", 316 "name": "python", 317 "nbconvert_exporter": "python", 318 "pygments_lexer": "ipython3", 319 "version": "3.7.1" 320 } 321 }, 322 "nbformat": 4, 323 "nbformat_minor": 2 324}