<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Guillermo</title>
    <description>The latest articles on DEV Community by Guillermo (@omem).</description>
    <link>https://dev.to/omem</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F923199%2Fa6d8cac1-1bca-4ef1-815d-343259bed2f2.jpeg</url>
      <title>DEV Community: Guillermo</title>
      <link>https://dev.to/omem</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/omem"/>
    <language>en</language>
    <item>
      <title>La función atoi y strcat en C</title>
      <dc:creator>Guillermo</dc:creator>
      <pubDate>Tue, 02 Jul 2024 05:53:13 +0000</pubDate>
      <link>https://dev.to/omem/la-funcion-atoi-y-strcat-en-c-1go4</link>
      <guid>https://dev.to/omem/la-funcion-atoi-y-strcat-en-c-1go4</guid>
      <description>&lt;p&gt;¡Hola! Me encuentro aprendiendo el lenguaje de programación C y como herramienta estoy utilizando el libro de "The C Programming Language" de Kernighan y Ritchie. A lo largo de mi aprendizaje estaré compartiendo todo lo que me parezca interesante o retador. Todos estos posts estarán unidos con la etiqueta &lt;code&gt;#csaga&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Actualmente acabo de concluir el segundo capítulo y de él rescato dos problemas que me parecen interesantes a los cuales daremos solución mediante funciones.&lt;/p&gt;

&lt;p&gt;Comencemos con el primer problema: Dada una cadena de dígitos regresar su equivalente numérico. &lt;/p&gt;

