Mathematica GraphPlot与边缘函数
当我在等待完成时,我想调整我正在处理的Mathematica图的一部分。问题是节点位于边的顶部,我想知道是否有方法可以扭转这种情况。在图像中,您可以看到箭头未正确显示 我正在用自定义的Mathematica GraphPlot与边缘函数,graph,wolfram-mathematica,Graph,Wolfram Mathematica,当我在等待完成时,我想调整我正在处理的Mathematica图的一部分。问题是节点位于边的顶部,我想知道是否有方法可以扭转这种情况。在图像中,您可以看到箭头未正确显示 我正在用自定义的VertexRenderingFunction和EdgeRenderingFunction参数做一个GraphPlot[]。它看起来像这样: 如您所见,如果箭头位于节点顶部,这将是他们所说的酷。有没有一种简单的方法来处理它?我不知道是否有一种方法可以直接使用GraphPlot选项来处理它,但是您可以直接操作Gra
VertexRenderingFunction
和EdgeRenderingFunction
参数做一个GraphPlot[]
。它看起来像这样:
如您所见,如果箭头位于节点顶部,这将是他们所说的酷。有没有一种简单的方法来处理它?我不知道是否有一种方法可以直接使用GraphPlot选项来处理它,但是您可以直接操作GraphPlot生成的图形对象。例如,这里有一个图表,其特征与您的相似
bg = GraphPlot[Table[i -> Mod[3 i + 1, 9],
{i, 0, 8}], DirectedEdges -> True,
VertexRenderingFunction -> (
{{White, Disk[#, 0.15]}, Circle[#, 0.15]} &),
EdgeRenderingFunction -> (Arrow[#1] &)]
您可以按如下方式检查图形原语和指令的结构:
bg // InputForm
可以看到箭头放置在顶点之前。只需按如下方式反转即可
MapAt[Reverse, bg, {1, 1}]
当然,图形对象可能具有不同的结构
马克·麦克卢尔马克的回答完全符合你的要求——你可以编写自己的函数来自动实现相反的结果 一个不太直接的解决方案可能是将箭头从末端向后拉一点:
GraphPlot[Table[i -> Mod[3 i + 1, 9], {i, 0, 8}],
VertexRenderingFunction -> ({{White, Disk[#, 0.15]},
Circle[#, 0.15]} &), DirectedEdges -> True,
EdgeRenderingFunction -> ({Arrowheads[{{.05, .8}}], Red,
Arrow[#]} &)]
这也会减少节点的拥塞。看起来不错,你能分享你为此编写的代码吗?看起来不错,我会试试,然后再报告!