2016-11-07 4 views
0

Ich möchte doppelte Kanten oder noch mehr Kanten, wenn erforderlich, zwischen Scheitelpunkte haben.Matlab: Erstellen von doppelten Kanten in Grafik

Der normale Grafikbefehl erlaubt nicht und gibt Fehler, dass doppelte Kanten nicht erlaubt sind, dasselbe gilt auch für Digraph.

Kennt jemand irgendeine Art oder Trick, dies zu tun?

Sagen wir mal als Beispiel ich Matlab wollen unter dem Diagramm zeichnen:

G = graph([1 1 3],[2 2 5]) 
plot(G) 
+0

Wie würden Sie wissen, zwischen welchen Kanten ein Eckpunkt gezeichnet werden soll, wenn Sie doppelte Kanten haben? – patrik

+0

@patrik du meinst wohl zwischen welchen scheitelpunkten man kanten zieht :) ist das wichtig? Ich möchte nur die gekrümmte Kante zeigen, die den Scheitelpunkt 1 mit dem Scheitelpunkt 2 verbindet, zum Beispiel in der Grafik oben. – Soyol

+0

Nun, das Problem ist, dass, wenn Sie nicht wissen, welche Kante Sie daraus ziehen möchten, es sinnvoll wäre, die erste zu wählen. Dies würde immernoch nur eine der Kanten füllen und Duplikate unbrauchbar machen. Vielleicht ist das Problem, dass Sie viele Ecken zwischen 2 Kanten haben möchten? Sind Sie sicher, dass Sie nicht wirklich nach einem Array suchen oder die Gewichtung der Scheitelpunkte ändern möchten? – patrik

Antwort

0

Dies ist nicht möglich mit dem MATLAB-Klasse Graph. Diagramme, die mehrere Kanten zwischen zwei Knoten zulassen, werden in der Regel als Multi-Graphen oder ähnliches bezeichnet und werden weniger häufig verwendet.

Sie können dieses Problem umgehen, indem eine Gewichtungsvariable hinzufügen, die größer ist, wenn es mehrere Kanten darstellt:

G = graph([1 3], [2 5], [2 1]); 

Dies könnte dann verwendet werden, die Kante mit einer dickeren Linie zu zeichnen:

plot(G, 'LineWidth', G.Edges.Weight); 

Je nach dem, was Sie mit diesem Diagramm tun möchten, sind möglicherweise andere Problemumgehungen möglich.

Verwandte Themen