&lt;p&gt;Vamos a resolver este problema mediante un función que llamaremos &lt;code&gt;atoi&lt;/code&gt;, en ella recibiremos una cadena (arreglo de caracteres) que nombraremos &lt;code&gt;s[]&lt;/code&gt;, también es claro que la función debe retornar un &lt;code&gt;int&lt;/code&gt;. De aquí en adelante dividiremos el problema en dos partes:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Es natural asumir que lo primero que debemos hacer es recorrer el arreglo, esto lo podemos hacer con un ciclo &lt;code&gt;for&lt;/code&gt;. Podemos inicializar el ciclo &lt;code&gt;for&lt;/code&gt; como siempre con un contador &lt;code&gt;i = 0&lt;/code&gt;, pero debemos establecer un criterio para salir del ciclo. En este caso los autores decidieron aprovechar el hecho de que en C, los caracteres están representados por sus valores ASCII. Por ejemplo &lt;code&gt;'0'&lt;/code&gt; tiene un valor ASCII de &lt;code&gt;48&lt;/code&gt;, &lt;code&gt;'1'&lt;/code&gt; tiene el valor &lt;code&gt;49&lt;/code&gt; y así, hasta el carácter &lt;code&gt;'9'&lt;/code&gt; que tiene el valor &lt;code&gt;57&lt;/code&gt;. Entonces los valores ASCII válidos para nuestro ciclo están entre &lt;code&gt;48&lt;/code&gt; y &lt;code&gt;57&lt;/code&gt; inclusivos, por lo que podemos formar la sentencia:&lt;br&gt;
&lt;code&gt;for (i=0; s[i] &amp;gt;= '0' &amp;amp;&amp;amp; s[i] &amp;lt;= '9'; ++i)&lt;/code&gt;. La condición de salida del ciclo es clara, ya que si se llega final del arreglo de caracteres este siempre es &lt;code&gt;'\0'&lt;/code&gt; que representa el carácter nulo, cuyo valor en ASCII es 0. También, si hubiera un valor que no fuera un dígito se saldría del ciclo, por las razones antes mencionadas.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Una vez que estamos recorriendo el arreglo debemos convertir el digito en el entero que representa. Esto lo podemos hacer con : &lt;code&gt;(s[i] - '0')&lt;/code&gt;. La sentencia anterior toma el valor ASCII del arreglo y le resta el valor ASCII de &lt;code&gt;'0'&lt;/code&gt;, dando como resultado el entero deseado. Ejemplo: &lt;br&gt;
Supongamos &lt;code&gt;s[i]=5&lt;/code&gt;, entonces &lt;code&gt;s[i] - 0&lt;/code&gt; es equivalente a &lt;code&gt;53 - 48 = 5&lt;/code&gt;. Por último, queda acomodar el número en su posición pertinente (como unidad, decena, centena, etc.) Lo cual se consigue estableciendo un &lt;code&gt;n = 0&lt;/code&gt; y luego actualizando en cada iteración con &lt;code&gt;n = 10 * n + (s[i] - '0')&lt;/code&gt;. &lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Con todo lo anterior, nuestra función deseada queda como:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;atoi&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;char&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;[]){&lt;/span&gt;

    &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="sc"&gt;'0'&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="sc"&gt;'9'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
        &lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="sc"&gt;'0'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Segundo problema: Dadas dos cadenas &lt;code&gt;s[]&lt;/code&gt; y &lt;code&gt;t[]&lt;/code&gt; concatenar la cadena &lt;code&gt;t&lt;/code&gt; al final de la cadena &lt;code&gt;s&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;Para hacer el problema más fácil el libro asume que en &lt;code&gt;s&lt;/code&gt; hay suficiente espacio para almacenar la combinación. Ahora, debemos comenzar definiendo una función que llamaremos &lt;code&gt;strcat&lt;/code&gt; que debe recibir dos cadenas &lt;code&gt;s[]&lt;/code&gt; y &lt;code&gt;t[]&lt;/code&gt;, esta función no necesita regresar un valor. Una manera de resolver el problema es primero posicionaros al final de la primera cadena &lt;code&gt;s[]&lt;/code&gt;. A partir del final de la primera cadena debemos de empezar a guardar los elementos de la segunda cadena &lt;code&gt;t[]&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Para llegar al final de la primera cadena podemos comenzar con un contador &lt;code&gt;i = 0&lt;/code&gt; e ir aumentando el valor de &lt;code&gt;i&lt;/code&gt; hasta el final del arreglo, esto se logra cuando alcanzamos el valor &lt;code&gt;'\0'&lt;/code&gt;, el cual marca el final de todo arreglo de caracteres. Así podemos tener el siguiente código:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="k"&gt;while&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="sc"&gt;'\0'&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
    &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ahora que estamos posicionados en el fin de &lt;code&gt;s&lt;/code&gt; debemos de empezar a copiar los valores de &lt;code&gt;t&lt;/code&gt;. Para esto necesitamos empezar otro contador &lt;code&gt;j = 0&lt;/code&gt; y asignar &lt;code&gt;s[i] = t[j]&lt;/code&gt;, recordemos que el valor de &lt;code&gt;i&lt;/code&gt; ya esta al final de la primera cadena. Luego debemos incrementar ambos índices y repetir el proceso hasta que encontremos el carácter &lt;code&gt;'\0'&lt;/code&gt; que marca el fin de la cadena en &lt;code&gt;t&lt;/code&gt;. Todo lo anterior lo podemos lograr mediante la sentencia:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;j&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="sc"&gt;'\0'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
   &lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Sé que me estoy repitiendo, pero con la finalidad de que quede todo claro. El código anterior primero asigna el carácter &lt;code&gt;t[j]&lt;/code&gt; a &lt;code&gt;s[i]&lt;/code&gt;, luego incrementa el valor de &lt;code&gt;i&lt;/code&gt; y de &lt;code&gt;j&lt;/code&gt; hasta encontrar el final de &lt;code&gt;t&lt;/code&gt;.&lt;br&gt;
Teniendo en cuenta lo anterior nuestra función quedaría como:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;strcat&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;char&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;[],&lt;/span&gt; &lt;span class="kt"&gt;char&lt;/span&gt; &lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;[])&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;j&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="sc"&gt;'\0'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;j&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="sc"&gt;'\0'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Antes de terminar el post quisiera decir que el lector debe tener en cuenta que ando aprendiendo, en caso de existir algún error, por favor, con toda libertad me lo pueden hacer saber en comentarios. &lt;/p&gt;

