(JGraphT)将图形导出为点

(JGraphT)将图形导出为点,graph,dot,jgrapht,Graph,Dot,Jgrapht,我使用这个库,并且我有方向图,其中字符串作为顶点,默认边作为边。 现在我想知道如何以点格式导出图形。 出口的最佳方式是什么? 从jgraph文档中我了解到,我可以使用DOTExporter类 为了实例化那个类,我需要一个Writer和一个VertexProvider,我很难从给定的图中实例化它 这是我要导出的图形类型: Graph<String, DefaultEdge> graph 下面是使用DOTExporter以点格式导出图形的两个示例。在第一个示例中,未提供vertexID

我使用这个库,并且我有方向图,其中字符串作为顶点,默认边作为边。 现在我想知道如何以点格式导出图形。 出口的最佳方式是什么? 从jgraph文档中我了解到,我可以使用DOTExporter类 为了实例化那个类,我需要一个Writer和一个VertexProvider,我很难从给定的图中实例化它

这是我要导出的图形类型:

Graph<String, DefaultEdge> graph

下面是使用DOTExporter以点格式导出图形的两个示例。在第一个示例中,未提供vertexIDProvider。因此,导出器不知道如何命名顶点,因此它只为每个顶点指定一个唯一的编号。在第二个示例中,我提供了一个vertexIDProvider。vertexIDProvider是一个函数vertexIDProvider,它将顶点映射到字符串。在第二个示例中,我只是将一个顶点映射到它的字符串表示形式。 最后,在示例中,我使用了一个简单的编写器。在您的实现中,您可能希望使用FileWriter将结果写入实际文件

//Create a graph with some vertices and edges
Graph<String, DefaultEdge> graph=new SimpleGraph<>(DefaultEdge.class);
Graphs.addAllVertices(graph, Arrays.asList("v1", "v2", "v3", "v4"));
graph.addEdge("v1", "v2");
graph.addEdge("v2", "v3");
graph.addEdge("v3", "v4");
graph.addEdge("v4", "v1");

//Create the exporter (without ID provider)
DOTExporter<String, DefaultEdge> exporter=new DOTExporter<>();
Writer writer = new StringWriter();
exporter.exportGraph(graph, writer);
System.out.println(writer.toString());

//Create the exporter (with ID provider)
DOTExporter<String, DefaultEdge> exporter2=new DOTExporter<>(v -> v.toString());
writer = new StringWriter();
exporter2.exportGraph(graph, writer);
System.out.println(writer.toString());

在中可以找到更详细的示例。在类中可以找到更多示例。

以下是使用DOTExporter以点格式导出图形的两个示例。在第一个示例中,未提供vertexIDProvider。因此,导出器不知道如何命名顶点,因此它只为每个顶点指定一个唯一的编号。在第二个示例中,我提供了一个vertexIDProvider。vertexIDProvider是一个函数vertexIDProvider,它将顶点映射到字符串。在第二个示例中,我只是将一个顶点映射到它的字符串表示形式。 最后,在示例中,我使用了一个简单的编写器。在您的实现中,您可能希望使用FileWriter将结果写入实际文件

//Create a graph with some vertices and edges
Graph<String, DefaultEdge> graph=new SimpleGraph<>(DefaultEdge.class);
Graphs.addAllVertices(graph, Arrays.asList("v1", "v2", "v3", "v4"));
graph.addEdge("v1", "v2");
graph.addEdge("v2", "v3");
graph.addEdge("v3", "v4");
graph.addEdge("v4", "v1");

//Create the exporter (without ID provider)
DOTExporter<String, DefaultEdge> exporter=new DOTExporter<>();
Writer writer = new StringWriter();
exporter.exportGraph(graph, writer);
System.out.println(writer.toString());

//Create the exporter (with ID provider)
DOTExporter<String, DefaultEdge> exporter2=new DOTExporter<>(v -> v.toString());
writer = new StringWriter();
exporter2.exportGraph(graph, writer);
System.out.println(writer.toString());

在中可以找到更详细的示例。在类中可以找到更多示例。

这是我现在将图形导出为.dot的方式:

DOTExporter<String, DefaultEdge> exporter = new DOTExporter<>();
        exporter.setVertexAttributeProvider((v) -> {
            Map<String, Attribute> map = new LinkedHashMap<>();
            map.put("label", DefaultAttribute.createAttribute(v));
            return map;
});
Writer writer = new StringWriter();
exporter.exportGraph(Graph, writer);

这是我现在将图形导出为.dot的方式:

DOTExporter<String, DefaultEdge> exporter = new DOTExporter<>();
        exporter.setVertexAttributeProvider((v) -> {
            Map<String, Attribute> map = new LinkedHashMap<>();
            map.put("label", DefaultAttribute.createAttribute(v));
            return map;
});
Writer writer = new StringWriter();
exporter.exportGraph(Graph, writer);

谢谢乔里斯的帮助。到现在为止,我自己已经弄明白了谢谢乔里斯的帮助。到现在为止,我自己已经弄明白了