Quelles sont les options disponibles pour la mise en page de graphiques dirigés ou non dirigés? in.NET Je ne sais pas.

Par graphique<!-Je veux dire quelque chose qui ressemble à ces images:

La solution idéale serait:

  • utiliser uniquement le code managé
  • autoriser la sortie d'une image bitmap
  • permettre la sortie de WPF éléments
  • inclure une sorte de surface interactive pour afficher le graphe qui supporte le zoom, le panoramique et la réorganisation de les nœuds

je suis également intéressé par des projets qui pourraient potentiellement être utilisées comme point de départ pour ce genre de travail. Si cela nécessite un certain développement pour atteindre ce que je veux, alors je suis prêt à l'aborder. La partie la plus complexe de cet objectif semble être l'obtention de la disposition du graphique dans un délai raisonnable.

31
demandé sur Dominique Fortin 2009-02-26 13:04:17

14 réponses

graphe# est aussi une autre option. Je ne l'ai pas utilisé personnellement, mais j'ai eu l'intention de se déplacer à la recherche sur elle.

12
répondu Jamie Penney 2009-04-27 03:19:05

Microsoft Research fournit un outil appelé MSAGL (Automatic Graph Layout, précédemment appelé GLEE) pour .NET.

MSAGL est disponible ici: http://research.microsoft.com/en-us/downloads/f1303e46-965f-401a-87c3-34e1331d32c5/default.aspx

avertissement: je n'ai pas utilisé l'outil donc je ne sais pas s'il est adapté pour vous (et je ne sais pas non plus au sujet des conditions de licence, semble qu'il est pour les applications non commerciales seulement). Mais au moins il semble intéressant.

8
répondu Dirk Vollmar 2009-02-26 10:09:58

je travaille dans L'équipe NDepend et je confirme: Nous sommes passés de GraphViz à MsAgl en septembre 2008 et aussi la licence MsAgl permet en effet une utilisation commerciale. Voici un échantillon de quelques photos de MsAgl graphiques intégrés dans NDepend (tout est interactif, les noeuds sont mobiles / sélectionnables / amovibles/cliquables, les bords sont modifiables/sélectionnables / amovibles / cliquables, la disposition est zoomable, et aussi, alors qu'il pourrait être plus propre L'API MsAgl est assez propre pour travailler avec):

enter image description hereenter image description hereenter image description here

8
répondu Patrick from NDepend team 2011-02-16 13:42:28

Graphviz est encore aujourd'hui, à mon avis, l'une des meilleures bibliothèques de graphes qu'il existe. Cependant, l'intégrer à .Net est une douleur.

il est possible d'appeler l'outil en ligne de commande pour générer une sortie de forme basée sur votre entrée graphique, puis vous lisez la sortie et placez les éléments sur un contrôle personnalisé qui affiche toutes les formes que graphviz a calculées. C'est très hacky mais c'est le meilleur moyen que notre équipe a trouvé pour intégrer graphviz avec .Net il y a quelques années.

Un une meilleure solution pourrait exister aujourd'hui; à ce moment-là GLEE était encore très embrionic et je n'ai pas vu le progrès Microsoft a fait depuis ce temps.

3
répondu Coincoin 2009-02-26 17:02:41

I have used NodeXL,http://www.codeplex.com/NodeXL, qui est une bibliothèque .Net 3.5 (mais aussi un Add-on Excel). NodeXl est développé par Microsoft Research et assez soigné: il a des algorithmes de visualisation et certains paramètres, mais il est encore à ses premiers stades de développement. Si vous avez un développeur. Net chevronné, alors je voudrais certainement y jeter un oeil.

cependant, si vous connaissez Python alors je recommanderais certainement Networkx et son cousin pygraphviz qui est une interface avec Graphviz. J'ai utilisé les deux et ma productivité avec Python / Networkx est beaucoup plus élevée que lorsque j'utilisais NodeXL.

GLEE est la bibliothèque source fermée de Microsoft que vous ne pouvez utiliser gratuitement que dans les logiciels non commerciaux, tandis que NodeXL est la façon de Microsoft d'utiliser le code source ouvert, mais vous pouvez l'utiliser librement dans un produit que vous développez.

2
répondu DrDee 2009-06-02 02:56:01

Juste pour faire la liste des options complètes: Graphviz4Net est une implémentation libre de ce que Coincoin a suggéré dans sa réponse.

2
répondu Steves 2011-08-31 11:08:58

Les garçons à l' Mindscape un

