colors - 在Mathematica中创建具有不同颜色边缘的图形

标签 colors wolfram-mathematica graph-theory 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}, 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/

相关文章:

创建按钮时 JavaFX 场景失去颜色

list - 如何获取列表中的所有其他项目

algorithm - 将图划分为两个簇

algorithm - 除了 BFS 和 DFS,还有什么算法可以用来判断二分性?

javascript - 通过JS使用RGB输入框上色

browser - Chromium 和 Firefox 显示颜色不同,我不知道哪一个做得对

javascript - 更改键入值的文本颜色,而不更改已存在值的颜色。使用 css3 或 javascript 或 jquery

wolfram-mathematica - 如何在 Mathematica 中用傅立叶变换绘制黎曼 zeta 零谱?

wolfram-mathematica - 在 Mathematica 中使用单词表达数字

python - 如何在 Pandas 中进行分组