neuer Graph in Mathematica 8.0

8
  1. Hat jemand eine Möglichkeit gefunden, Graph-Objekte in Mathematica 8 zu ändern? Insbesondere, wie Sie dieselbe Funktionalität erhalten, wenn Sie mit der rechten Maustaste auf das Diagramm klicken.

  2. Einige der neuen Grafikfunktionen stehen in Konflikt mit Combinatorica . Gibt es eine Möglichkeit, Mathematica dazu zu zwingen, eine eingebaute Version der Funktion zu verwenden? Mit anderen Worten, gibt es eine Möglichkeit, Zugang zu eingebautem CompleteGraph zu erhalten, nachdem ich Needs["Combinatorica"] gemacht habe, welches die Combinatorica-Version von CompleteGraph importiert?

Um 1 zu verdeutlichen, können Sie GraphStyle und GraphLayout im Kontextmenü von Graph ändern, und ich möchte sie programmgesteuert ändern können. Hier ist eine Möglichkeit, GraphStyle des Graph-Objekts

zu ändern %Vor%

Das vergisst jedoch Optionen des ursprünglichen Graphen wie VertexCoordinates

Brett's Rezept auf Grid-Grafik versuchen

%Vor%

Ссылка

Es scheint einen Fehler zu geben, wie Mathematica Diagrammkoordinaten in Graphenoperationen handhabt. Die erste Zeile darunter vertauscht Koordinaten, die zweite gibt eine interne Warnung, wahrscheinlich in Bezug auf Koordinaten. Die Verwendung von nicht ganzzahligen Scheitelpunkten und expliziten Koordinaten für jeden Scheitelpunkt ist nicht hilfreich. Eine Lösung besteht darin, Koordinaten global zu speichern und fixCoordinates function zur Verfügung zu haben, um die korrekten Koordinaten nach Änderungen an Graph neu zuzuordnen.

%Vor%     
Yaroslav Bulatov 29.11.2010, 08:04
quelle

3 Antworten

14

Die neuen Graph-Objekte sind in Mathematica 8 atomar. So haben sie wie Strings oder Bilder keine interne Struktur, die auf normale Weise manipuliert werden kann. Besonders ungewöhnlich ist, dass die neuen Objekte eine FullForm haben, die aussieht wie sie symbolisch manipuliert werden kann. Aber der Schein kann täuschen - diese Darstellung ist nicht nur für Mustervergleiche nicht zugänglich, sondern es ist nicht einmal eine gültige Graphspezifikation, wenn Sie sie mithilfe von Kopieren und Einfügen an Mathematica zurückgeben.

Ich habe ein paar Hacks gefunden, mit denen man die Graphenstruktur manipulieren kann. Der erste versucht, die "offiziellen" Kanäle zu verwenden, um die Eigenschaften von Graphen zu extrahieren:

%Vor%

Sie können diese Funktion wie folgt verwenden:

%Vor%

Diese Funktion verwendet VertexList , EdgeList und PropertyValue , um die Diagrammeigenschaften zu extrahieren. Leider sind einige Optionen auf diese Weise nicht wiederherstellbar. Beispielsweise wird die Grafik -Option ImageSize mit dieser Methode verloren gehen.

Ein noch abscheulicherer Hack nutzt die pseudo-symbolische Darstellung von FullForm:

%Vor%

Trotz seiner bösen Natur funktioniert diese zweite Funktion befriedigender, da sie die meisten Graphoptionen beizubehalten scheint. Ich sage "am meisten", weil ich noch nicht mit mehr esoterischen Optionen wie Wrappern, Formfunktionen und Grapheigenschaften experimentiert habe, die nachträglich vergeben wurden. Es gibt keine Garantie dafür, dass diese Methode unverändert funktioniert, da Wolfram die Darstellung von Grafikobjekten ändert (oder sogar, dass es jetzt für alle möglichen Grafikdefinitionen funktioniert).

Es sollte einen Weg geben, dies ohne Hacks zu erreichen. Ich hoffe immer noch, dass da draußen eine Funktion lauert, die die vollständige symbolische Darstellung eines Graphenobjekts liefert.

Wie bei den Symbolkonflikten, die nach dem Laden des Combinatorica-Pakets auftreten, können Sie immer noch auf die ursprünglichen Symbole zugreifen, indem Sie den Paketnamen explizit angeben, z. System'CompleteGraph . Wenn Sie bevorzugen, dass die Systemsymbole Vorrang vor den Combinatorica-Symbolen haben, können Sie den folgenden Ausdruck auswerten, um die Paketsuchreihenfolge zu ändern:

%Vor%

Ich stelle fest, dass Wolfram das Combinatorica-Paket effektiv ablehnt, indem es beim Laden des Pakets eine unheimliche Warnmeldung ausgibt.

    
WReach 04.12.2010, 23:45
quelle
4

Im Folgenden werden die Eckpunktkoordinaten des ursprünglichen Diagramms beibehalten.

%Vor%

Ich würde denken, dass etwas Ähnliches auch andere Optionen erhalten könnte, obwohl ich es nicht ausprobiert habe.

    
Brett Champion 29.11.2010 19:11
quelle
3

Für # 2 sollten Sie in der Lage sein, zwischen den beiden mit dem Kontext zu unterscheiden. Daher erstellt System'CompleteGraph[5] ein neues V8-Diagramm, während Combinatorica'CompleteGraph[5] ein altes Combinatorica-Diagramm erstellt.

Ich bin nicht sicher, was Sie in # 1 genau meinen, aber Sie können das Diagramm in Grafiken konvertieren, dann erscheint das Kontextmenü wie zuvor. Ich bin mir nicht sicher, ob das eine Verbesserung ist.

    
Mark McClure 29.11.2010 13:56
quelle

Tags und Links