Descubre cómo analizar y visualizar datos de producción petrolera 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)
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
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.
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.
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.
Agrupamos los datos por Date y Fluid usando group_by(Date, Fluid).
Sumamos la tasa de producción para cada fluido (Qg, Qo, Qw) con sum(Rate, na.rm = TRUE).
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.
🔹 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.
📌 Documentación Oficial: https://ggplot2.tidyverse.org/ 📌 Visualización de Datos en R: https://datavizcatalogue.com/