Как определить двойные линии для форм ребер и узлов в графической точке?

Как стилизовать ребра и узлы с помощью graphviz dot с двойными линиями, как показано в узлах "LEGAL" и "TAX DISC" на следующей диаграмме?

Диаграмма ER


person Judge Maygarden    schedule 02.06.2011    source источник


Ответы (3)


Двойные формы можно сделать, используя [peripheries=2] на узле.

Сдвоенные края можно сделать, указав более одного цвета для края, разделенных двоеточием. В этом случае используйте один и тот же цвет дважды: [color="black:black"] (или, чтобы разделить их немного больше, сделайте [color="black:invis:black"])

Я добрался туда в конце концов! Извините за «эволюционный» характер этого ответа :-)

Так например

graph G {
    Foo [peripheries=2]
    Foo -- Bar [color="black:white:black"]
}
person marnir    schedule 02.06.2011
comment
Использование цвета white с небелым фоном или объектами может вызвать проблемы. См. мой ответ для лучшего решения. - person Mr. Lance E Sloan; 10.06.2015

принятый ответ верен в отношении использования атрибута peripheries для контуров нескольких узлов.

Однако использование цвета white для рисования разнесенных двойных ребер между узлами не является идеальным. Если такое ребро нарисовано на небелом фоне или пересекает небелые объекты, будет видна белая линия. Гораздо лучше использовать один из цветов none или invis. Чтобы обновить часть примера из принятого ответа:

graph G {
    Foo [peripheries = 2]
    Foo -- Bar [color = "black:invis:black"]
}

Дополнительные сведения см. в документации по цветам Graphviz.

person Mr. Lance E Sloan    schedule 10.06.2015

(См. другие ответы о нормальных ребрах и узлах)

Трехцветное решение не работает с направленными краями с dir="back".

digraph A {
    foo -> bar [dir = "back", color = "black:invis:black"];
}

приводит к этому результату:

введите здесь описание изображения

Я попытался обернуть его invis слоями снаружи. Выглядит немного странно по сравнению с обычными стрелками из-за увеличенной ширины края, но, по крайней мере, читателю понятно:

digraph A {
    foo -> bar [dir = "back", color = "invis:black:invis:black:invis"];
}

введите здесь описание изображения

Однако это не будет работать с передними краями.

person SOFe    schedule 09.09.2019