Dendograma de Alimentos

#Importar datos
library(readr)
EmojisFood <- read_csv("EmojisFood.csv")
## 
## -- Column specification --------------------------------------------------------
## cols(
##   .default = col_double(),
##   name = col_character(),
##   emoji = col_character()
## )
## i Use `spec()` for the full column specifications.
#EmojisFood

#Normalizado
Emoji_Norm <- scale(EmojisFood[,3:35])
#Emoji_Norm

#Asignación de nombres
rownames(Emoji_Norm) <- EmojisFood$name

#Calculo distancias
Emoji_Distancias <- dist(Emoji_Norm[,])
#Emoji_Distancias

#Agrupamiento jerarquico
Clusters <- hclust(Emoji_Distancias)
#Clusters

#install.packages("ggdendro")
library("ggdendro")

Dendograma <- ggdendrogram(Clusters)
Dendograma

Los emojis en el dendograma

#install.packages("stringi")
library(stringi)
labels <- EmojisFood[,c(1,2)]

# function para adicionar datos de labels
trimEmojiCode <- function (df,order){
  for(i in 1:nrow(df)){
    index <- order[i]
    df[index,3] <- order[i]
    tmp <- strsplit(stringi::stri_escape_unicode(df[index,2]),"\\\\U000")
    df[i,4] <- tmp[[1]][2]
  }
  colnames(df)<- c('name','emoji','id','code')
  return (df)
}

labels <- trimEmojiCode(EmojisFood[,c(1, 2)], Clusters$order)
#labels

#install.packages("ggimage")
#install.packages("ggplot2")
#install.packages("httr")
library("httr")
library("ggplot2")
library("ggimage")

Dendograma <- ggdendrogram(Clusters, size=1.5)
Dendograma <- Dendograma + geom_emoji(data=labels, aes(id, -1, image=code), size=0.02)
Dendograma <- Dendograma + geom_hline(yintercept = 13, color="red")
Dendograma <- Dendograma + annotate("text", label="corte", x=0, y=14, color="red")
Dendograma