Temperatura no ponto de orvalho

Pacotes

library(tidyverse)  # manipulação de dados
library(metan)      # manipulação de dados 
library(rio)        # importação/exportação de dados

clima_fred <- import("https://bit.ly/inmet_fred_2020")
clima_pf <- import("https://bit.ly/inmet_pf_2020")

Período de molhamento foliar

df_horas <- 
  subset(clima_fred, DATA %in% c("01/03/2020", 
                                 "01/06/2020")) %>% 
  select(DATA, HORA,  UM_INST)

ggplot(df_horas, aes(HORA, UM_INST, color = factor(DATA), group = DATA)) + 
  geom_line() + 
  geom_point() + 
  geom_hline(yintercept = 90, linetype = 2) + 
  theme(panel.grid.minor = element_blank(),
        legend.position = "bottom",
        legend.title = element_blank(),
        axis.title = element_text(size = 12),
        axis.text = element_text(size = 12)) + 
  scale_x_continuous(breaks = seq(0,24, by = 2)) + 
  labs(title = "Umidade relativa do ar",
       subtitle = "Estação INMET - UFSM-FW",
       caption = "Elaboração: Prof. Tiago Olivoto",
       x = "Hora do dia",
       y = "Umidade relativa do ar (%)")

Média mensal da soma diária de horas com UR > 90%

# número de horas com UR > 90%
df_horas2 <- 
clima_fred %>% 
  select(DATA, HORA, MES, UM_INST) %>% 
  mutate(NHUR = ifelse(UM_INST > 90, 1, 0)) %>% 
  sum_by(DATA, MES) %>% 
  select(DATA, MES, NHUR)
## Warning: NA values removed to compute the function. Use 'na.rm = TRUE' to
## suppress this warning.
## To remove rows with NA use `remove_rows_na()'. 
## To remove columns with NA use `remove_cols_na()'.
knitr::kable(head(df_horas2, n = 12), booktabs = TRUE)
DATA MES NHUR
01/01/2020 1 10
01/02/2020 2 7
01/03/2020 3 0
01/04/2020 4 0
01/05/2020 5 5
01/06/2020 6 9
01/07/2020 7 7
01/08/2020 8 0
01/09/2020 9 5
01/10/2020 10 0
01/11/2020 11 3
01/12/2020 12 10
df_horas2 <- means_by(df_horas2, MES)
knitr::kable(df_horas2, booktabs = TRUE)
MES NHUR
1 4.516129
2 4.344828
3 1.774193
4 3.566667
5 7.322581
6 7.800000
7 6.548387
8 3.225807
9 4.100000
10 2.290323
11 3.766667
12 4.000000
# gráfico
ggplot(df_horas2, aes(factor(MES), NHUR)) + 
  geom_col() +
  geom_text(aes(label = round(NHUR, 2)),
            vjust = -0.5) + 
  theme(panel.grid.minor = element_blank(),
        legend.position = "bottom",
        legend.title = element_blank(),
        axis.title = element_text(size = 12),
        axis.text = element_text(size = 12)) + 
  scale_y_continuous(expand = expansion(c(0, 0.1))) +
  labs(title = "Média mensal da soma diária com UR > 90%",
       subtitle = "Estação INMET - UFSM-FW",
       caption = "Elaboração: Prof. Tiago Olivoto",
       x = "Mês do ano",
       y = "Número de horas")

Período de molhamento foliar vs doenças de plantas

O gráfico desta seção apresenta a área abaixo da curva do progresso da doença (AACPD) em função da temperatura do ar e período de molhamento foliar.

Referência: JULIATTI, B. C. M.; POZZA, E. A.; JULIATTI, F. C. Severity of rust infection in soybean genotypes with partial resistance as a function of temperature and leaf wetness duration. Genetics and Molecular Research, 2021. v. 20, n. 2, p. gmr18781.

Veja como quantificar a área foliar doente usando imagens de folhas no pacote pliman.

# modelo AACPD
# x = temperatura (ºC)
# y = molhamento foliar (h)
get_audpc <- function(x, y){
  204.95 * exp(-0.5 * ((( x - 23.39) / 2.74)^2 + (( y - 30.35) / 18.44)^2))
}

temp <- seq(15, 30, by = 0.1)
mol <- seq(0, 36, by = 0.1)
df <- 
  expand_grid(temp, mol) %>% 
  mutate(audpc = get_audpc(temp, mol))

# criando o gráfico
ggplot(df, aes(temp, mol, z = audpc, fill = audpc)) + 
  geom_tile() +
  scale_fill_gradient(low = "green", high = "red") +
  scale_x_continuous(expand = c(0, 0)) +
  scale_y_continuous(expand = c(0, 0)) +
  guides(fill = guide_colourbar(barheight = unit(8, "cm"),
                                title = element_blank())) +
  labs(title = "Área abaixo da curva do progresso da doença (P. pachyrhizi em soja)",
       subtitle = "Função da temperatura e duração do período de molhamento foliar\nFonte: Adaptado de Juliatti et al. (2021) - https://bit.ly/3j6JVqS",
       caption = "Elaboração: Prof. Tiago Olivoto",
       x = "Temperatura do ar (ºC)",
       y = "Número de horas com molhamento foliar") +
  theme_metan() +
  theme(legend.position = "right")

Temperatura no ponto de orvalho

A temperatura no ponto de orvalho (T\(o\)) considerando a temperatura do ar (t) e umidade relativa (ur) pode ser aproximada pela seguinte equação (https://pt.planetcalc.com/248/)

$$ T_{o}=\frac{b\left(\frac{a T}{b+t}+\ln ur \right)}{a-\left(\frac{a T}{b+t}+\ln ur\right)} $$ Onde a = 17.27, b = 237.7, ln: logaritmo natural, \(ur\): umidade relativa do ar (de 0 a 1),

# fórmula disponível
get_tpo <- function(t, ur){
  a <- 17.27
  b <- 237.7
  ur <- ur / 100
  (b * ((a * t) / (b + t) + log(ur))) / (a - ((a * t) / (b + t) + log(ur)))
}

# ponto de orvalho
# umidade: 75 %
# temperatura: 15º
get_tpo(15, 75)
## [1] 10.60278
# criar dados
temp <- seq(0, 40, by = 0.1)
ur <- seq(10, 90, by = 0.1)
df <- expand_grid(temp, ur)
df <- mutate(df, po = get_tpo(temp, ur))

# criar um gráfico
ggplot(df, aes(temp, ur)) +
  geom_tile(aes(fill = po)) +
  scale_fill_gradientn(colors = c("blue", "yellow", "red"),
                       breaks = seq(-35, 35, by = 5)) +
  theme(axis.ticks.length = unit(0.2, "cm")) +
  scale_x_continuous(expand = c(0, 0)) +
  scale_y_continuous(expand = c(0, 0)) +
  guides(fill = guide_colourbar(barheight = unit(8, "cm"),
                                title = element_blank())) +
  labs(title = "Temperatura do ponto de orvalho",
       subtitle = "Em relação a temperatura e umidade relativa do ar",
       caption = "Elaboração: Prof. Tiago Olivoto",
       x = "Temperatura do ar (ºC)",
       y = "Umidade relativa do ar (%)")

Previous
Next