You don't have access to this class

Keep learning! Join and start boosting your career

Aprovecha el precio especial y haz tu profesión a prueba de IA

Antes: $249

Currency
$209
Suscríbete

Termina en:

1 Días
8 Hrs
40 Min
22 Seg

Introducción a Matplotlib gráfico de líneas y dispersión

23/32
Resources

Why is Matplotlib an essential tool for data analysis?

Matplotlib has established itself as one of the most essential libraries for data visualization in Python. Since its creation in 2003 by John D. Hunter, it has become the standard for high-quality graphics in disciplines ranging from science to finance. This robust toolset enables data analysts and technology scientists to not only present information visually, but also to explore complex relationships within the data, facilitating deeper analysis. In addition, its integration with libraries such as NumPy and Pandas simplifies data analysis and presentation in a variety of ways.

How to install and configure Matplotlib?

Although we work in Google Collaboratory, where Matplotlib comes pre-installed, it is useful to remember how to install it using the pip tool, especially if you are working in virtual environments or in Visual Studio Code. The installation is done with the command:

pip install matplotlib

This command ensures that the library is available for use, which is crucial if you are working in an environment other than Google Collaboratory.

How to create basic graphs with Matplotlib?

Line chart

Line charts are usually used to show trends over time or continuous changes in data. To get started, you need to import NumPy and Matplotlib, specifically the PyPlot module.

import numpy as npimport matplotlib.pyplot as plt

Suppose we want to plot the monthly sales of a product. You could create the months and sales data as follows:

months = np.array(['E', 'F', 'M', 'A', 'M'])sales = np.array([20, 25, 30, 28, 28, 35])

With the data ready, we set up and display the chart:

plt.figure(figsize=(8, 6))plt.plot(months, sales,  marker='o',  color='blue')plt.title('Monthly sales of a product')plt.xlabel('Months')plt.ylabel('Sales (in thousands of units)')plt.show().

This visual representation allows us to identify patterns or seasonalities that could be relevant for business decisions.

Scatter chart

A scatter chart is ideal for visualizing the relationship between two variables. For example, you might be interested in how the number of hours studied affects performance on an exam. In this way, you could structure your data in lists:

study_hours = [1, 2, 3, 3, 4, 5, 5, 6, 7, 8]exam_score = [55, 60, 65, 70, 75, 80, 85, 90].

To create and display the scatter plot:

plt.figure(figsize=(8, 6))plt.scatter(study_hours, exam_score,  color='green')plt.title('Relationship between hours studied and score')plt.xlabel('Study hours')plt.ylabel('Exam score')plt.show().

This graph is vital to detect whether there is a positive or negative correlation between the variables under study, which is useful in experimental or correlational studies.

What to follow after the basic graphs?

With the basics of line and scatter plots covered, the next step is to customize these plots. Customizations such as adjusting axes, using different marker styles, and including legends or textures can improve the clarity and effectiveness of the display. This customization improves the accuracy and perception of the data, skills that we will develop further in later classes.

In summary, Matplotlib is a powerful tool for bringing data from different sectors to life, and with each practice session, your ability to present visually will deepen. Keep practicing and customizing!

Contributions 11

Questions 1

Sort by:

Want to see more contributions, questions and answers from the community?

