yworks yed c# graph visualization

c# - yworks - yed



Biblioteca generadora de gráficos dirigida C# (3)

He utilizado NodeXL en el pasado, para generar gráficos de flujo de trabajo dentro de una aplicación web, pero también es adecuado para aplicaciones de escritorio e interacción.

La descripción puede confundirte un poco, haciéndote pensar que es solo para Excel. No del todo, puedes usar su modelo de objetos directamente y graficar lo que quieras de .NET.

Noté que Visual Studio puede generar gráficos usando algo llamado DGML.

Me gustaría generar un gráfico como el siguiente en mi aplicación C #.

No tiene que ser interactivo como el VS. Solo quiero generar una imagen estática y guardarla como un archivo de gráficos generales, como PNG.

¿Hay alguna libre biblioteca .NET para esto?



Un poco tarde, pero en realidad es relativamente fácil de implementar:

public class DGMLWriter { public struct Graph { public Node[] Nodes; public Link[] Links; } public struct Node { [XmlAttribute] public string Id; [XmlAttribute] public string Label; public Node(string id, string label) { this.Id = id; this.Label = label; } } public struct Link { [XmlAttribute] public string Source; [XmlAttribute] public string Target; [XmlAttribute] public string Label; public Link(string source, string target, string label) { this.Source = source; this.Target = target; this.Label = label; } } public List<Node> Nodes { get; protected set; } public List<Link> Links { get; protected set; } public DGMLWriter() { Nodes = new List<Node>(); Links = new List<Link>(); } public void AddNode(Node n) { this.Nodes.Add(n); } public void AddLink(Link l) { this.Links.Add(l); } public void Serialize(string xmlpath) { Graph g = new Graph(); g.Nodes = this.Nodes.ToArray(); g.Links = this.Links.ToArray(); XmlRootAttribute root = new XmlRootAttribute("DirectedGraph"); root.Namespace = "http://schemas.microsoft.com/vs/2009/dgml"; XmlSerializer serializer = new XmlSerializer(typeof(Graph), root); XmlWriterSettings settings = new XmlWriterSettings(); settings.Indent = true; XmlWriter xmlWriter = XmlWriter.Create(xmlpath, settings); serializer.Serialize(xmlWriter, g); } }