2017-07-25 5 views
1

J'essaie de tracer un dendrogramme avec le paquet ggraph mais, il est ok avec geom_edge_diagonal() mais pas avec geom_edge_elbow()« « direction » objet introuvable » avec dendrogramme dans le paquet de GGRAPH

paquets

library(phyloseq) 
library(igraph) 
library(ggraph) 

Obtenir des données

Le fichier ps.rds est disponible ici

https://github.com/spholmes/F1000_workflow/tree/master/data

ps <- readRDS("ps.rds") 

EdgeList <- phy_tree(ps)$edge 
Tree <- graph_from_edgelist(EdgeList, directed = TRUE) 

Traçage

ggraph(Tree, 'dendrogram') + 
    geom_edge_diagonal() 

enter image description here

Ce code fonctionne, mais l'intrigue est pas très beau.

Et maintenant:

ggraph(Tree, 'dendrogram', circular = TRUE) + 
    geom_edge_elbow() 

Error in FUN(X[[i]], ...) : object 'direction' not found 

J'ai quelques questions:

  1. Pourquoi cela ne fonctionne pas yhereas cela fonctionne pour l'autre dendrogramme?
  2. Quelle est la direction? Dans la documentation du package, il est dit que la direction est "définie automatiquement" https://www.rdocumentation.org/packages/ggraph/versions/0.1.1/topics/geom_edge_elbow
  3. Puis-je trouver quelque chose d'utile pour tracer dans l'objet ps?

EDIT après F. commentaire Privé

Oui, il est possible de mélanger dendrogram et circular.

ggraph(Tree, 'dendrogram', circular = TRUE) + 
    geom_edge_diagonal() 

enter image description here

+0

Quand je joue autour de votre exemple, je reçois l'erreur « circulaire mise en page seulement applicable à l'arbre et la mise en page DAG ». Êtes-vous sûr de pouvoir utiliser 'layout = 'dendrogram'' avec' circular = TRUE'? –

Répondre

1

Pour certaines raisons qui sont trop impliqués pour discuter ici, geom_edge_elbow prend actuellement en charge uniquement les objets dedrogram/hclust et non iGRAPH objets.

Je vais probablement avoir compris un moyen de contourner cela pour la prochaine version

+0

Ok, merci. Je vais attendre la prochaine version;) – AntoineBic