dbj*_*ohn 5 wolfram-mathematica graph-theory colors edges
我想创建一个图形(图形理论),其中某些边缘与其他边缘具有不同的颜色,这将用于突出图形中从一个顶点到另一个顶点的路径.
以下是一些具有不同颜色边缘的示例http://demonstrations.wolfram.com/AGraphTheoryInterpretationOfTheSumOfTheFirstNIntegers/和http://demonstrations.wolfram.com/Ramsey336/.我查看了这些的源代码,但这些解决方案似乎很复杂.我需要一个简单的例子来工作.我估计我需要使用EdgeRenderingFunction作为其中一个选项GraphPlot.
此外,在"更多信息"部分的EdgeRenderingFunction文档中,它说:

这看起来很有用,但遗憾的是没有编码示例可供尝试.
从字面上看,我尝试了类似的东西
GraphPlot [{1 - > 2,2 - > 3,3 - > 4,4 - > 1,2 - > 4,4 - > 5,4 - > 6},VertexLabeling - > True,
EdgeRenderingFunction - > g [{ 1,2},{1,2},红色]]
但那不行.它需要更聪明的东西.
这是一个示例,说明如何通过图表自动突出显示特定路径.
这是一个愚蠢的图表,由边缘规则列表指定:
edges = Table[i -> Mod[1 + i^2, 10], {i, 0, 9}];
GraphPlot[edges, VertexLabeling -> True]
Run Code Online (Sandbox Code Playgroud)

这是我们想要强调的图表的路径.
path = {0, 1, 2, 5, 6, 7, 0};
Run Code Online (Sandbox Code Playgroud)
让我们将路径划分为边缘,考虑到我们想要突出边缘而不依赖于其方向的事实.
edgesToHighlight = Partition[path, 2, 1];
edgesToHighlight = Join[edgesToHighlight,
Reverse /@ edgesToHighlight];
Run Code Online (Sandbox Code Playgroud)
我们编写了EdgeRenderingFunction一个以两种样式之一呈现边缘的边缘,这取决于它是否在我们的列表中.
erf[pts_, edge_, ___] := If[MemberQ[edgesToHighlight, edge],
{Thick, Black, Arrow[pts, 0.1]}, {Darker[Red], Line[pts]}];
Run Code Online (Sandbox Code Playgroud)
最后,我们显示结果.
GraphPlot[edges, EdgeRenderingFunction -> erf,
VertexLabeling -> True]
Run Code Online (Sandbox Code Playgroud)