Avec le nom imaginatif diagrammes de flux du FPF

aussi, vérifiez les vertiges la Famille.Show projet de démonstration, il a une forme simple de cette

1
répondu TFD 2009-02-26 12:19:56

Utiliser QuickGraph à la sortie de Dot fichiers pour GraphViz. Je l'ai fait dans un récent projet, et il semble fonctionner assez bien. Regarde ici pour le code d'échantillon pour l'analyse.fichiers simples, ou utilisez mon projet ici comme référence pour seulement outputing .des images png.

1
répondu Jamie Penney 2009-04-27 02:43:22

j'ai utilisé MsAgl et il est assez bon. Il y a aussi des visionneuses pour WinForms et WPF qui peuvent ou non être importantes pour vous. Il n'est pas nécessaire d'utiliser les visionneuses car elles sont assez lâchement couplées au moteur de mise en page du graphique.

il ne supporte pas tout ce que fait Graphviz (notamment en termes de certains types de formes). Aussi la documentation pourrait être mieux, mais c'est assez solide si ce n'est le plus poli MS produit jamais.

il ne coche tous les éléments que vous mentionnez comme exigences, bien que la réorganisation "on viewer" ne supporte que les noeuds traînants, les bordures de routage et les étiquettes de repositionnement. Le graphique ne répond pas aux mouvements de ces éléments en repositionnant d'autres éléments.

1
répondu Raoul 2009-05-18 05:52:41

j'ai utilisé cette http://www.codeproject.com/Articles/484616/MVVM-Diagram-Designer c'est un open source, vraiment facile à utiliser. le code est très bien expliqué.

1
répondu Gilad 2013-10-19 17:41:09

Ses pas .NET, mais souvent référencé trousse d'outils pour le rendu des graphiques est AT&T Graphviz. Je n'ai utilisé que les applications autonomes moi-même, mais le code source est disponible sous quelque chose qui ressemble à une licence open source.

Graphviz est utilisé par L'outil de documentation de code populaire doxygen pour dessiner automatiquement divers diagrammes pour sa documentation générée.

0
répondu RBerteig 2009-02-26 10:13:49

lorsque j'ai travaillé sur des graphiques l'été dernier, j'ai trouvé que la meilleure option qui n'était pas trop chère était de le faire manuellement en SVG, c'est-à-dire d'écrire un fichier SVG à partir d'un tas de chaînes, et de le rendre à une image en utilisant Inkscape.

ce n'est pas une solution rapide et facile, mais elle permet une personnalisation quasi infinie, donc il peut être agréable si vous devez organiser les graphiques ou faire l'organisation spatiale basée sur les connexions etc.

0
répondu Ed James 2009-02-26 15:31:22

Northwoods GoLayout produit. Ils offrent arbre, force dirigée, et digraphe stratifié (qui n'est pas tout à fait un effet Sujiyama, mais pas trop loin pour beaucoup, si pas la plupart des ensembles de données). À 1790 $le siège, c'est cher. Il y a aussi quelques limites: plus important encore, leurs implémentations sont conçues pour des graphiques "lisibles par l'utilisateur". Je lui ai donné des ensembles de données de plus de 5.000 noeuds et n'avait pas de problème, mais je peux également générer des ensembles de données de moins de 500 noeuds qui provoquent un débordement de la pile (trop profond). Selon votre domaine, il peut (ou ne peut pas) être un bon ajustement. Si vous avez besoin d'un paquet de disposition générale qui gère n'importe quel ensemble de données, je suggère GraphViz au-dessus de Northwoods.

Je n'ai pas encore utilisé leurs capacités WPF, mais je sais qu'ils les ont. J'ai utilisé leurs affaires dans WinForms land pendant un moment.

0
répondu Mike Post 2009-05-18 05:32:31

j'ai joué sur GLEE / MSAGL et la mise en page en elle-même est assez bonne pour ce dont j'ai besoin mais je voudrais pouvoir avoir plus de contrôle sur ce qui est réellement à l'intérieur des noeuds plutôt que juste une valeur unique comme maintenant.

Par exemple j'aimerais avoir des "détails" qui sont cachés jusqu'à ce que je clique sur un expandeur dans le nœud, ou double-cliquez sur le nœud ou survolez avec la souris.

en supposant que GLEE ne peut pas faire cela sont là maintenant toutes les solutions pures .NET disponibles que pourrait-il faire?

0
répondu freddy smith 2014-06-18 18:53:15