Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mathematica GraphPlot与边缘函数_Graph_Wolfram Mathematica - Fatal编程技术网

Mathematica GraphPlot与边缘函数

Mathematica GraphPlot与边缘函数,graph,wolfram-mathematica,Graph,Wolfram Mathematica,当我在等待完成时,我想调整我正在处理的Mathematica图的一部分。问题是节点位于边的顶部,我想知道是否有方法可以扭转这种情况。在图像中,您可以看到箭头未正确显示 我正在用自定义的VertexRenderingFunction和EdgeRenderingFunction参数做一个GraphPlot[]。它看起来像这样: 如您所见,如果箭头位于节点顶部,这将是他们所说的酷。有没有一种简单的方法来处理它?我不知道是否有一种方法可以直接使用GraphPlot选项来处理它,但是您可以直接操作Gra

当我在等待完成时,我想调整我正在处理的Mathematica图的一部分。问题是节点位于边的顶部,我想知道是否有方法可以扭转这种情况。在图像中,您可以看到箭头未正确显示

我正在用自定义的
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[#]} &)]

这也会减少节点的拥塞。

看起来不错,你能分享你为此编写的代码吗?看起来不错,我会试试,然后再报告!