Uma Função, Uma Visualização: pheatmap

Créditos da Imagem: Canva

A função pheatmap do pacote pheatmap permite desenhar mapas de calor agrupados onde se tem melhor controle sobre alguns parâmetros gráficos. Apresente sua matriz numérica de forma mais intuitiva e com um layout rico em detalhes.

Assista neste link como funciona a função. O código está disponível logo abaixo.

##%######################################################%##
#                                                          #
####            UMA FUNCAO, UMA VISUALIZACAO            ####
#                                                          #
##%######################################################%##

# CARREGANDO OS PACOTES
library(titanic)
# install.packages("pheatmap")
library(pheatmap)

# LENDO E FILTRANDO OS DADOS
data("titanic_train")
dados <- titanic_train[,-c(1,4,9,11)]
str(dados)

# CONVERTENDO VARIAVEIS
dados$Survived <- as.factor(dados$Survived)
dados$Pclass <- as.factor(dados$Pclass)
dados$Sex <- as.factor(dados$Sex)
dados$Embarked <- as.factor(dados$Embarked)

# CORRIGINDO O ESPACO EM BRANCO DA VARIAVEL EMBARKED
levels(dados$Embarked) <- c(NA, "C", "Q", "S")

# PEGANDO OS DADOS COMPLETOS
dados <- dados[complete.cases(dados),]

# FUNCAO PHEATMAP

# UTILIZA VARIAVEIS NUMERICAS 
ind <- sample(1:712, 50)
dados_num <- as.matrix(dados[ind,c(4:7)])

# NORMALIZANDO PARA MEDIA 0 (ZERO) E DESVIO-PADRAO 1 (UM)
dados_num_scale <- scale(dados_num)

# ARGUMENTOS 

library(RColorBrewer)
pheatmap(
  # mat: matriz numerica dos valores a serem tracados
  mat = dados_num_scale,
  # color: vetor de cores usadas no mapa de calor
  color = colorRampPalette(rev(brewer.pal(n = 7, name =
                                            "RdYlBu")))(100),
  # kmeans_k: numero de clusters kmeans a serem feitos
  kmeans_k = NA,
  # border_color: cor das bordas da celula no mapa de calor, 
  # use NA se nenhuma borda deve ser desenhada
  border_color = "black",
  # cellwidth e cellheight: largura e altura da celula 
  cellwidth = 20,
  cellheight = NA,
  # scale: caractere que indica se os valores devem ser 
  # centralizados e escalados na direcao da linha ou da coluna,
  # ou nenhuma - "row", "column" e "none"
  scale = "none",
  # cluster_rows e cluster_cols: valores booleanos que determinam
  # se as linhas ou colunas devem ser agrupadas ou objeto hclust
  cluster_rows = T,
  cluster_cols = F,
  # clustering_distance_rows e clustering_distance_cols: medida 
  # de distancia usada em agrupamento das linhas ou colunas. 
  # "correlation" para correlacao de Pearson e todas as distancias
  # suportadas por dist, como "euclidean", etc. 
  clustering_distance_rows = "euclidean",
  clustering_distance_cols = "euclidean",
  # clustering_method: metodo de agrupamento usado
  clustering_method = "complete",
  # cutree_rows e cutree_cols: numero de clusters em que as 
  # linhas ou colunas sao divididas, com base no agrupamento 
  # hierarquico (usando cutree)
  cutree_rows = 5,
  cutree_cols = NA,
  # treeheight_row e treeheight_col: altura de uma arvore para
  # linhas ou coluna, se estiverem agrupadas
  treeheight_row = 50,
  treeheight_col = 50,
  # legend: legenda das cores
  legend = T,
  # legend_breaks: vetor de pontos de interrupcao para a legenda
  legend_breaks = c(-1, 2, 5),
  # legend_labels: vetor de rotulos para legend_breaks
  legend_labels = c("Baixo", "Médio", "Alto"),
  # annotation_row e annotation_col: quadro de dados que 
  # especifica as anotacoes mostradas no lado esquerdo (row) ou 
  # acima (col) do mapa de calor
  annotation_row = NA,
  annotation_col = cat_dados,
  # annotation_colors: lista para especificar as cores das trilhas 
  # annotation_row e annotation_col manualmente
  annotation_colors = NA,
  # annotation_legend: valor booleano que mostra se a legenda das 
  # trilhas de anotacao deve ser desenhada
  annotation_legend = TRUE,
  # annotation_names_row e annotation_names_col: valor booleano 
  # mostrando se os nomes das trilhas de anotacao de linha ou 
  # coluna devem ser desenhados
  annotation_names_row = TRUE,
  annotation_names_col = TRUE,
  # drop_levels: logico para determinar se os niveis nao 
  # utilizados tambem sao mostrados na legenda
  drop_levels = TRUE,
  # show_rownames e show_colnames: booleano especificando 
  # se os nomes das linhas ou colunas sao mostrados
  show_rownames = F,
  show_colnames = T,
  # main: titulo do grafico
  main = "Heatmap dos dados do Titanic",
  # fontsize tamanho da fonte
  fontsize = 10,
  # fontsize_row e fontsize_col: tamanho da fonte das linhas ou colunas
  fontsize_row = 10,
  fontsize_col = 10,
  # angle_col: angulo dos rotulos das colunas (0, 45, 90, 270 e 315)
  angle_col = "45",
  # display_numbers: logica determinando se os valores 
  # numericos tambem sao impressos nas celulas 
  display_numbers = T,
  # number_format: strings de formato dos numeros mostrados 
  number_format = "%.1f",
  # number_color: cor do texto
  number_color = "grey30",
  # fontsize_number: tamanho da fonte dos numeros exibidos nas celulas
  fontsize_number = 7,
  # labels_row e labels_col: rotulos personalizados para 
  # linhas ou colunas que sao usadas em vez de nomes de linha
  labels_row = NULL,
  labels_col = NULL,
  # filename: caminho do arquivo onde salvar a imagem. 
  # png, pdf, tiff, bmp, jpeg
  filename = "C:/Users/Leticia/Desktop/YouTube/heatmap.png",
  # width: opcao manual para determinar a largura e altura 
  # do arquivo de saida em polegadas
  width = NA,
  height = NA,
  # silent: nao desenha o grafico 
  silent = FALSE,
  # na_col: especifica a cor da celula NA na matriz
  na_col = "#DDDDDD"
)

cat_dados <- data.frame("classe" = c("C", "D", "D", "C"))
rownames(cat_dados) <- colnames(dados_num)

png

Letícia Raposo
Letícia Raposo
Professora Adjunta

Biomédica e matemática de formação, atualmente é professora de Estatística da UNIRIO. Ama programar nas horas vagas acompanhada de um bom café. ☕

Relacionados