Gráficos Interactivos de Producción en R con Plotly

A short description of the post.


Author

Affiliation

Rigoberto Chandomi

 

Published

March 31, 2025

DOI


📌 Gráficos Interactivos de Producción en R con Plotly 📊🔥

🔥 Plotly es una poderosa librería de visualización interactiva que permite explorar datos de producción petrolera de manera dinámica.

📌 En esta publicación aprenderás a:

✅ Cargar datos de producción y manipularlos en R.

✅ Crear gráficos interactivos en Plotly para visualizar producción de pozos.

✅ Implementar botones personalizados para cambiar entre distintas visualizaciones.

🟢 Instalación y Carga de Librerías

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

library(plotly)
library(dplyr)
library(lubridate)
library(DT)
library(readr)

🟢 Cargamos los Datos de Producción de un archivo CSV

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

# Convertimos la columna de fecha al formato adecuado
prod_data$Date <- as.Date(prod_data$Date, format = "%d/%m/%Y")

# Exploramos los datos disponibles
datatable(prod_data)

🟢 Primer Ejemplo: Filtrar Producción por Pozo

🚀 Características del Gráfico Interactivo

✅ Selección de pozos: Un menú desplegable permite cambiar entre pozos sin necesidad de generar múltiples gráficos.

✅ Interactividad: Se pueden explorar los datos de producción en distintos momentos con plotly.

✅ Visualización clara: Uso de add_markers() para representar los valores de producción de forma más precisa.

Este enfoque proporciona una herramienta eficiente para analizar la evolución de la producción de diferentes pozos dentro de un mismo campo petrolero. 📈🔥

wells <- list()
for(i in 1:length(unique(prod_data$Well))){
  
  wells[[i]] <- list(method = "restyle",
               args = list("transforms[0].value", unique(prod_data$Well)[i]),
               label = unique(prod_data$Well)[i])
  
}

prod_data$Well <- as.factor(prod_data$Well)

fig <- prod_data  %>%
    filter(Fluid == "Qo") %>%
    plot_ly(transforms = list(
      list(
        type = 'filter',
        target = ~Well,
        operation = '=',
        value = unique(prod_data$Well)[1]
      )
  )) %>%  
  add_markers(
    x = ~Date, 
    y = ~Rate ) %>% 
  layout(
    updatemenus = list(
      list(
        type = 'dropdown',
        active = 0,
        buttons = wells
      )
    )
  )

fig

📌 Explicación:

✔ Cómo funciona:

🟢 Segundo Ejemplo: Uso de Botones Personalizados

Vamos a crear botones personalizados para alternar entre producción de petróleo (Qo) y gas (Qg).

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


# Crear el gráfico de líneas con botones interactivos
plot_buttons <- plot_ly(data = df_campo, x = ~Date, y = ~Total_Rate, type = 'scatter', mode = 'lines',
                        color = ~Fluid, text = ~paste("<br>Tipo:", Fluid)) %>%
  layout(
    title = "Comparación de Producción de Petróleo y Gas",
    xaxis = list(title = "Fecha"),
    yaxis = list(title = "Producción (bbl/d o Mcf/d)"),
    updatemenus = list(
      list(
        type = "buttons",
         x = 1.15,  # Ajusta la posición horizontal (más a la derecha del gráfico)
        y = 1,  # Posición superior
        xanchor = "left",  # Ancla desde la izquierda
        yanchor = "bottom",  # Ancla en la parte superior
        buttons = list(
          list(method = "update",
               args = list(list(visible = list(df_campo$Fluid == "Qo", FALSE, FALSE))),
               label = "Petróleo"),
          list(method = "update",
               args = list(list(visible = list(FALSE, df_campo$Fluid == "Qg", FALSE))),
               label = "Gas"),
          list(method = "update",
               args = list(list(visible = TRUE)),
               label = "Todos")
        )
      )
    )
  )

# Mostrar el gráfico
plot_buttons
201020152020020k40k60k
QgQoQwComparación de Producción de Petróleo y GasFechaProducción (bbl/d o Mcf/d)PetróleoGasTodos

📌 Explicación:

🔹 updatemenus con type = “buttons” → Agrega botones para alternar entre petróleo y gas.

🔹 args = list(list(visible = prod_data$Fluid == “Qo”)) → Filtra solo producción de petróleo.

🔹 args = list(list(visible = prod_data$Fluid == “Qg”)) → Filtra solo producción de gas.

🟢 Conclusión 🎯

🔹 Plotly permite crear gráficos interactivos de producción petrolera de forma sencilla.

🔹 Los menús desplegables y botones personalizados mejoran la exploración de datos.

🔹 Es una herramienta ideal para análisis de producción en la industria petrolera.

🟢 Recursos Adicionales 📚

📌 Documentación Oficial: https://plotly.com/r/

📌 Ejemplos de Plotly en R: https://rpubs.com/