我花了几个小时试图转换一些使用Mathematica 7的旧代码GraphPlot来使用新的Mathematica 8 Graph函数.这似乎是明智的,因为新的图形绘制更好,它有像KirchhoffMatrixAdjacencyMatrix和内置的东西.
问题是我无法弄清楚如何在Mma 8中使用多边的图形.
我用作规范示例的Feynman图是双回路真空图
GraphPlot[{1 -> 2, 1 -> 2, 1 -> 2}, MultiedgeStyle -> .5,
DirectedEdges -> True, VertexCoordinateRules -> {{-1, 0}, {1, 0}}]
Run Code Online (Sandbox Code Playgroud)

试图在Mma 8中制作类似的图表
Graph[{DirectedEdge[1, 2], DirectedEdge[1, 2], DirectedEdge[1, 2]},
VertexCoordinates -> {{-1, 0}, {1, 0}}]
Run Code Online (Sandbox Code Playgroud)
产生错误消息
Graph::supp: Mixed graphs and multigraphs are not supported. >>
Run Code Online (Sandbox Code Playgroud)
如何使用Mathematica 8的Graph[]对象构建(和使用)类似的图形?
编辑: Mathematica 9中仍存在此问题
有没有人想出一种方法来修改Mathematica 8中的Graph对象?特别是,如何获得右键单击图表时获得的相同功能.
一些新的图形函数冲突Combinatorica,有没有办法强迫Mathematica使用函数的内置版本?换句话说,有没有办法CompleteGraph在我Needs["Combinatorica"]输入Combinatorica版本之后获得内置的访问权限CompleteGraph?
为了澄清1,Graph上的Context Menu允许您更改GraphStyle和GraphLayout,我希望能够以编程方式更改它们.这是我发现改变Graph对象GraphStyle的一种方法
g = GridGraph[{4, 4}];
BooleanGraph[Or, g, g, GraphStyle -> "DiagramBlack"]
Run Code Online (Sandbox Code Playgroud)
但是,这会忘记原始图形的选项 VertexCoordinates
在网格图上尝试Brett的食谱
g = GridGraph[{3, 2}, ImageSize -> Tiny]
coords = PropertyValue[{g, #}, VertexCoordinates] & /@ VertexList[g];
Graph[EdgeList[g], GraphStyle -> "BasicGold",
VertexCoordinates -> coords, ImageSize -> Tiny]
Run Code Online (Sandbox Code Playgroud)
http://yaroslavvb.com/upload/save/mathematica-change-style.png
Mathematica如何在图形操作上处理图形坐标似乎存在一个错误.下面第一行置换坐标,第二行给出内部警告,可能与坐标有关.对每个顶点使用非整数顶点和显式坐标没有帮助.一种解决方案是全局存储坐标,并具有在修改后fixCoordinates重新分配正确坐标的功能Graph
VertexDelete[GridGraph[{3, 3}], 1]
NeighborhoodGraph[VertexDelete[GridGraph[{3, 3}], 1], 2]
Run Code Online (Sandbox Code Playgroud)