如何在将Dot文件(Graphviz)转换为图像时设置分辨率?

66

我尝试过

$ dot -Tpng rel_graph.gv > rel_graph.png

但生成的图像质量非常低。

4个回答

106
使用dpi属性。
例子:
graph G { 
  graph [ dpi = 300 ]; 
  /* The rest of your graph here. */ 
}

这种方法的负面影响是完全没有反锯齿效果。在低分辨率下(例如72 dpi),输出图像看起来会非常“点状”。 - yegor256
4
可能随着时间的推移它们已经改变了,我在72 dpi和300 dpi上都看到了抗锯齿。 - Emperor Orionii
2
@einpoklum 是的,它确实可以。 - mgttlinger
29
命令行中等效的“-Gdpi=300”在某些情况下也很有用。 - MvG

60

使用 -Gdpi 选项。

更多信息可以在这里找到。


1
dot -Tpng -Gdpi=300 foo.gv -o foo110percent.png注意:您可以通过更改使用“-o”指定的文件名的扩展名来更改输出格式 请参阅:http://www.graphviz.org/doc/info/output.html - Michael James Kali Galarnyk

13
我发现GraphViz绘制的图形很漂亮,但分辨率通常比较低。您可以尝试输出为SVG格式,然后使用其他图像软件将图像按比例缩放,并保存为像素格式(如PNG)。这可能会给您更好的分辨率,但我个人从未尝试过。我通常只创建可以在浏览器中查看的SVG文件。只需将-T参数更改为-Tsvg即可。
dot -Tsvg rel_graph.gv > rel_graph.svg

在Dot指南http://www.graphviz.org/pdf/dotguide.pdf中有关于图形缩放的一些内容,但它并没有很清楚地说明这如何影响分辨率,您也可以尝试调整这些设置,看看是否能改善情况。


1
将SVG数据保存为*.png文件对我来说似乎是个不好的主意... - MvG
@MvG 我犯了一个愚蠢的打字错误,我想我从 OP 的问题中复制粘贴了这个内容,并没有完全将“png”更改为“svg”。 - RobV

0

我认为抗锯齿取决于驱动程序。例如,我们硬编码 cairo_font_options_set_antialias(options,CAIRO_ANTIALIAS_GRAY); 但是我在其他图形原语中没有看到任何关于显式平滑或抗锯齿的内容,也没有在任何其他驱动程序中提到抗锯齿或平滑。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接