library(readxl)
## Warning: package 'readxl' was built under R version 4.3.3
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
En esta parte lo que prácticamente realiza es leer el archivo CSV que contiene todos los datos generados por el dispositivo y extraÃdos de la API del mismo dispositivo. La siguiente lÃnea lo que hace es eliminar las 4 primera filas principales para que de esta forma no haya problema en la elaboración de las gráficas.
GraficaTierra <- read.csv("C:/R/api_tierra_limpio.csv")
GraficaTierra <- GraficaTierra %>% slice(-1:-4)
View(GraficaTierra)
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.3.3
library(plotly)
## Warning: package 'plotly' was built under R version 4.3.3
##
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
##
## last_plot
## The following object is masked from 'package:stats':
##
## filter
## The following object is masked from 'package:graphics':
##
## layout
library(lubridate)
## Warning: package 'lubridate' was built under R version 4.3.3
##
## Attaching package: 'lubridate'
## The following objects are masked from 'package:base':
##
## date, intersect, setdiff, union
convertir_hora <- function(data) {
data %>%
mutate(fecha = ymd_hms(fecha), # Convertir la cadena de caracteres de fecha a fecha y hora
mes_dia = format(fecha, "%m/%d")) # Extraer el mes y dÃa
}
Las temperaturas del suelo varÃan aproximadamente entre 24°C y 36°C. Esto sugiere que hay una alteración considerable en las temperaturas del suelo registradas. La temperatura del suelo de 30°C tiene la frecuencia más alta, seguida de las temperaturas alrededor de 28°C y 26°C. Esto indica que la mayorÃa de las observaciones se concentran en estos rangos de temperatura. La alta frecuencia de temperaturas que están en los 30°C implica que esta temperatura es común durante el periodo de tiempo, lo cual indica que las condiciones climáticas predominantes en la región de los Llanos es mayormente alta la temperatura.
GraficaTierra <- convertir_hora(GraficaTierra)
ggplot(GraficaTierra, aes(x = mes_dia, y = Temp_suelo)) +
geom_point(color = "#800020", alpha = 0.7) + # Usar color naranja para los puntos
labs(title = "Temperatura del suelo",
x = "Fecha",
y = "Temperatura (C°)") +
theme_minimal()
La gráfica muestra que las temperaturas alrededor de 25°C y 35°C tienen las frecuencias más altas. Esto indica que estas temperaturas son comunes en el periodo Mayo - Junio. La alta frecuencia de temperaturas alrededor de 25°C y 35°C puede implicar ciertas condiciones climáticas frecuentes en la región. Ya que esto nos muestra que podrÃa ser indicativo de un clima en los que hay dÃas calurosos y noches frescas.
#redondeamos los datos
GraficaTierra$temp <- round(GraficaTierra$temp)
#creamos un vector
colores <- ifelse(GraficaTierra$temp > 30, "#E74C3C", "#3498DB")
ggplot(GraficaTierra, aes(x = temp, fill = colores)) +
geom_bar() +
labs(title = "Frecuencia de Temperatura",
x = "Temperatura del Aire (°C)",
y = "Frecuencia") +
scale_fill_identity() +
theme_minimal()
La gráfica muestra picos y caÃdas. Estas alteraciones podrÃan deberse a cambios ambientales, como el paso de nubes, cambios en la radiación solar, o eventos climáticos especÃficos. Lo cual con el uso de este tipo de grafico nos proporciona una visión detallada de cómo varÃan junta la temperatura del suelo y del aire a lo largo del tiempo, revelando patrones, correlaciones y posibles diferencias que son importantes para el análisis climático y ambiental.
fig <- plot_ly() %>%
add_trace(data = GraficaTierra, x = ~seq_along(Temp_suelo), y = ~Temp_suelo, type = 'scatter', mode = 'lines',
name = 'Temperatura del suelo', line = list(color = 'blue')) %>%
add_trace(data = GraficaTierra, x = ~seq_along(temp), y = ~temp, type = 'scatter', mode = 'lines',
name = 'Temperatura del aire', line = list(color = 'red'))
#etiquetas y titulos
fig <- fig %>% layout(
title = 'Relación entre la temperatura del suelo y del aire',
xaxis = list(title = 'Tiempo'),
yaxis = list(title = 'Temperatura (°C)'),
legend = list(title = list(text = 'Variables'))
)
fig
library(MASS)
##
## Attaching package: 'MASS'
## The following object is masked from 'package:plotly':
##
## select
## The following object is masked from 'package:dplyr':
##
## select
El gráfico muestra la densidad de la temperatura, que es más alta cuando la temperatura del aire y del suelo son similares. Ya que el aire caliente es menos denso que el aire frÃo. La densidad también es más alta cuando la temperatura del suelo es más alta que la temperatura del aire. Esto se debe a que el suelo absorbe más calor del sol que del aire.
kd <- with(GraficaTierra, kde2d(temp, Temp_suelo, n = 50))
#creamos el gráfico de superficie en 3D
fig <- plot_ly(x = kd$x, y = kd$y, z = kd$z) %>% add_surface()
#añadimos los tÃtulos y etiquetas
fig <- fig %>% layout(
title = "Densidad de Temperatura del Aire y del Suelo",
scene = list(
xaxis = list(title = "Temperatura del Aire (°C)"),
yaxis = list(title = "Temperatura del Suelo (°C)"),
zaxis = list(title = "Densidad")
)
)
#visualizamos
fig
La gráfica nos muestra que el 99.5% de los dÃas no está lloviendo, mientras que solo el 0.509% de los dÃas sà está lloviendo. Lo cual nos da a entender que en la temporada en la que estuvo el dispositivo funcionando.
#calculamos la frecuencia total de los dÃas lluviosos y no lluviosos
frecuencia_total <- GraficaTierra %>%
mutate(lluvia = ifelse(lluvia == "No esta lloviendo", "No está lloviendo", "Está lloviendo")) %>%
count(lluvia) %>%
mutate(porcentaje = n / sum(n) * 100) #calculamos porcentaje
#creamos grafico de pastel
plot_ly(frecuencia_total, labels = ~lluvia, values = ~porcentaje, type = 'pie', marker = list(colors = c("#3498DB", "#F39C12"))) %>%
layout(title = "Distribución de dÃas de lluvia",
showlegend = TRUE,
yaxis = list(title = "Porcentaje"))
En cuanto a esta grafica, hay picos significativos de frecuencia en el rango de 0 a 5, lo cual quiere decir que los valores de humedad más bajos son los más comunes. Las escalas de colores proporciona distinguir las frecuencias, donde los colores más claros representan frecuencias más altas, mientras que los colores más oscuros representan frecuencias más bajas.
#calculamos frecuencia
frecuencia_humedad <- GraficaTierra %>%
count(hall) %>%
rename(frecuencia = n)
#creamos matriz
humedad_vals <- unique(frecuencia_humedad$hall)
frecuencia <- matrix(0, nrow = length(humedad_vals), ncol = length(humedad_vals))
for (i in seq_along(humedad_vals)) {
for (j in seq_along(humedad_vals)) {
frecuencia[i, j] <- ifelse(i == j, frecuencia_humedad$frecuencia[frecuencia_humedad$hall == humedad_vals[i]], 0)
}
}
fig <- plot_ly(
z = ~frecuencia,
type = 'surface'
) %>%
layout(
title = "Frecuencia de Humedad",
scene = list(
xaxis = list(title = "Humedad (hall)"),
yaxis = list(title = "Humedad (hall)"),
zaxis = list(title = "Frecuencia")
)
)
fig
La gráfica de dispersión tiene relacion en cuanto a la temperatura y la humedad, con una mayor dispersión de datos en rangos medios y una concentración más baja de humedad a temperaturas más altas. Esta información es valiosa ya que para nosostros es posible analizar patrones climáticos y entender lo que esta pasando entre estas dos variables.
plot_ly(data = GraficaTierra, x = ~hall, y = ~temp, type = "scatter", mode = "markers",
marker = list(color = "#52BE80", opacity = 0.7)) %>%
layout(title = "Relación entre Temperatura (C°) y Humedad",
xaxis = list(title = "Temperatura (C°)"),
yaxis = list(title = "Humedad (%)"),
showlegend = FALSE)
Se puede observar que a medida que aumenta la humedad, la temperatura del suelo tiende a disminuir. A medida que aumenta la temperatura del aire, la temperatura del suelo también tiende a aumentar.
# Crear el gráfico 3D
fig <- plot_ly(GraficaTierra, x = ~temp, y = ~hall, z = ~Temp_suelo, type = 'scatter3d', mode = 'markers',
marker = list(size = 5, color = ~temp, colorscale = 'Viridis', opacity = 0.8)) %>%
layout(title = "Gráfico 3D",
scene = list(
xaxis = list(title = "Temperatura (°C)"),
yaxis = list(title = "Humedad (%)"),
zaxis = list(title = "Temperatura del suelo (C°)")
))
fig