Configuration 减小graphviz生成的图形的大小(如面积)

Configuration 减小graphviz生成的图形的大小(如面积),configuration,graphviz,image-size,graph-drawing,Configuration,Graphviz,Image Size,Graph Drawing,有没有人有减少graphviz生成的图形大小的一般技巧(大小与区域大小相同,而不是与文件大小相同) 我有一个相当大的图(700个节点)。我为每个节点设置了较小的字体大小,但它似乎只减少了字体大小,而不是实际的节点大小。是否有任何属性可以减少图形中的总空白量?谢谢 根据我的经验,使用graphviz渲染该大小的图形(~700个节点),对这三个对象(图形、节点和边)的属性设置组合进行最小的试错调整(有些是结构性的,有些是纯美学的),应该可以满足您的需要: 通过“nodesep”减少节点之间的最小间隔

有没有人有减少graphviz生成的图形大小的一般技巧(大小与区域大小相同,而不是与文件大小相同)


我有一个相当大的图(700个节点)。我为每个节点设置了较小的字体大小,但它似乎只减少了字体大小,而不是实际的节点大小。是否有任何属性可以减少图形中的总空白量?谢谢

根据我的经验,使用graphviz渲染该大小的图形(~700个节点),对这三个对象(图形、节点和边)的属性设置组合进行最小的试错调整(有些是结构性的,有些是纯美学的),应该可以满足您的需要:

通过“nodesep”减少节点之间的最小间隔;e、 例如,节点[nodesep=0.75];这将使图形“过于紧凑”。(nodesep和ranksep可能比任何其他可调参数更能影响dot绘制图形的方式)

减少不同等级节点之间的最小距离,例如节点[ranksep=0.75];'ranksep’设置不同列组的节点之间的最小距离——如果图形由多个列组组成,这将显著影响图形布局

增加边缘权重,例如,边缘[weight=1.2];这将使边更短,从而使整个图形更紧凑

删除节点边框和节点填充,例如节点[color=none;shape=plaintext],特别是对于椭圆形节点,总节点空间的很大一部分是“未使用的”(即,不用于显示节点标签);现在,每个节点的示意图都减少为其文本

显式设置节点的字体大小(节点边框被放大,以便围绕节点文本,这意味着给定节点的字体大小和文本量对其大小有显著影响);[fontsize=11]应足够大,以便清晰易读,同时还应减少“杂乱”的外观(默认大小为14)

为节点和边使用不同的颜色——这将使图形更易于阅读;e、 例如,将节点“文本”fontcolor设置为蓝色,将边缘fontcolor设置为“灰色”,以帮助眼睛区分两组图形结构。这将产生比你想象的更大的不同


明确设置图形总大小,例如,图形[size=“7.75,10.25”](确保您的图形适合8.5 x 11页面,并占用整个空间)

感谢您的详细回复。我唯一的问题是设置字体大小似乎并没有减少它的整体节点大小。看起来只有字体变小了。没问题。关于“fontsize”,如果先删除节点边界和节点填充,使每个节点的表示形式仅为节点文本,则减小文本大小正是您想要的,因为它会减小“明显的”节点大小。(当然,删除节点边框/填充并不总能提高整体“分辨率”——这取决于您的图形,但您一试就会知道)。上述建议非常好,比我所做的提供了更多的功能
cat[something.dot]| dot Gdpi=64-Tpng:cairo:cairo>[outfile.png]
这只是缩放图形…将节点边更改为灰色确实会产生不同,尤其是当您必须仔细查看巨大的凌乱图形时。谢谢<代码>节点[nodesep=0.75]不再工作,必须将其直接放入图形中。与
ranksep相同
这个答案是关于最优雅和最不需要实施的工作。@ForbesMyster否——您链接到的答案概括为“要使图表变小,请缩小”“--很好,这可能适用于渲染任何数字图像。GraphViz是一个图形布局引擎,因此,对于减少图形大小的问题,一个有用的答案最有用地指向图形本身的布局,因为这是GraphViz所做的本质,即布局图。更重要的是,这种“缩小”的解决方案并不能解决大面积的空白或稀疏的问题,但更好的布局技术实际上可以解决。