📝Mis apuntes de la clase **Matplitlib es:** * Herramienta para visualización de datos. * Estándar para la creación de gráficos. * Integración con Numpy y Pandas. Ésta es una librería escrita en python, está enfocada en la visualización de datos por medio de gráficos 2D tales como: * Barras * Líneas * Pie * Dispersión Entre otras. **Gráfico de líneas**: Muestra tendencias y cambios en los datos a lo largo del tiempo. **Ejemplo**: Analizar las ventas de un determinado producto a lo largo del tiempo, de esta manera identificamos como suben o bajan las ventas en un determinado periodo. ```python import pandas as pd import numpy as np import matplotlib.pyplot as plt months = ["Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio"] sales = np.random.randint(50, 200, 6) # Configuración del gráfico plt.figure(figsize=(10,8)) plt.plot( months, sales, marker="o", color="blue" ) plt.title("Ejemplo de ventas mensuales") plt.xlabel("Meses") plt.ylabel("Ventas en miles de unidades") plt.show() ``` ![](https://res.cloudinary.com/dmwsbri4c/image/upload/v1727210783/Grafico_lineas_csokl7.png) **Gráfico de dispersión**: Muestra la relación entre dos variables, permite encontrar patrones, agrupaciones o puntos atípicos en los datos. **Ejemplo**: Analizar la relación entre las horas de estudio y las calificaciones obtenidas por los estudiantes; de esta forma podemos determinar si hay una correlación entre las dos variables (a más horas de estudio -> más alta la calificación). ```python import pandas as pd import numpy as np import matplotlib.pyplot as plt # Relación entre horas de esestudio y calidificaciones hours = [0,1,2,3,4,5,6,7,8] exam = np.random.randint(50,100, 9) plt.figure(figsize=(10,8)) plt.scatter( x=hours, y=exam, marker="o" ) plt.title("Ejemplo: Relación entre horas de estudio y calificacines") plt.xlabel("Horas de estudio") plt.ylabel("Calificación obtenida") plt.show() ``` ![](https://res.cloudinary.com/dmwsbri4c/image/upload/v1727210783/Grafico_dispersion_ocixh9.png) Espero este aporte les sea de utilidad 💜
🟢 **Diagrama de dispersión con diferentes tamaños** Los diagramas de dispersión no solo muestran la relación entre dos variables, sino que también pueden utilizar el tamaño de los puntos para representar una **tercera dimensión de los datos**. Este tipo de gráfico es especialmente útil cuando queremos visualizar cómo **varía una medida específica en función de dos variables independientes**, facilitando la comparación entre datos al incorporar el tamaño de los puntos como un indicador adicional. ![](https://static.platzi.com/media/user_upload/image-372d4a04-aa8a-457b-a074-e793bd77a750.jpg) Además, los diagramas de dispersión con tamaños variables pueden ayudar a **medir la densidad y la distribución de los datos**, proporcionando una visión más completa de la magnitud y la frecuencia de las observaciones. Te comparto el código para que lo añadas a tu arsenal de herramientas de análisis de datos. ```python ## Data Aleatoria con semilla 0 np.random.seed(0) # Recuerda que la semilla provoca que los datos # arrojen el mismo resultado aunque sean aleatorios N = 50 x = np.random.rand(N) y = np.random.rand(N) sizes = (30 * np.random.rand(N)) ** 2 colors = np.random.rand(N) ## Scatter Plot plt.scatter(x,y,s=sizes, c=colors, alpha=0.5, marker='o') plt.colorbar() #Para mostrar la barra de colores plt.show() ``` **¡Nunca pares de aprender!** 🚀🚀
Existe otra manera de graficar en MatPlotLib la cual es usando el enfoque orientado a objetos en donde ya no se usa: `plt.figure(figsize=(Ancho, Alto), dpi=resolución)` sino: `fig, ax = plt.subplots(figsize=(Ancho, Alto), dpi=resolucion)`. Este enfoque es más usado que el mostrado (Enfoque Basado en el Estado (Stateful Interface) ya que es más explícito y ofrece un control detallado sobre la figura (fig) y los ejes (ax). Es la forma recomendada para gráficos más complejos. A continuación la sintaxis: ```python # Importación de Bibliotecas import matplotlib.pyplot as plt import numpy as np # Entrada de datos x = Lista, Arreglo de Numpy o Serie de Pandas y = Lista, Arreglo de Numpy o Serie de Pandas # Crear figura y ejes fig, ax = plt.subplots(figsize=(Ancho, Alto), dpi=resolucion)# Tamaño de la figura en pulgadas (ancho x alto) y resolución fig, axs = plt.subplots(n, n, figsize=(Ancho, Alto), dpi=resolucion)# Matriz de objeto para multiples cuadros de graficos, Tamaño de la figura en pulgadas (ancho x alto) y resolución # Crear el gráfico ax.plot(x, y, color='color', linestyle='--', linewidth=2, marker='o', markersize=8, markeredgecolor='black', markerfacecolor='yellow', alpha=0.8, label='label', zorder=3) #Personalización ax.set_title("Gráfico Personalizado con ax.plot()", fontsize=16) ax.set_xlabel("Eje X", fontsize=12) ax.set_ylabel("Eje Y", fontsize=12) ax.grid(True, linestyle='--', alpha=0.6) ax.set_xticks([0, 5, 10])# Ticks mayores en X ax.set_xticks(np.arange(0, 11, 1), minor=True) # Ticks menores en X ax.set_yticks([-1, 0, 1]) # Ticks mayores en Y ax.set_yticks(np.arange(-1, 1.1, 0.2), minor=True) # Ticks menores en Y ax.grid(which='major', linestyle='-', linewidth=0.8, color='black')# Cuadrícula para ticks mayores ax.grid(which='minor', linestyle=':', linewidth=0.5, color='gray')# Cuadrícula para ticks menores ax.legend(loc='upper left', fontsize=10, frameon=True)) # Mostrar gráfico plt.show() ```
Existe otra manera de graficar en MatPlotLib la cual es usando el enfoque orientado a objetos en donde ya no se usa: `plt.figure(figsize=(Ancho, Alto), dpi=resolución)` sino: `fig, ax = plt.subplots(figsize=(Ancho, Alto), dpi=resolucion)`. Este enfoque es más usado que el mostrado (Enfoque Basado en el Estado (Stateful Interface) ya que es más explícito y ofrece un control detallado sobre la figura (fig) y los ejes (ax). Es la forma recomendada para gráficos más complejos. A continuación la sintaxis:Existe otra manera de graficar en MatPlotLib la cual es usando el enfoque orientado a objetos en donde ya no se usa: `plt.figure(figsize=(Ancho, Alto), dpi=resolución)` sino: `fig, ax = plt.subplots(figsize=(Ancho, Alto), dpi=resolucion)`. Este enfoque es más usado que el mostrado (Enfoque Basado en el Estado (Stateful Interface) ya que es más explícito y ofrece un control detallado sobre la figura (fig) y los ejes (ax). Es la forma recomendada para gráficos más complejos. A continuación la sintaxis: ```js # Importación de Bibliotecas import matplotlib.pyplot as plt import numpy as np # Entrada de datos x = Lista, Arreglo de Numpy o Serie de Pandas y = Lista, Arreglo de Numpy o Serie de Pandas # Crear figura y ejes fig, ax = plt.subplots(figsize=(Ancho, Alto), dpi=resolucion)# Tamaño de la figura en pulgadas (ancho x alto) y resolución fig, axs = plt.subplots(n, n, figsize=(Ancho, Alto), dpi=resolucion)# Matriz de objeto para multiples cuadros de graficos, Tamaño de la figura en pulgadas (ancho x alto) y resolución # Crear el gráfico ax.plot(x, y, color='color', linestyle='--', linewidth=2, marker='o', markersize=8, markeredgecolor='black', markerfacecolor='yellow', alpha=0.8, label='label', zorder=3) #Personalización ax.set_title("Gráfico Personalizado con ax.plot()", fontsize=16) ax.set_xlabel("Eje X", fontsize=12) ax.set_ylabel("Eje Y", fontsize=12) ax.grid(True, linestyle='--', alpha=0.6) ax.set_xticks([0, 5, 10])# Ticks mayores en X ax.set_xticks(np.arange(0, 11, 1), minor=True) # Ticks menores en X ax.set_yticks([-1, 0, 1]) # Ticks mayores en Y ax.set_yticks(np.arange(-1, 1.1, 0.2), minor=True) # Ticks menores en Y ax.grid(which='major', linestyle='-', linewidth=0.8, color='black')# Cuadrícula para ticks mayores ax.grid(which='minor', linestyle=':', linewidth=0.5, color='gray')# Cuadrícula para ticks menores ax.legend(loc='upper left', fontsize=10, frameon=True)) # Mostrar gráfico plt.show() ```# Importación de Bibliotecas import matplotlib.pyplot as plt import numpy as np # Entrada de datos x = Lista, Arreglo de Numpy o Serie de Pandas y = Lista, Arreglo de Numpy o Serie de Pandas # Crear figura y ejes fig, ax = plt.subplots(figsize=(Ancho, Alto), dpi=resolucion)# Tamaño de la figura en pulgadas (ancho x alto) y resolución fig, axs = plt.subplots(n, n, figsize=(Ancho, Alto), dpi=resolucion)# Matriz de objeto para multiples cuadros de graficos, Tamaño de la figura en pulgadas (ancho x alto) y resolución # Crear el gráfico ax.plot(x, y, color='color', linestyle='--', linewidth=2, marker='o', markersize=8, markeredgecolor='black', markerfacecolor='yellow', alpha=0.8, label='label', zorder=3) #Personalización ax.set\_title("Gráfico Personalizado con ax.plot()", fontsize=16) ax.set\_xlabel("Eje X", fontsize=12) ax.set\_ylabel("Eje Y", fontsize=12) ax.grid(True, linestyle='--', alpha=0.6) ax.set\_xticks(\[0, 5, 10])# Ticks mayores en X ax.set\_xticks(np.arange(0, 11, 1), minor=True) # Ticks menores en X ax.set\_yticks(\[-1, 0, 1]) # Ticks mayores en Y ax.set\_yticks(np.arange(-1, 1.1, 0.2), minor=True) # Ticks menores en Y ax.grid(which='major', linestyle='-', linewidth=0.8, color='black')# Cuadrícula para ticks mayores ax.grid(which='minor', linestyle=':', linewidth=0.5, color='gray')# Cuadrícula para ticks menores ax.legend(loc='upper left', fontsize=10, frameon=True)) # Mostrar gráfico plt.show()
¡Por supuesto! Aquí tienes un resumen con los puntos clave y los nombres de las bibliotecas y herramientas para hacer los gráficos de matplotlib más accesibles: \--- Hacer gráficos accesibles es esencial para la inclusividad. Algunas herramientas y prácticas pueden mejorar significativamente la accesibilidad de los gráficos generados con matplotlib: \### Paleta de Colores para Daltónicos Utiliza paletas de colores amigables con los daltónicos disponibles en \*\*matplotlib\*\* y \*\*seaborn\*\*. Por ejemplo, puedes usar `sns.set\_palette("colorblind")` para asegurarte de que los gráficos sean fácilmente distinguibles por individuos con deficiencias visuales del color. \### Extensión altText La biblioteca \*\*altText\*\* te permite añadir descripciones accesibles (alt text) a los gráficos de matplotlib, facilitando que los lectores de pantalla interpreten los gráficos. Es fundamental para usuarios con discapacidades visuales. \### AccessiPlot \*\*AccessiPlot\*\* es una biblioteca de Python diseñada para mejorar la accesibilidad de los gráficos de matplotlib. Permite añadir características de accesibilidad directamente a las visualizaciones: ```python import accessiplot as apl apl.describe\_plot(plt.gcf(), description="Este es un gráfico de dispersión que muestra...") plt.show() ``` \### Colores de Alto Contraste y Patrones Usar colores de alto contraste y añadir patrones y texturas a los elementos del gráfico puede mejorar significativamente la accesibilidad para personas con deficiencias visuales del color. Esto asegura que la información se transmita correctamente incluso sin depender exclusivamente de colores. \### Seaborn’s Context Feature Ajustar la escala de texto y elementos del gráfico utilizando el contexto de \*\*seaborn\*\* puede mejorar la legibilidad. Utiliza `sns.set\_context("talk")` para aumentar el tamaño de los elementos del gráfico. \### Consejos Prácticos \- \*\*Evita usar únicamente colores para transmitir información.\*\* Añade otras señales visuales como formas y etiquetas. \- \*\*Proporciona descripciones detalladas de los gráficos.\*\* Esto es muy beneficioso para usuarios de lectores de pantalla. Estas herramientas y prácticas son fundamentales para crear visualizaciones inclusivas y accesibles, beneficiando a todos los usuarios, incluyendo aquellos con discapacidades visuales o daltónicas.
### **1. GRÁFICO DE LÍNEAS** #### **Código:** import numpy as np import matplotlib.pyplot as plt month = np.array(\['E', 'F', 'M', 'A', 'Ma']) sales = np.array(\[20, 25, 30, 28, 35]) \# Configurar el tamaño del gráfico plt.figure(figsize=(8, 6)) \# Crear el gráfico plt.plot(month, sales, marker='o', color='blue') plt.title('Ventas mensuales de un producto') plt.xlabel('Meses') plt.ylabel('Ventas en miles de unidades') plt.show() #### **Descripción del Código:** * **Importaciones**: Se importan las librerías necesarias, numpy y matplotlib.pyplot. * **Creación de Datos**: * month: Un arreglo que representa los meses ("E", "F", "M", "A", "Ma"). * sales: Un arreglo que representa las ventas en miles para cada mes correspondiente. * **Configuración del Gráfico**: Se establece un tamaño de gráfico de 8x6 pulgadas usando plt.figure. * **Graficación**: * Se crea un gráfico de líneas con marcadores ('o') y una línea azul (color='blue'). * Se añaden títulos y etiquetas para mayor claridad: el título del gráfico es "Ventas mensuales de un producto," el eje x está etiquetado como "Meses," y el eje y como "Ventas en miles de unidades." #### **Salida:** El resultado es un gráfico de líneas donde: * El eje x representa los meses (E, F, M, A, Ma). * El eje y representa las ventas en miles de unidades. * Los puntos de datos están conectados con una línea azul, y cada punto está marcado con un círculo azul. ### **2. GRÁFICO DE DISPERSIÓN** #### **Código:** import matplotlib.pyplot as plt \# Configurar el tamaño del gráfico plt.figure(figsize=(8, 6)) hours = \[2, 3, 4, 5, 6, 7, 8] exam = \[55, 60, 65, 70, 75, 80, 85] plt.scatter(hours, exam, color='green') plt.title('Relación entre horas estudiadas y el puntaje') plt.xlabel('Horas') plt.ylabel('Puntaje') plt.show() #### **Descripción del Código:** * **Configuración del Gráfico**: El tamaño del gráfico se establece en 8x6 pulgadas. * **Creación de Datos**: * hours: Una lista de horas estudiadas (de 2 a 8 horas). * exam: Una lista de calificaciones obtenidas correspondientes a las horas estudiadas. * **Graficación**: * Se crea un gráfico de dispersión con marcadores verdes (color='green'). * Se añaden títulos y etiquetas: el título del gráfico es "Relación entre horas estudiadas y el puntaje," el eje x está etiquetado como "Horas," y el eje y como "Puntaje." #### **Salida:** El resultado es un gráfico de dispersión donde: * El eje x representa las horas estudiadas. * El eje y representa las calificaciones del examen. * Cada punto de datos (horas, calificaciones) se grafica como un punto verde, mostrando una relación positiva entre las horas de estudio y las calificaciones.
# Tipos de Marker Comunes 'o': Círculo Representa un marcador en forma de círculo. 's': Cuadrado Representa un marcador en forma de cuadrado. 'D': Diamante Representa un marcador en forma de diamante. '^': Triángulo hacia arriba Representa un marcador en forma de triángulo apuntando hacia arriba. 'v': Triángulo hacia abajo Representa un marcador en forma de triángulo apuntando hacia abajo. '>': Triángulo hacia la derecha Representa un marcador en forma de triángulo apuntando hacia la derecha. '<': Triángulo hacia la izquierda Representa un marcador en forma de triángulo apuntando hacia la izquierda. 'p': Pentágono Representa un marcador en forma de pentágono. '\*': Estrella Representa un marcador en forma de estrella. 'H': Hexágono Representa un marcador en forma de hexágono. 'X': Cruz (marca de multiplicación) Representa un marcador en forma de cruz. '+': Más Representa un marcador en forma de signo de más. '|': Línea vertical Representa un marcador en forma de línea vertical. '\_': Línea horizontal Representa un marcador en forma de línea horizontal.
Hola month = np.array(\["enero", "febrero","marzo","junio", "julio"])sales =np.array (\[20,25,30,28,35]) \#configurar el tamaño del grafico plt.figure(figsize=(8,6)) \#crear el grafico de barrasplt.plot(month, sales, marker="o", color= "blue")plt.title("Ventas mensuales de un producto")plt.xlabel("Meses")plt.ylabel("Ventas")plt.grid(True)plt.show() Agregando plt.grip(True), te permitira tener una maya que te muestra mas detalladamente donde esta el punto ![](https://static.platzi.com/media/user_upload/image-b5d0acb1-f2b5-4a82-aec9-35f959fc286f.jpg)
**¿Qué es Matplotlib?** Matplotlib es una biblioteca de Python utilizada para crear gráficos y visualizaciones en 2D. Es una herramienta poderosa y flexible para generar una amplia variedad de gráficos, desde simples gráficos de líneas y barras hasta gráficos más complejos como histogramas y gráficos de dispersión.
Me puse a experimentar con este código: `import matplotlib.pyplot as plt` `datos = np.random.randint(1, 100, size=45)` `media = np.mean(datos)mediana = np.median(datos)` `plt.scatter(range(len(datos)), datos, color='blue', label='Datos')plt.axhline(y=media, color='red', linestyle='--', label=f'Media ({round(media, 2)})')plt.axhline(y=mediana, color='green', linestyle='--', label=f'Mediana ({mediana})')` `plt.title('Scatter Plot de Datos Aleatorios')plt.xlabel('Índice')plt.ylabel('Valor')` `plt.legend(loc='upper left', bbox_to_anchor=(1, 1))` `plt.tight_layout()` `plt.show()` ![](https://static.platzi.com/media/user_upload/image-7c6d80e1-47d9-425f-8bb8-01c523952296.jpg)
Para crear gráficos de líneas y de dispersión utilizando `Matplotlib`, puedes seguir este ejemplo básico. Vamos a usar dos gráficos en uno, un gráfico de líneas y uno de dispersión (scatter) para visualizar mejor cómo se distribuyen los puntos y cómo se comporta una tendencia en los datos. \### Ejemplo básico de gráfico de líneas y de dispersión ```python import matplotlib.pyplot as plt import numpy as np \# Crear datos de ejemplo x = np.linspace(0, 10, 100) y = np.sin(x) \# Crear la figura y los ejes plt.figure(figsize=(8, 6)) \# Graficar la línea plt.plot(x, y, label='Seno de x', color='b', linestyle='-', linewidth=2) \# Graficar los puntos de dispersión plt.scatter(x, y, label='Puntos', color='r', marker='o') \# Añadir etiquetas y título plt.title('Gráfico de Líneas y Dispersión') plt.xlabel('Eje X') plt.ylabel('Eje Y') \# Añadir leyenda plt.legend() \# Mostrar el gráfico plt.show() ``` \### Explicación: 1\. \*\*Datos de ejemplo\*\*: Se generan datos de `x` usando `np.linspace` y `y` con la función seno `np.sin(x)`. 2\. \*\*Gráfico de línea\*\*: Se usa `plt.plot()` para crear el gráfico de líneas, con opciones de color (`color='b'`), estilo de línea (`linestyle='-'`), y grosor (`linewidth=2`). 3\. \*\*Gráfico de dispersión\*\*: Se usa `plt.scatter()` para añadir los puntos de dispersión, con color rojo (`color='r'`) y forma de círculo (`marker='o'`). 4\. \*\*Leyenda y etiquetas\*\*: Añadimos título, etiquetas a los ejes, y una leyenda. Este es un ejemplo básico, pero puedes personalizar aún más con diferentes opciones de color, estilos de marcadores y etiquetas.