【发布时间】: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.png 的to_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