#graph #graphviz #dot
#График #graphviz #точка
Вопрос:
Я новичок в graphviz. Я хотел бы нарисовать такую диаграмму
Тем не менее, это то, что я получаю. с помощью следующего кода
graph BUS_TOPOLOGY{
workstation1[shape=box pos = "100,50!"];
workstation2[shape=box];
workstation3[shape=box];
workstation4[shape=box];
workstation5[shape=box];
workstation6[shape=box];
bus[shape=rectangle width=15]
workstation1 -- bus --workstation4
workstation2 -- bus --workstation5
workstation3 -- bus --workstation6
}
Ответ №1:
Ваш запрос выходит за рамки, но он «выполним». Хотя вам нужны вертикальные ребра, соединяющие узлы с шиной, у dot нет такой директивы. Я ничего не знаю о VSCode, но вот (частичное) решение в прямой точке. Он использует html-запись для создания явных портов на шине:
digraph structs {
node [shape=rectangle]
{
rank=same
ws1 ws2 ws3
}
node [shape=plaintext]
bus [label=<
<TABLE BORDER="1" CELLBORDER="0" CELLSPACING="0" >
<TR>
<TD WIDTH="46" HEIGHT="12" PORT="p1"></TD>
<TD WIDTH="46" HEIGHT="12" PORT="p2"></TD>
<TD WIDTH="46" HEIGHT="12" PORT="p3"></TD>
<TD WIDTH="46" HEIGHT="12" PORT="p4"></TD>
<TD WIDTH="46" HEIGHT="12" PORT="p5"></TD>
<TD WIDTH="46" HEIGHT="12" PORT="p6"></TD>
<TD WIDTH="46" HEIGHT="12" PORT="p7"></TD>
</TR>
</TABLE>>];
node [shape=rectangle]
{
rank=same
ws4 ws5 ws6
}
edge [dir=none]
ws1 -> bus:p1;
bus:p2 -> ws4
ws2 -> bus:p3;
bus:p4 -> ws5
ws3 -> bus:p5;
bus:p6 -> ws6
}