A short description of the post.
🔥 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.
# 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 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)
🚀 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:
Se extrae la lista de pozos únicos desde prod_data$Well.
Para cada pozo, se genera un botón con la acción “restyle”, que actualizará el filtro del gráfico.
Se filtran los datos para visualizar únicamente la producción de petróleo (Fluid == “Qo”).
Se crea un plotly con la transformación “filter” que permite seleccionar pozos.
Se añaden puntos (add_markers) para representar la producción diaria.
Se configura un menú desplegable (updatemenus) para cambiar entre distintos pozos.
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
📌 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.
🔹 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.
📌 Documentación Oficial: https://plotly.com/r/
📌 Ejemplos de Plotly en R: https://rpubs.com/