2010-09-26 23 views
3

,而我等待sorting完成,我想調整數學圖形的一部分,我的工作。問題是節點位於邊緣之上,我想知道是否有辦法扭轉這種情況。在圖片中你可以看到箭頭顯示不正確...數學GraphPlot和EdgeRenderingFunction

我正在做GraphPlot[]與定製VertexRenderingFunctionEdgeRenderingFunction參數。它看起來是這樣的:

Where are the arrows? Can you see them? Did you take my arrows? http://img816.imageshack.us/img816/9703/graphbadarrows.png

正如你所看到的,這將是像他們說的如果箭頭是在節點上。有沒有簡單的方法來hax它在?

+4

看起來很整潔,你能分享你爲此寫的代碼嗎? – 2010-09-26 02:39:40

回答

3

馬克的回答不正是你問什麼 - 你可以寫你自己的功能,它可以自動反向。

一個不太直接的解決方案可能是隻畫箭頭頭從最終一點點回:

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[#]} &)] 

這也將減少在節點的擁堵。

+0

謝謝,這工作......過了一段時間。 :) – Gleno 2010-09-29 02:49:20

4

我不知道是否有一種方法可以直接與GraphPlot選項或無法做到這一點,但你可以操縱的Graphics對象由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}] 

當然,您的圖形對象可能會有不同的結構。

馬克·麥克盧爾

+0

看起來不錯,我會嘗試並報告回來! – Gleno 2010-09-27 12:03:41