Não estamos falando de mapa de calor georeferenciado e sim um mapa de calor genérico, isto é, considerando um plano de projeção qualquer. No nosso exemplo consideramos um plano cartesiano dado pelo cruzamento de duas variáveis categóricas ordinais: dias da semana versus meses do ano.
Vamos fazer um exercício de representar a Temperatura do ano de 2019 num mapa de calor considerando os meses e os dias da semana.
Primeiro prepara-se um dataframe com seis colunas, uma para o eixo Y (meses do ano) e as outras 5 para o eixo x (dias da semana). Cada dia da semana terá os valores da temperatura. Por simplicidade os valores da temperatura serão gerados aleatoriamente utilizando-se da distribuição uniforme. No mundo real estes valores devem ser obtidos.
# Gerando os dados e armazenando em df.
dt=seq(as.Date("2019-01-01"), as.Date("2019-12-31"),31)
mes=strftime(dt,format="%B")
eixoy <- factor(mes, levels = c(mes))
eixox <- c("seg", "ter", "qua", "qui", "sex")
df <- data.frame(Y = eixoy, matrix(runif(60, 12, 30),nrow = length(eixoy), ncol = length(eixox)))
names(df)[2:(length(eixox)+1)] <- eixox
df
## Y seg ter qua qui sex
## 1 janeiro 17.24941 29.10276 14.79775 22.46761 13.36291
## 2 fevereiro 20.37663 20.66497 27.77690 15.89901 20.68056
## 3 março 28.65687 25.65211 15.28535 20.97419 26.07244
## 4 abril 26.98441 27.08543 26.81093 26.95719 29.67788
## 5 maio 28.72077 16.12066 14.01192 16.90249 19.76688
## 6 junho 25.02693 26.69243 12.02883 20.65105 17.64142
## 7 julho 23.42427 25.02862 13.82290 24.25992 17.89344
## 8 agosto 15.79371 19.54400 12.85222 19.29478 16.41875
## 9 setembro 28.50302 19.40176 29.14845 26.30697 12.26836
## 10 outubro 15.87339 29.38788 21.12283 25.30904 20.24953
## 11 novembro 17.12416 23.23698 15.11947 26.74649 16.97556
## 12 dezembro 12.47604 24.38030 21.73209 17.15558 20.83080
# Reorganizar o dataframe
require(reshape2)
df_heatmap <- melt(df, id.vars = "Y")
names(df_heatmap)[2:3] <- c("X", "Temperatura")
head(df_heatmap)
## Y X Temperatura
## 1 janeiro seg 17.24941
## 2 fevereiro seg 20.37663
## 3 março seg 28.65687
## 4 abril seg 26.98441
## 5 maio seg 28.72077
## 6 junho seg 25.02693
require(ggplot2)
p<-ggplot(df_heatmap, aes(X, Y )) +
geom_tile(aes(fill = Temperatura), color = "white") +
scale_fill_gradient(low = "white", high = "yellowgreen") +
ylab("Meses") +
xlab("Dia da Semana") +
theme(legend.title = element_text(size = 10),
legend.text = element_text(size = 12),
plot.title = element_text(size=16),
axis.title=element_text(size=14,face="bold"),
axis.text.x = element_text(angle = 90, hjust = 1)) +
labs(fill = "Temperatura")
p
ggsave("mapadecalor.png",p,height=10,width=14,units="cm",dpi=300,type="cairo")
1-Crie um mapa de calor para o número de nascidos vivos do Brasil no período de 2013 a 2017. No eixo x os anos e no eixo y os meses do nascimento. Os dados dos meses de 2013 a 2017 foram obtidos de https://sidra.ibge.gov.br/pesquisa/registro-civil/quadros/brasil/2017
mes_2013=c(241819,226442,251780,252433,257809,236713,241256,232019,229689,228200,213130,221300) #n. nascidos vivos para os 12 meses
mes_2014=c(243962,234148,255859,255448,261667,242868,251391,238561,241299,230859,221993,235066)
mes_2015=c(250971,236110,273369,259960,264088,247914,247717,238888,244629,233283,222800,233240)
mes_2016=c(242824,237725,263755,253823,258810,242426,237487,228057,222093,211093,196938,208049)
mes_2017=c(223936,220800,264513,250096,266619,251839,245760,240659,233353,228288,222734,225869)
2-Crie um mapa de calor para representar seu histórico escolar.
3-Crie um mapa de calor das precipitações de chuva de Niterói para o mês de maio. (Desafio: encontrar os dados).