当我等待sorting完成时,我想调整我正在研究的Mathematica图的一部分。问题是节点位于边缘之上,我想知道是否有办法扭转它。在图像中,您可以看到箭头显示不正确......
我正在使用自定义GraphPlot[]
和VertexRenderingFunction
参数进行EdgeRenderingFunction
。它看起来像这样:
正如您所看到的,如果箭头位于节点顶部,那就像他们说 cool 一样。是否有一种简单的方法来 hax 呢?
答案 0 :(得分:4)
我不知道是否有办法直接使用GraphPlot选项,但您可以直接操作GraphPlot生成的Graphics对象。例如,这是一个与您的功能类似的图表。
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] &)]
您可以按如下方式检查Graphics原语和指令的结构:
bg // InputForm
您可以看到箭头在顶点之前放下。简单地反过来如下。
MapAt[Reverse, bg, {1, 1}]
当然,您的Graphics对象可能会有不同的结构。
Mark McClure
答案 1 :(得分:3)
Mark的回答完全符合您的要求 - 您可以编写自己的功能来自动化Reverse。
一个不那么直接的解决办法可能就是将箭头从末端拉回一点:
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[#]} &)]
这也可以减少节点的拥塞。