¿Por qué Matplotlib es una herramienta esencial para el análisis de datos?
Matplotlib se ha consolidado como una de las bibliotecas más esenciales para la visualización de datos en Python. Desde su creación en 2003 por John D. Hunter, se ha convertido en el estándar para gráficos de alta calidad en disciplinas que van desde la ciencia hasta las finanzas. Este robusto conjunto de herramientas permite a los analistas de datos y científicos del ámbito tecnológico no solo presentar la información de manera visual, sino también explorar complejas relaciones dentro de los datos, facilitando análisis más profundos. Además, su integración con bibliotecas como NumPy y Pandas simplifica el análisis y presentación de datos de diversas maneras.
¿Cómo instalar y configurar Matplotlib?
Aunque trabajamos en Google Collaboratory, donde Matplotlib ya viene preinstalado, es útil recordar cómo se puede instalar utilizando la herramienta pip, especialmente si estás trabajando en entornos virtuales o en Visual Studio Code. La instalación se realiza con el comando:
pip install matplotlib
Este comando asegura que la biblioteca esté disponible para ser utilizada, lo que es crucial si estás trabajando en un entorno que no sea Google Collaboratory.
¿Cómo crear gráficos básicos con Matplotlib?
Gráfico de líneas
Los gráficos de líneas son usualmente utilizados para mostrar tendencias a lo largo del tiempo o cambios continuos en los datos. Para comenzar, es necesario importar NumPy y Matplotlib, específicamente el módulo PyPlot.
import numpy as np
import matplotlib.pyplot as plt
Supongamos que queremos graficar las ventas mensuales de un producto. Podrías crear los datos de los meses y las ventas de la siguiente manera:
meses = np.array(['E','F','M','A','M'])ventas = np.array([20,25,30,28,35])
Con los datos listos, configuramos y mostramos el gráfico:
plt.figure(figsize=(8,6))plt.plot(meses, ventas, marker='o', color='blue')plt.title('Ventas mensuales de un producto')plt.xlabel('Meses')plt.ylabel('Ventas (en miles de unidades)')plt.show()
Esta representación visual nos permite identificar patrones o estacionalidades que podrían ser relevantes para decisiones de negocio.
Gráfico de dispersión
Un gráfico de dispersión es ideal para visualizar la relación entre dos variables. Por ejemplo, podrías estar interesado en saber cómo la cantidad de horas estudiadas afecta el rendimiento en un examen. De esta forma, podrías estructurar tus datos en listas:
plt.figure(figsize=(8,6))plt.scatter(horas_estudio, puntaje_examen, color='green')plt.title('Relación entre horas estudiadas y el puntaje')plt.xlabel('Horas de estudio')plt.ylabel('Puntaje del examen')plt.show()
Este gráfico es vital para detectar si existe una correlación positiva o negativa entre las variables en estudio, lo cual es útil en estudios experimentales o correlacionales.
¿Qué seguir después de los gráficos básicos?
Con los fundamentos de los gráficos de línea y dispersión cubiertos, el próximo paso es personalizar estos gráficos. Personalizaciones como el ajuste de ejes, el uso de estilos de marcador diferentes, y la inclusión de leyendas o texturas pueden mejorar la claridad y efectividad de la visualización. Esta personalización mejora la precisión y percepción de los datos, habilidades que desarrollaremos aún más en clases posteriores.
En resumen, Matplotlib es una herramienta poderosa para dar vida a los datos de diferentes sectores, y con cada sesión de práctica, tu habilidad para presentar visualmente se profundizará. ¡Continúa practicando y personalizando!
É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.
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áficoplt.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()
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).
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# Relación entre horas de esestudio y calidificacioneshours =[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()
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.
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.
## Data Aleatoria con semilla 0np.random.seed(0)# Recuerda que la semilla provoca que los datos# arrojen el mismo resultado aunque sean aleatoriosN =50x = np.random.rand(N)y = np.random.rand(N)sizes =(30* np.random.rand(N))**2colors = np.random.rand(N)## Scatter Plotplt.scatter(x,y,s=sizes, c=colors, alpha=0.5, marker='o')plt.colorbar()#Para mostrar la barra de coloresplt.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:
# Importación de Bibliotecasimport matplotlib.pyplot as plt
import numpy as np
# Entrada de datosx = Lista, Arreglo de Numpy o Serie de Pandas
y = Lista, Arreglo de Numpy o Serie de Pandas
# Crear figura y ejesfig, ax = plt.subplots(figsize=(Ancho, Alto), dpi=resolucion)# Tamaño de la figura en pulgadas (ancho x alto) y resoluciónfig, 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áficoax.plot(x, y, color='color', linestyle='--', linewidth=2, marker='o', markersize=8, markeredgecolor='black', markerfacecolor='yellow', alpha=0.8, label='label', zorder=3)#Personalizaciónax.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 Xax.set_xticks(np.arange(0,11,1), minor=True)# Ticks menores en Xax.set_yticks([-1,0,1])# Ticks mayores en Yax.set_yticks(np.arange(-1,1.1,0.2), minor=True)# Ticks menores en Yax.grid(which='major', linestyle='-', linewidth=0.8, color='black')# Cuadrícula para ticks mayoresax.grid(which='minor', linestyle=':', linewidth=0.5, color='gray')# Cuadrícula para ticks menoresax.legend(loc='upper left', fontsize=10, frameon=True))# Mostrar gráficoplt.show()
En Matplotlib, marker='o' se utiliza para especificar que los puntos en un gráfico de líneas se representen como círculos. Esto ayuda a identificar cada punto de datos en el gráfico, mejorando la visualización. Los marcadores pueden personalizarse con diferentes estilos y colores, lo que permite resaltar tendencias y patrones en los datos de manera efectiva. Recuerda que Matplotlib ofrece una variedad de marcadores que puedes explorar para mejorar tus gráficos.
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:
# Importación de Bibliotecasimport matplotlib.pyplotas plt
import numpy as np
# Entrada de datos
x =Lista,Arreglo de Numpy o Serie de Pandasy =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ónax.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 Xax.set_xticks(np.arange(0,11,1), minor=True) # Ticks menores en Xax.set_yticks([-1,0,1]) # Ticks mayores en Yax.set_yticks(np.arange(-1,1.1,0.2), minor=True) # Ticks menores en Yax.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 Bibliotecasimport matplotlib.pyplotas 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()
Disculpen que es lo que hace marker = 'o' en el primer gráfico del código ?
En Matplotlib, el parámetro marker='o' se utiliza para personalizar los marcadores que aparecen en un gráfico. Un marcador es un símbolo que se dibuja en cada punto de los datos representados.
Cuando usas marker='o', estás especificando que el marcador para cada punto debe ser un círculo ('o' representa un círculo). Estos marcadores se colocan en los puntos de datos a lo largo de la línea o dispersión para hacer más evidente su ubicación en el gráfico.
sin duda todo excel esta en compendio de pocas lineas y menos complejidad
saludos
MOdelo coworcountry o modelo coworculture con muchas actividades para pausas activas y acompañamiento de tu rol profesional Recuerda que Estamos enfocados en atender y brindar espacios para nomadas digitales, teletrabajo y coworking space en Agrolenials Paradise Ecohostel Country Inns contacto directo whatsapp +573206299333 y Faccebook
En realidad como utilizo el .loc() es mas aplicado a una columna o [ index : columna]. Ejemplo sales_data.loc[sales_data['Mes'] == 12]
que significa 8 y 6?
Es el tamaño de la grafica, 8x6
¡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
¿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.
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
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.