【问题标题】:Graphviz with java [closed]带有java的Graphviz [关闭]
【发布时间】:2015-10-15 08:28:53
【问题描述】:

我有一门课如下:

public class MyTasks{
    private String taskId;
    private String taskName;
    private List<MyTasks> inDependencies;
    private List<MyTasks> outDependencies;

    \\ getters and setters here
}

现在在我的主要方法中,我有 ListMyTasks 对象。

例如taskId 一个依赖于taskId 两个,而后者又依赖于taskId 三和四个。

我想使用 GraphViz 将此列表输出为显示各种 MyTasks 之间关系的依赖关系图。如何导入 Graphviz API for Java?我想知道可能是语言绑定或类似的东西。我的问题的解决方案不能包括安装 Graphviz。

【问题讨论】:

    标签: java graphviz


    【解决方案1】:

    这是一种不使用 jar 的方法(根据您要完成的工作,这可能是优点还是缺点)。

    我使用类似这样的代码将节点列表转换为 graphviz 格式的点文件。

    private String OPEN_GRAPH = "digraph G { \n";
    private String NODE = "{0} [label='{1}']; \n";
    private String EDGE = "{0} -> {1}; \n";
    private String CLOSE_GRAPH = "} \n";
    
    public void format(Appendable sb) throws IOException {
        sb.append(OPEN_GRAPH);
    
        //Render nodes
        for (Node node : graph.getNodes().values()) {
            sb.append(MessageFormat.format(NODE, node.getId(), node.getName()));
    
            //Render edges for node
            for (String targetEdge : node.getEdges()) {
                sb.append(MessageFormat.format(EDGE, node.getId(), targetEdge));
            }
        }
    
        sb.append(CLOSE_GRAPH);
    }
    

    您可以使用 graphviz 的 'dot' 命令将文件转换为图像。

    #create myfile.dot.png
    dot -Tpng myfile.dot -O
    

    【讨论】:

    • 可能我的问题并不清楚。我想要一个无需在我的计算机上安装 GraphViz 的解决方案。我需要一个只有罐子的解决方案。我可以在我的类路径中包含一些 jar 并使用图形 api(两者都用于从我的对象创建图形,然后通过绘图将其显示给用户)
    • 一发布我就重新阅读了您的问题并意识到我没有解决您的要求。对于那个很抱歉。我想你很清楚,我只是错过了。
    猜你喜欢
    • 2010-10-13
    • 2011-06-16
    • 1970-01-01
    • 2010-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-22
    • 2016-04-17
    相关资源
    最近更新 更多