&lt;p&gt;Gracias por leer!!!!&lt;/p&gt;

</description>
      <category>c</category>
      <category>atoi</category>
      <category>csaga</category>
      <category>strcat</category>
    </item>
    <item>
      <title>Iniciando en el mundo de la programación con C</title>
      <dc:creator>Guillermo</dc:creator>
      <pubDate>Fri, 28 Jun 2024 00:29:55 +0000</pubDate>
      <link>https://dev.to/omem/iniciando-en-el-mundo-de-la-programacion-con-c-33am</link>
      <guid>https://dev.to/omem/iniciando-en-el-mundo-de-la-programacion-con-c-33am</guid>
      <description>&lt;p&gt;Hace ya bastante tiempo decidí aprender a programar con la finalidad de cambiar de carrera profesional. Las primeras recomendaciones que encontré en internet y en algunas escuelas online fue empezar a estudiar HTML, CSS y JavaScript. Sin embargo, para ser honesto algunos cursos que tomé sobre estos temas se me hicieron algo tediosos y para nada me sentí motivado, incluso llegué a pensar que esto de la programación no era para mí. También debo aclarar que cuando hice los cursos estaba en medio de una fuerte depresión.&lt;/p&gt;

&lt;p&gt;Ahora que estoy más estable y feliz he decidido darle una segunda oportunidad a la programación, pero esta vez usaré una ruta y un enfoque diferente. En esta ocasión estoy dispuesto a disfrutar el camino. Hace algunos años me recibí de la carrera de matemáticas por lo que encuentro más divertido estudiar algoritmos, fórmulas y cosas relacionadas. Por lo anterior he decidido aprender a programar pero en C, quiero aprender las bases de la programación, estructuras de datos, implementar algoritmos, arquitectura de computadoras, etc.&lt;/p&gt;

&lt;p&gt;Espero este sea el inicio de un gran viaje y al menos aprenda muchas cosas. &lt;/p&gt;

</description>
    </item>
    <item>
      <title>Una pequeña intro a las subplots de Matplotlib</title>
      <dc:creator>Guillermo</dc:creator>
      <pubDate>Wed, 11 Jan 2023 05:42:36 +0000</pubDate>
      <link>https://dev.to/omem/una-pequena-intro-a-las-subplots-de-matplotlib-9gm</link>
      <guid>https://dev.to/omem/una-pequena-intro-a-las-subplots-de-matplotlib-9gm</guid>
      <description>&lt;p&gt;En este muy pequeño post nos centraremos en la tarea de crear varios gráficos en una sola imagen con la librería &lt;em&gt;Matplotlib&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;La manera más fácil de lograr nuestra tarea es usando matplotlib.pyplot.subplots. Este método retorna una tupla &lt;code&gt;(fig, ax)&lt;/code&gt;, donde &lt;code&gt;fig&lt;/code&gt; hace referencia a &lt;code&gt;Figure&lt;/code&gt; el cual es la imagen contenedora de todos los sub-gráficos, y &lt;code&gt;ax&lt;/code&gt; hace referencia a un arreglo de &lt;code&gt;Axes&lt;/code&gt;, estos se refieren a cada sub-gráfico de manera individual. &lt;/p&gt;

