Показывать метки точек при наведении при использовании fviz_dend из factoextra с ggplotly - PullRequest
0 голосов
/ 24 декабря 2018

Я могу сгенерировать графически построенное дерево со следующим:

library(factoextra)
library(plotly)

hcl <- hclust(
  dist(mtcars, method = "euclidean"), 
  method = "complete")

ggplotly(
  fviz_dend(
    hcl, 
    k = 5,
    show_labels = FALSE,
    type = "phylogenic",
    phylo_layout = "layout_as_tree"
  )
)

fviz_dend имеет возможность показывать метки, но это становится уродливым, когда есть сотни точек.Вместо этого я хотел бы иметь возможность навести курсор на точку и увидеть метки, хранящиеся в hcl$labels.В данный момент при наведении курсора отображаются только координаты и цветовой код:

See image

1 Ответ

0 голосов
/ 24 декабря 2018

Я не часто использую пакет plotly, и, надеюсь, кто-то придет с более элегантным решением, но следующие (на моем компьютере в любом случае) работают с филогенными деревьями:

k = 5 # change this based on number of groups for cutting the tree

gp <- ggplotly(
  fviz_dend(
    hcl, 
    k = k,
    show_labels = TRUE, # leave this as the default TRUE, so that the labels
                        # are passed to the plotly object; we can remove them 
                        # in the next step.
    type = "phylogenic",
    phylo_layout = "layout_as_tree")
)

# remove hover text for line segments
gp$x$data[[1]]$text <- NA 

# for each group, assign the label's text value to the point's text value,
# then remove the label
for(i in seq(k, 1)){
  gp$x$data[[i+1]]$text <- gp$x$data[[i+1+k]]$text
  gp$x$data[[i + 1 + k]] <- NULL
}

gp

screenshot

Примечание. Определенное количество слоев, созданных прямоугольными деревьями, отличается от приведенного выше, поэтому решение для филогенных деревьев не будет применяться напрямую.Но я предполагаю, что ваш вариант использования для филогенных.

...