Управление рендерингом растровых изображений
Я пытаюсь
- создать график для отображения на веб-сайте через Graphviz.
- сделайте каждый узел кликабельным с помощью imagemap (или некоторых других инструментов).
Для этого я должен сделать график
- Какой атрибут я должен установить, чтобы получить максимальную ширину / высоту отображаемого графа? Я заглянул на страницу http://www.graphviz.org/doc/info/attrs.html и попытался манипулировать такими атрибутами, как
size
но это не похоже на меня. - Как я должен интерпретировать
pos
атрибуты узлов и ребер?
1 ответ
Управление размером
Как вы правильно предположили, это можно сделать, изменив size
,
Вот некоторые примеры:
digraph {1->2;}
Размеры изображения: 83 * 155 пикселей. Это размер графика с настройками по умолчанию.
digraph {size=1; 1->2;}
Размеры изображения: 51 * 96 пикселей. Изображение было уменьшено до 1 дюйма (96 точек на дюйм). Это ожидаемое поведение, потому что в документации говорится:
Если он определен, а чертеж больше заданного размера, чертеж равномерно уменьшается, чтобы он соответствовал заданному размеру.
digraph {size=2; 1->2;}
Размеры изображения: 83 * 155 пикселей. Опять же ожидаемое поведение, график уже меньше 2 дюймов и не нуждается в уменьшении.
digraph {size="2!"; 1->2;}
Размеры изображения: 103 * 192 пикселей. График масштабировался до тех пор, пока одно из измерений не равнялось 2 дюймам. Ожидаемое поведение, потому что в документации говорится:
Если размер заканчивается восклицательным знаком (!), То он принимается за желаемый размер. В этом случае, если оба размера чертежа меньше размера, чертеж масштабируется равномерно до тех пор, пока хотя бы одно измерение не станет равным его размеру в размере.
Интерпретация pos-атрибутов узлов и ребер
Я предполагаю, что вы хотите pos
значения формата xdot.
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 "];
}
Положительные значения узлов обозначают центр положения узла. Поскольку ограничивающим прямоугольником графика является "0,0,54,108", позиции узлов "27,18" и "27,90" идеально отцентрированы по горизонтали.
Для краев, я думаю, pos
содержит точки краевых сегментов, тогда как _draw_
содержит контрольные точки B-Spline (но я не совсем уверен в этом).