【问题标题】:node-graphviz does not generate the expected png filenode-graphviz 不生成预期的 png 文件
【发布时间】:2019-12-18 21:13:34
【问题描述】:

我是 node-graphviz 的新手,它是 GraphViz 绘图工具的 Node.js 接口。

我想绘制一个有向图并使用代码将其保存到内存中:

var graphviz = require('graphviz');
var debug = true;

function draw (hbGraph) {
    /** Create the digraph */
    var vGraph = graphviz.digraph('Happens-Before-Graph'),
        eventNodes = {};

    /** Create nodes for digraph */

    for (var i = 0; i < hbGraph.eventNodes.length; i++) {
        /** Note, eventNodes is a sparse array */
        var event = hbGraph.eventNodes[i];
        if (event != undefined) {
            var node = vGraph.addNode(event.id, {
                'color': common.COLOR.GREY,
                'style': common.STYLE,
            });
            eventNodes[node.id] = node;
        }
    }

   /** Create edges for digraph, just ignore for this question */

   if (debug) {
        // Create digraph G
        var g = graphviz.digraph("G");

        // Add node (ID: Hello)
        var n1 = g.addNode( "Hello", {"color" : "blue"} );
        n1.set( "style", "filled" );

        // Add node (ID: World)
        g.addNode( "World" );

        // Add edge between the two nodes
        var e = g.addEdge( n1, "World" );
        e.set( "color", "red" );

        // Print the dot script
        console.log( g.to_dot() );

        // Set GraphViz path (if not in your path)
        g.setGraphVizPath( "/usr/local/bin" );
        // Generate a PNG output
        g.output( "png", "test01.png" );
    }

  console.log( vGraph.to_dot() );
  vGraph.setGraphVizPath( "/usr/local/bin" );
  vGraph.output('png', 'test02.png');
}

运行代码后会生成文件test01.png,而文件test02.png也不是没有异常。 to_dot() 方法的两个结果都成功打印在控制台上。 test02.pngto_dot() 方法的打印输出为:

digraph Happens-Before-Graph {
  "1" [ color = "grey" ];
  "7" [ color = "grey" ];
  "8" [ color = "grey" ];
  "9" [ color = "grey" ];
  "10" [ color = "grey" ];
  "11" [ color = "grey" ];
  "12" [ color = "grey" ];
  "13" [ color = "grey" ];
  "14" [ color = "grey" ];
}

我想知道为什么没有生成文件test02.png 以及如何生成它。有人可以帮我吗? 另外,无法生成关于这个库的文档,所以对它不熟悉。 附加信息:node-graphviz 的链接是node-graphviz

【问题讨论】:

  • 在调试上述代码时,我只运行创建节点的代码,而没有创建边的代码。为了生成 png 文件,我必须添加创建边缘的代码吗?
  • 很高兴to_dot 输出给出了这在问题中经常缺乏,它使不使用Node.js 的人也可以测试输出!我在webgraphviz.com 中运行了提到的输出并且也没有得到图片,但是我在有向图名称中看到了减号(-),并且当在下划线中更改这些或完全删除它们时,图像会出现。另见graphviz.org/doc/info/lang.html
  • @albert。你说的对。在我删除有向图名称中的减号- 后,代码成功生成图片。抱歉回复晚了,非常感谢!!!!!!

标签: graphviz


【解决方案1】:

答案就是去掉有向图中的减号-。 由于无法构建node-graphviz 的文档,所以我只是在这里发布正确的答案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-08
    • 1970-01-01
    • 2013-07-29
    • 2014-08-02
    • 1970-01-01
    • 2015-12-07
    • 2017-09-15
    • 1970-01-01
    相关资源
    最近更新 更多