Czy istnieje sposób na abstrakcję kolejności wierzchołków, jaką GraphPlot dotyczy reguł VertexCoordinate z (FullForm lub InputForm) grafiki generowanej przez GraphPlot? Nie chcę używać funkcji VertexList funkcji GraphUtilities. Jestem również świadomy GraphCoordinates, ale obie te funkcje działają na wykresie, a nie na wyjściu graficznym GraphPlot.Reguły współrzędnych Vertex i VertexList z GraphPlot Graphic
Przykładowo
gr1 = {1 -> 2, 2 -> 3, 3 -> 4, 4 -> 5, 5 -> 6, 6 -> 1};
gp1 = GraphPlot[gr1, Method -> "CircularEmbedding",
VertexLabeling -> True];
[email protected](gp1 /. Graphics[Annotation[x___], ___] :> {x})
daje następująca lista sześciu par współrzędnych:
VertexCoordinateRules -> {{2, 0,866025}, {1,5 1,73205}, {0,5 1,73205} {0., 0.866025}, {0.5, 1.3469 * 10^-10}, {1.5, 0.}}
Skąd wiadomo, która reguła dotyczy danego wierzchołka i czy mogę być pewna, że jest to taki sam jak podany przez VertexList [gr1]?
Przykładowo
Needs["GraphUtilities`"];
gr2 = [email protected]
Map[# -> 1 &, EdgeList[{2 -> 3, 3 -> 4, 4 -> 5, 5 -> 6}]];
VertexList[gr2]
daje {1, 2, 3, 4, 5}
ale ....
gp2 = GraphPlot[gr2, VertexLabeling -> True,
VertexCoordinateRules ->
Thread[VertexList[gr1] ->
[email protected](gp1 /. Graphics[Annotation[x___], ___] :> {x})[[2]]]];
[email protected](gp2 /. Graphics[Annotation[x___], ___] :> {x})
daje szósty współrzędnych zestawy:
VertexCoordinateRules -> {{2., 0.866025}, {1.5, 1.73205}, {0.5, 1.73205}, {0., 0.866025}, {0.5, 1.3469 * 10^- 10}, {1.5, 0.}}
Jak mogę, na przykład, wyodrębnić poprawne VertexList dla VertexCoordinateRules dla gr2?
(I sobie sprawę, że można poprawić, co biorąc VertexList po wygenerowaniu GR2 w następujący sposób, na przykład)
[email protected]
SparseArray[
Map[# -> 1 &, EdgeList[{2 -> 3, 3 -> 4, 4 -> 5, 5 -> 6}]], {6, 6}]
{1, 2, 3, 4, 5, 6}
ale informacja, której potrzebuję, wydaje się być obecna na grafice GraphPlot: jak ją uzyskać?
(Powodem przekonwertować wykres na otoczki przylegania, które, jak wskazano przez Carl Woll wolframu, pozwala mi to węzeł sierocych ", tak jak w GP2)
okazji, w inny sposób stanowią odłączone wykresy z krawędzią lista ma krawędzie i-> i dla każdego węzła. Może wymagać SelfLoopStyle-> Brak podczas drukowania –
Tak, to prawda! Używałem go, zanim dowiedziałem się o metodzie Carla Wolla. Czasami muszę pokazywać własne pętle i (na razie) preferować metodę macierzy sąsiedztwa. – tomd
Sądzę, że obie są użyteczne - matryca dopasowania jest wygodniejsza, jeśli analizujesz wykresy lub robisz modyfikacje, które nie zmieniają liczby wierzchołków, podczas gdy edgelistka jest lepsza, gdy musisz zrobić coś takiego jak podzielenie wykresu na dwie części: –