我想创建一个图(图论),其中某些边的颜色与其他边的颜色不同,这将用于突出显示图中从一个顶点到另一个顶点的路径。
以下是一些具有不同颜色边缘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}, Red]]
但这是行不通的。它将需要比这更聪明的东西。
最佳答案
这是一个示例,说明了如何通过图形自动突出显示特定路径。
这是一个愚蠢的图,由一系列边缘规则指定:
edges = Table[i -> Mod[1 + i^2, 10], {i, 0, 9}];
GraphPlot[edges, VertexLabeling -> True]
这是我们要突出显示的图形的路径。
path = {0, 1, 2, 5, 6, 7, 0};
让我们将路径划分为边缘,考虑到我们要突出显示与边缘无关的边缘这一事实。
edgesToHighlight = Partition[path, 2, 1];
edgesToHighlight = Join[edgesToHighlight,
Reverse /@ edgesToHighlight];
我们编写一个
EdgeRenderingFunction
,以两种样式之一呈现一条边,这取决于它是否在列表中。erf[pts_, edge_, ___] := If[MemberQ[edgesToHighlight, edge],
{Thick, Black, Arrow[pts, 0.1]}, {Darker[Red], Line[pts]}];
最后,我们显示结果。
GraphPlot[edges, EdgeRenderingFunction -> erf,
VertexLabeling -> True]
关于colors - 在Mathematica中创建具有不同颜色边缘的图形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3897479/