Вы можете сделать что-то подобное, используя VertexRenderingFunction
.
GraphPlot[{{A -> C, "go"}, {C -> B, "gone"}, {C -> D, "went"}, {C -> C, "loop"}},
DirectedEdges -> True,
VertexRenderingFunction -> ({{White, Disk[#, 0.15]},
AbsoluteThickness[2], Circle[#, 0.15],
If[MatchQ[#2, A | B], Circle[#, 0.12], {}], Text[#2, #]} &)]
![введите здесь описание изображения](https://i.stack.imgur.com/1gT9v.gif)
Метод обновлен в феврале 2015 г.
Чтобы сохранить возможность интерактивно перестраивать граф с помощью инструментов рисования (двойной щелчок), необходимо хранить графику вершин внутри GraphicsComplex
с индексами, а не координатами. Я считаю, что это можно сделать из VertexRenderingFunction
, используя увеличивающуюся переменную, но кажется проще и, возможно, более надежно сделать это с постобработкой. Это работает в версиях 7 и 10 Mathematica, предположительно также в 8 и 9:
GraphPlot[
{{A -> C, "go"}, {C -> B, "gone"}, {C -> D, "went"}, {C -> C, "loop"}},
DirectedEdges -> True
] /.
Tooltip[Point[n_Integer], label_] :>
{{White, Disk[n, 0.15]},
Black, AbsoluteThickness[2], Circle[n, 0.15],
If[MatchQ[label, A | B], Circle[n, 0.12], {}], Text[label, n]}
![введите здесь описание изображения](https://i.stack.imgur.com/7ACan.gif)
person
Mr.Wizard
schedule
13.11.2011