Ejemplo de grafico de dispersión usando datos porosidad y permeabilidad de núcleos de un yacimiento petrolero
En el mundo de la ciencia de datos, la visualización es una herramienta clave para entender las relaciones y tendencias en nuestros datos. Una de las formas más directas y efectivas de visualizar la relación entre dos variables es a través de un scatter plot o gráfico de dispersión. En esta ocasión te mostraré cómo generar un scatter plot utilizando la librería Matplotlib en Python, empleando un conjunto de datos de ejemplo que incluye mediciones como la porosidad y la permeabilidad de núcleos extraídos de pozos petroleros
Antes de comenzar, asegúrate de tener instalada la librería Matplotlib. Si no la tienes, puedes instalarla fácilmente utilizando pip, el sistema de gestión de paquetes de Python:
pip install matplotlib
También usaremos Pandas para manejar nuestro conjunto de datos, así que asegúrate de tenerlo disponible:
pip install pandas
El primer paso es cargar nuestros datos. Para este ejemplo, utilizaremos un archivo CSV llamado Core_data.csv, que contiene mediciones de la profundidad medida (MD), porosidad (POROSITY) y permeabilidad (PERMEABILITY) para diferentes pozos. Aquí tienes un vistazo al contenido del archivo:
import pandas as pd
= pd.read_csv('Core_data.csv')
data print(data.head())
WELL MD POROSITY PERMEABILITY
0 1 4038.350098 0.201 1973.9240
1 1 4038.850098 0.203 1158.9270
2 1 4039.350098 0.207 1935.1169
3 1 4039.850098 0.206 1003.6810
4 1 4040.350098 0.190 901.4980
Este fragmento de código carga el archivo CSV en un DataFrame de Pandas y muestra las primeras filas, dándonos una idea de la estructura de los datos.
Ahora que tenemos los datos cargados, es tiempo de crear nuestro scatter plot. Vamos a trazar la porosidad contra la permeabilidad para ver si existe alguna relación visual entre estas dos variables:
import matplotlib.pyplot as plt
'POROSITY'], data['PERMEABILITY']);
plt.scatter(data['Porosidad (%)');
plt.xlabel('Permeabilidad (mD)');
plt.ylabel('Relación entre Porosidad y Permeabilidad en Datos de Núcleos');
plt.title(; plt.show()
Este código generará un gráfico de dispersión básico, con el título y nombre de los ejes personalidos. Observamos que debido al comportamiento logaritmo de la permeabilidad los datos se ven agrupados en valores bajos de esta propiedad. Para ello cambiaremos la escala del eje y por una escala logarítmica y limitaremos los ejes en un rango mínimo y máximo
'POROSITY'], data['PERMEABILITY']);
plt.scatter(data['Porosidad (%)');
plt.xlabel('Permeabilidad (mD)');
plt.ylabel('Relación entre Porosidad y Permeabilidad en Datos de Núcleos');
plt.title('log');
plt.yscale(0.0001,100000);
plt.ylim(0,0.3);
plt.xlim(; plt.show()
'POROSITY'], data['PERMEABILITY'], c='red', marker='x') plt.scatter(data[
<matplotlib.collections.PathCollection object at 0x000000006339A160>
'Porosidad (%)');
plt.xlabel('Permeabilidad (mD)');
plt.ylabel('Relación entre Porosidad y Permeabilidad en Datos de Núcleos');
plt.title('log');
plt.yscale(0.0001,100000);
plt.ylim(0,0.3);
plt.xlim(; plt.show()
'POROSITY'], data['PERMEABILITY'], c=data['WELL'], marker='o') plt.scatter(data[
<matplotlib.collections.PathCollection object at 0x000000006344CE80>
'Porosidad (%)');
plt.xlabel('Permeabilidad (mD)');
plt.ylabel('Relación entre Porosidad y Permeabilidad en Datos de Núcleos');
plt.title('log');
plt.yscale(0.0001,100000);
plt.ylim(0,0.3);
plt.xlim(; plt.show()
En la tabla encontraras los diferentes tipos de marcadores que podemos encontrar
\[ \begin{array}{ll} \hline \text { Valor de marcador } & \text { Descripción } \\ \hline \mathrm{s} & \text { Cuadrado } \\ \circ & \text { Circulo } \\ \mathrm{A} & \text { Triangulo hacia arriba } \\ \mathrm{v} & \text { Triangulo hacia abajo } \\ > & \text { Triangulo derecho } \\ < & \text { Triangulo izquierdo } \\ \mathrm{d} & \text { Diamente } \\ \mathrm{p} & \text { Pentagono } \\ \mathrm{h} & \text { Hexagono } \\ 8 & \text { Octagono } \\ + & \text { Más } \\ \mathrm{x} & \text { Cruz } \\ \hline \end{array} \]
'POROSITY'], data['PERMEABILITY'], c=data['WELL'], marker='o') plt.scatter(data[
<matplotlib.collections.PathCollection object at 0x0000000063477710>
'Porosidad (%)');
plt.xlabel('Permeabilidad (mD)');
plt.ylabel('Relación entre Porosidad y Permeabilidad en Datos de Núcleos');
plt.title('log');
plt.yscale(0.0001,100000);
plt.ylim(0,0.3);
plt.xlim(="r", linestyle="dotted", linewidth=1);
plt.grid(color; plt.show()
Los códigos de color disponibles se enlistan en la siguiente tabla
\[ \begin{array}{|l|l|} \hline \text { código } & \text { color } \\ \hline \text { b } & \text { azul } \\ \hline \text { g } & \text { verde } \\ \hline \text { r } & \text { rojo } \\ \hline \text { c } & \text { cyan } \\ \hline \text { m } & \text { magenta } \\ \hline \text { y } & \text { amarillo } \\ \hline \text { k } & \text { negro } \\ \hline \text { w } & \text { blanco } \\ \hline \end{array} \]