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
