4

In ggraph, if the plot is radial, the labels can get crowded, whether using repel=T or not.

Is there a way to make label interactive or allowing rotating the graph in order to read the labels?

library(ggraph)
mtcarsDen <- as.dendrogram(hclust(dist(mtcars[1:4],  method='euclidean'), 
                            method='ward.D2'))
ggraph(graph = mtcarsDen, layout = 'dendrogram', repel = TRUE, circular = TRUE, 
   ratio = 0.5) + 
geom_edge_elbow() + 
geom_node_text(aes(x = x*1.05, y=y*1.05, filter=leaf, 
                 angle = node_angle(x, y), label = label), 
             size=3, hjust='outward') + 
geom_node_point(aes(filter=leaf)) + 
coord_fixed() + 
ggforce::theme_no_axes()
zx8754
  • 52,746
  • 12
  • 114
  • 209
santoku
  • 3,297
  • 7
  • 48
  • 76

1 Answers1

5

You can modify your angle aesthetic like this:

ggraph(graph = mtcarsDen, layout = 'dendrogram', repel = TRUE, circular = TRUE, 
       ratio = 0.5) + 
  geom_edge_elbow() + 
  geom_node_text(aes(x = x*1.005, y=y*1.005, filter=leaf, 
                     angle = -((-node_angle(x, y)+90)%%180)+90, label = label), 
                 size=3, hjust='outward') + 
  geom_node_point(aes(filter=leaf)) + 
  coord_fixed() + 
  ggforce::theme_no_axes()

enter image description here

abichat
  • 2,317
  • 2
  • 21
  • 39