library(ncdf4)
library(ggplot2)

# Abre el archivo NetCDF
nc_data <- nc_open("P4_ARMOR_parcial.nc")

# Extraer las variables
zo <- ncvar_get(nc_data, "zo")
to <- ncvar_get(nc_data, "to")
so <- ncvar_get(nc_data, "so")
ugo <- ncvar_get(nc_data, "ugo")
vgo <- ncvar_get(nc_data, "vgo")

# Extraer las dimensiones
time <- ncvar_get(nc_data, "time")
depth <- ncvar_get(nc_data, "depth")
latitude <- ncvar_get(nc_data, "latitude")
longitude <- ncvar_get(nc_data, "longitude")

# Cerrar el archivo
nc_close(nc_data)

# Crear un data frame para la temperatura "to"
df_to <- data.frame(
  longitude = rep(longitude, each = length(latitude) * length(time)),
  latitude = rep(rep(latitude, times = length(longitude)), length(time)),
  time = rep(time, each = length(longitude) * length(latitude)),
  temperature = as.vector(to)
)
# Configurar la codificación de caracteres en R
Sys.setlocale("LC_CTYPE", "en_US.UTF-8")
## [1] "en_US.UTF-8"
ggplot(df_to, aes(x = longitude, y = latitude, fill = temperature)) +
  geom_raster() +
  scale_fill_viridis_c() +
  labs(title = "Distribución de la Temperatura del Agua de Mar",
       x = "Longitud", y = "Latitud", fill = "Temperatura (°C)") +
  theme_minimal()

library(dplyr)
## 
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(ggplot2)

# Calcular la temperatura promedio por latitud
df_avg_latitude <- df_to %>%
  group_by(latitude) %>%
  summarise(mean_temperature = mean(temperature, na.rm = TRUE)) %>%
  slice(1:7)  # Seleccionar los primeros 7 valores

# Crear el gráfico de barras
ggplot(df_avg_latitude, aes(x = as.factor(latitude), y = mean_temperature)) +
  geom_bar(stat = "identity", fill = "steelblue") +
  labs(title = "Temperatura Promedio por Latitud ",
       x = "Latitud", y = "Temperatura Promedio (°C)") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 90, hjust = 1))

# Convertir el tiempo a años desde 1950
df_to$year <- 1950 + df_to$time / (24 * 365.25)

# Calcular la temperatura promedio por año
df_avg_year <- df_to %>%
  group_by(year) %>%
  summarise(mean_temperature = mean(temperature, na.rm = TRUE)) %>%
  slice(1:7)  # Seleccionar los primeros 7 valores

# Crear el gráfico de barras
ggplot(df_avg_year, aes(x = as.factor(round(year)), y = mean_temperature)) +
  geom_bar(stat = "identity", fill = "forestgreen") +
  labs(title = "Temperatura Promedio Anual ",
       x = "Año", y = "Temperatura Promedio (°C)") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 90, hjust = 1))

library(ncdf4)
library(dplyr)
library(ggplot2)
library(tidyr)

# Abrir el archivo NetCDF
nc_data <- nc_open("P4_ARMOR_parcial.nc")

# Extraer las variables
zo <- ncvar_get(nc_data, "zo")
so <- ncvar_get(nc_data, "so")
ugo <- ncvar_get(nc_data, "ugo")
vgo <- ncvar_get(nc_data, "vgo")
longitude <- ncvar_get(nc_data, "longitude")

# Cerrar el archivo
nc_close(nc_data)

# Crear un data frame para cada variable
df_zo <- data.frame(longitude = rep(longitude, each = length(zo)),
                    value = as.vector(zo),
                    variable = "Geopotential Height")
df_so <- data.frame(longitude = rep(longitude, each = length(so)),
                    value = as.vector(so),
                    variable = "Salinity")
df_ugo <- data.frame(longitude = rep(longitude, each = length(ugo)),
                     value = as.vector(ugo),
                     variable = "Geostrophic Zonal Velocity")
df_vgo <- data.frame(longitude = rep(longitude, each = length(vgo)),
                     value = as.vector(vgo),
                     variable = "Geostrophic Meridional Velocity")

# Combinar todos los data frames
df_combined <- bind_rows(df_zo, df_so, df_ugo, df_vgo)

# Calcular el promedio de cada variable
df_avg <- df_combined %>%
  group_by(variable) %>%
  summarise(mean_value = mean(value, na.rm = TRUE)) %>%
  filter(!is.nan(mean_value))  # Eliminar NaN

# Crear el gráfico circular
ggplot(df_avg, aes(x = "", y = mean_value, fill = variable)) +
  geom_bar(stat = "identity", width = 1) +
  coord_polar(theta = "y") +
  labs(title = "Distribución Promedio de Cuatro Variables",
       fill = "Variable") +
  theme_minimal() +
  theme(axis.text.x = element_blank())  # Eliminar etiquetas del eje x