控制位图渲染

时间:2011-04-29 18:40:09

标签: graphviz

我正在尝试

  • 生成一个图表,通过Graphviz在网站上显示。
  • 使每个节点都可以通过imagemap(或其他一些工具)进行点击。

为此,我必须渲染图表

  • 我应该设置什么属性来获取渲染图的最大宽度/高度?我查看了页面http://www.graphviz.org/doc/info/attrs.html并试图操纵size这样的属性,但它似乎对我不起作用。
  • 我应该如何解释节点和边缘的pos属性?

1 个答案:

答案 0 :(得分:9)

控制大小

正如您所正确的假设,可以通过修改size来完成。

以下是一些例子:

digraph {1->2;}

图片尺寸: 83 * 155px 。这是具有默认设置的图表大小。

digraph {size=1; 1->2;}

图片尺寸: 51 * 96px 。图像按比例缩小以适合1平方英寸(96 dpi)。这是预期的行为,因为文档声明:

  

如果已定义且绘图较大   比给定的尺寸,图纸是   均匀缩小以使其适合   在给定的大小范围内。

digraph {size=2; 1->2;}

图片尺寸: 83 * 155px 。再次预期的行为,图表已经小于2英寸,不需要按比例缩小。

digraph {size="2!"; 1->2;}

图片尺寸: 103 * 192px 。图表按比例放大,直到其中一个尺寸等于2英寸。预期的行为,因为文档说明:

  

如果大小以感叹号结束   (!),然后它被认为是   所需的大小。在这种情况下,如果两者都有   图纸的尺寸较小   比尺寸大,图纸按比例放大   均匀地直到至少一个维度   等于它的尺寸。

解释节点和边的pos属性

我假设你的意思是xdot格式的pos值。

图表的xdot

digraph {1->2;}

是以下

digraph {
    node [label="\N"];
    graph [bb="0,0,54,108",
        _draw_="c 9 -#ffffffff C 9 -#ffffffff P 4 0 -1 0 108 55 108 55 -1 ",
        xdotversion="1.2"];
    1 [pos="27,90", width="0.75", height="0.5", _draw_="c 9 -#000000ff e 27 90 27 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 9 -#000000ff T 27 84 0 7 1 -1 "];
    2 [pos="27,18", width="0.75", height="0.5", _draw_="c 9 -#000000ff e 27 18 27 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 9 -#000000ff T 27 12 0 7 1 -2 "];
    1 -> 2 [pos="e,27,36.413 27,71.831 27,64.131 27,54.974 27,46.417", _draw_="c 9 -#000000ff B 4 27 72 27 64 27 55 27 46 ", _hdraw_="S 5 -solid c 9 -#000000ff C 9 -#000000ff P 3 31 46 27 36 24 46 "];
}

节点的pos值指定节点位置的中心。由于图形的边界框为“0,0,54,108”,因此节点位置“27,18”和“27,90”完全水平居中。

对于边缘,我猜pos包含边缘线段的点,而_draw_包含B-Spline控制点(但我对此并不确定)。