Análisis de Producción con ggplot2 en R

Descubre cómo analizar y visualizar datos de producción petrolera con ggplot2 en R.


Author

Affiliation

Rigoberto Chandomi

 

Published

March 31, 2025

DOI


📌 Análisis de Producción con ggplot2 en R 📊🔬

🔥 ggplot2 es una de las librerías más poderosas para visualización de datos en R.
En este análisis, exploraremos la producción de petróleo y gas con gráficos avanzados.

📌 En esta publicación aprenderás a:

✅ Graficar gastos de producción cde aceite on ggplot2.

✅ Usar facetas y escalas logarítmicas para analizar tendencias.

✅ Personalizar gráficos para mejorar su interpretación.

🟢 Instalación y Carga de Librerías

# Instalamos y cargamos las librerías necesarias.
#install.packages("ggplot2")
#install.packages("dplyr")
#install.packages("lubridate")
#install.packages("readr")
#install.packages("scales")

library(ggplot2)
library(dplyr)
library(lubridate)
library(readr)
library(scales)

Cargar los Datos de Producción

Para este ejemplo disponemos de datos de gastos de aceite, agua y gas para cada pozo, los cuales se encuentran ordenados en 4 columnas: Pozo, Fluido, Fecha y Gasto

# Cargamos los datos del archivo Production_Data.csv.
file_path <- "Production_Data.csv"
df <- read_csv(file_path)

# Convertimos la columna de fecha al formato adecuado
df$Date <- dmy(df$Date)

# Exploramos los datos disponibles
head(df)
# A tibble: 6 × 4
  Well      Fluid Date        Rate
  <chr>     <chr> <date>     <dbl>
1 HOMOL-1   Qo    2007-01-01  216.
2 HOMOL-102 Qo    2007-01-01    0 
3 HOMOL-21  Qo    2007-01-01    0 
4 HOMOL-3   Qo    2007-01-01    0 
5 HOMOL-4   Qo    2007-01-01    0 
6 HOMOL-41  Qo    2007-01-01    0 
summary(df)
     Well              Fluid                Date           
 Length:6192        Length:6192        Min.   :2007-01-01  
 Class :character   Class :character   1st Qu.:2010-07-24  
 Mode  :character   Mode  :character   Median :2014-02-15  
                                       Mean   :2014-02-14  
                                       3rd Qu.:2017-09-08  
                                       Max.   :2021-04-01  
      Rate      
 Min.   :    0  
 1st Qu.:    0  
 Median :    0  
 Mean   : 2112  
 3rd Qu.: 4539  
 Max.   :15992  

🟢 Primer Ejemplo: Gráfico de Producción de Petróleo y Gas

Antes de generar un gráfico de líneas de gastos de aceite, agua y gas vamos a filtrar los datos del pozo HOMOL-1

# Creamos un gráfico de líneas mostrando la producción a lo largo del tiempo.
df_homol <- df %>% filter(Well == "HOMOL-1")

ggplot(df_homol, aes(x = Date, y = Rate, color = Fluid)) +
  geom_line(size = 1, position = "identity") +
  labs(title = "Producción de Petróleo y Gas a lo Largo del Tiempo",
       subtitle = "Datos de producción del pozo HOMOL-1",
       x = "Fecha", y = "Tasa de Producción (bbl/d o Mcf/d)") +
  scale_y_continuous(labels = comma) +
  theme_minimal()

📌 Explicación: 🔹 geom_line() → Crea una línea para visualizar tendencias. 🔹 color = Fluid → Diferencia entre petróleo, gas y agua. 🔹 scale_y_continuous(labels = comma) → Formatea los números con comas.

🟢 Segundo Ejemplo: Producción de Pozos con Facetas

Usamos facetas para visualizar la producción de cada pozo individualmente.

ggplot(df, aes(x = Date, y = Rate, color = Fluid)) +
  geom_line(size = 1) +
  facet_wrap(~ Well, scales = "free_y") +
  labs(title = "Producción de Pozos Individuales",
       subtitle = "Análisis por pozo",
       x = "Fecha", y = "Tasa de Producción") +
  theme_light()

📌 Explicación: 🔹 facet_wrap(~ Well) → Crea gráficos individuales para cada pozo. 🔹 scales = “free_y” → Permite diferentes escalas en cada faceta.

🟢 Tercer Ejemplo: Uso de Escalas Logarítmicas

Cambiar la escala de los ejes a logarítmica nos permite visualizar diferentes tendencias

# Usamos escalas logarítmicas para visualizar diferencias extremas en producción.

ggplot(df, aes(x = Date, y = Rate + 1, color = Fluid)) +
  geom_line(size = 1) +
  facet_wrap(~ Well, scales = "free_y")+
  scale_y_log10(labels = comma) +
  labs(title = "Producción en Escala Logarítmica",
       subtitle = "Comparación de producción en distintos órdenes de magnitud",
       x = "Fecha", y = "Producción (log10)") +
  theme_bw()

📌 Explicación: 🔹 scale_y_log10() → Usa escala logarítmica para mejorar la visualización. 🔹 +1 en la variable Rate → Evita problemas con valores cero en logaritmos.

🟢 Cuarto Ejemplo: Gráfico a nivel de campo .

  1. Agrupamos los datos por Date y Fluid usando group_by(Date, Fluid).

  2. Sumamos la tasa de producción para cada fluido (Qg, Qo, Qw) con sum(Rate, na.rm = TRUE).

  3. Graficamos los resultados con geom_line() para mostrar la evolución de la producción total en el tiempo.

Este gráfico te mostrará cómo ha cambiado la producción total del campo a lo largo del tiempo, desglosada por fluido (petróleo, gas y agua).

# Agrupar datos por fecha y sumar tasas de producción
df_campo <- df %>%
  group_by(Date, Fluid) %>%
  summarise(Total_Rate = sum(Rate, na.rm = TRUE), .groups = "drop")

# Gráfico de líneas para la producción total del campo
ggplot(df_campo, aes(x = Date, y = Total_Rate, color = Fluid, group = Fluid)) +
  geom_line(size = 1) +
  labs(title = "Producción Total del Campo",
       subtitle = "Suma de la producción de todos los pozos",
       x = "Fecha", y = "Tasa de Producción Total (bbl/d o Mcf/d)") +
  scale_y_continuous(labels = scales::comma) +
  theme_minimal()

📌 Explicación: 🔹 group_by(Date, Fluid) %>% summarise(Total_Rate = sum(Rate, na.rm = TRUE)) → Agrupa los datos por fecha y fluido, sumando la producción total. 🔹 geom_line(size = 1) → Usa líneas para visualizar la evolución de la producción en el tiempo. 🔹 scale_y_continuous(labels = scales::comma) → Aplica formato numérico para mejorar la legibilidad. 🔹 theme_minimal() → Utiliza un diseño limpio y profesional para la visualización.

🟢 Conclusión 🎯

🔹 ggplot2 es una herramienta poderosa para analizar tendencias en producción de petróleo y gas. 🔹 Facetas permiten analizar pozos de manera individual sin perder contexto. 🔹 Escalas logarítmicas ayudan a visualizar datos con diferencias extremas.

🟢 Recursos Adicionales 📚

📌 Documentación Oficial: https://ggplot2.tidyverse.org/ 📌 Visualización de Datos en R: https://datavizcatalogue.com/