&lt;p&gt;Al método anterior le podemos especificar el número de filas y columnas para generar tantos sub-gráficos como nosotros consideremos necesario. Para entender esto de mejor manera pasemos al código:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import matplotlib.pyplot as plt
plt.style.use('ggplot')
fig, ax = plt.subplots(figsize=(12,4) ,nrows=1, ncols=3)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fham86piof0ll9xdgfjj0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fham86piof0ll9xdgfjj0.png" alt="Image description" width="714" height="252"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ahora veamos como graficar en los espacios generados, para esto crearemos unos datos con ayuda de &lt;code&gt;numpy&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import numpy as np
x = np.linspace(0, 2 * np.pi, 400)
y1 = np.cos(x**2)
y2 = np.sin(x**2)
y3 = np.floor(x**2)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ahora sí grafiquemos estas tres funciones:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;fig, ax = plt.subplots(figsize=(16,4) ,nrows=1, ncols=3)
ax[0].plot(x, y1, color='#581845', linestyle='dashed')
ax[0].set_title('Función coseno')
ax[1].plot(x, y2, color='#0C0C0E', linestyle='dashdot')
ax[1].set_title('Función seno')
ax[2].plot(x, y3, color='#D42D2D')
ax[2].set_title('Función piso')
plt.show()
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Funyhr9z5cf8z8vkdwhx2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Funyhr9z5cf8z8vkdwhx2.png" width="800" height="225"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Alternativamente podemos desempacar los &lt;code&gt;Axes&lt;/code&gt; como una tupla:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;fig, (ax1, ax2, ax3) = plt.subplots(figsize=(16,4) ,nrows=1, ncols=3)
ax1.plot(x, y1, color='#581845', linestyle='dashed')
ax1.set_title('Función coseno')
ax2.plot(x, y2, color='#0C0C0E', linestyle='dashdot')
ax2.set_title('Función seno')
ax3.plot(x, y3, color='#D42D2D')
ax3.set_title('Función piso')
plt.show()
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Y el resultado será el mismo. Aquí ya es una cuestión de gustos el cómo manejar a los &lt;code&gt;Axes&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Ahora generemos un arreglo bidimensional de sub-gráficos y veamos que podemos acceder a cada uno de ellos con índices, como si se tratara de una matriz.&lt;/p&gt;

&lt;p&gt;Pero antes de graficar necesitamos crear una cuarta función para poder llenar el último espacio, así que creemos dicha función:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;y4=np.exp(x)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ahora si procedamos a hacer nuestras gráficas:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;fig, ax = plt.subplots(figsize=(16,8) ,nrows=2, ncols=2)
ax[0, 0].plot(x, y1, color='#581845', linestyle='dashed')
ax[0, 0].set_title('Función coseno')
ax[0, 1].plot(x, y2, color='#0C0C0E', linestyle='dashdot')
ax[0, 1].set_title('Función seno')
ax[1, 0].plot(x, y3, color='#D42D2D')
ax[1, 0].set_title('Función piso')
ax[1, 1].plot(x, y4, color='#0B13BE')
ax[1, 1].set_title('Función exponencial')
plt.show()
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqd0b7kkyksk78r4ktfne.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqd0b7kkyksk78r4ktfne.png" width="800" height="409"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Este ejemplo es muy sencillo y todas las funciones las generamos a partir del mismo dominio (eje X). Sin embargo, puede que también en un caso que estemos estudiando los datos compartan algún eje, por lo que resultaría útil que nuestra imagen no muestre el eje dos veces sino que simplemente se comparta. Lo anterior lo podemos lograr con &lt;code&gt;sharex&lt;/code&gt; o &lt;code&gt;sharey&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;fig, ax = plt.subplots(figsize=(16,8) ,nrows=2, ncols=2, sharex=True)
ax[0, 0].plot(x, y1, color='#581845', linestyle='dashed')
ax[0, 0].set_title('Función coseno')
ax[0, 1].plot(x, y2, color='#0C0C0E', linestyle='dashdot')
ax[0, 1].set_title('Función seno')
ax[1, 0].plot(x, y3, color='#D42D2D')
ax[1, 0].set_title('Función piso')
ax[1, 1].plot(x, y4, color='#0B13BE')
ax[1, 1].set_title('Función exponencial')
plt.show()
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F966q7z2t63sz60tn3w45.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F966q7z2t63sz60tn3w45.png" width="800" height="409"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Muchas más cosas se pueden personalizar con la finalidad de realizar la visualización que nosotros queramos, pero la idea era hacer este post muy conciso y corto, ya trataremos con mayor profundidad este y otros temas en próximas entradas. &lt;/p&gt;

&lt;p&gt;Mil gracias por leer, excelente día :D&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
