Uma Função, Uma Visualização: pheatmap
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)