2013-01-24 253 views
2

我正在通過Python中的igraph例子,並繼續遇到這個問題。igraph去邊界框的邊緣

Kautz, zealously cropped

最外面的頂點部分外邊界框的。 example幾乎沒有這個問題。如果這是一個簡單的解決方法,請讓我知道。)如果這是一個簡單的解決方案,請讓我知道。)在這個例子中,它只是在每一邊放一個箭頭。

我的代碼從示例頁面複製如下。

g = Graph.Kautz(m=3, n=2) 
adj = g.get_adjacency() 
fig.add(g, layout="fr", vertex_label=None) 
fig.add(adj, bbox=(360, 0, 480, 120), grid_width=0, opacity=0.7) 
fig.show() 

我的安裝細節在這裏。

No configuration file, using defaults 
igraph 0.6 running inside Python 2.7.3 (default, Aug 1 2012, 05:16:07) 
[GCC 4.6.3] on linux2 

我會很感激任何幫助!

回答

6

彎曲的邊緣比在文檔中製作圖形的時間晚引入到igraph的圖形抽屜中,所以這就是爲什麼您沒有看到文檔圖形中的彎曲邊緣的原因。無論如何,弧形邊緣可以很容易地被禁用:

graph.es["curved"] = False 

plot(graph, edge_curved=False) 

至於不適合在邊框邊緣:在plot()功能(這是快一拍功能繪圖)有一個margin關鍵字參數,它在圖形圖上放置一個白色邊緣;這基本上是通過將圖的邊界框縮小給定數量的像素來完成的,以確保邊緣保持在內部(大部分時間)。當你通過直接與plot類工作構建自己的情節,你必須將自己添加保證金:

bbox = BoundingBox(600, 600) 
figure = Plot(bbox=bbox) 
bbox = bbox.contract(20) 
figure.add(graph, bbox=bbox, layout=layout) 
figure.show() 

的另一個區別內置plot功能和Plot類是在plot功能將白背景默認,而Plot使用透明背景。您可以使用Plot構造函數的background關鍵字參數來覆蓋該值。

+0

非常感謝!這比我收集到的信息要多得多,(這純粹是運氣。) –

+1

Hey @Tamás,有沒有可以設置的所有頂點和邊屬性的編譯列表?我一直在尋找這個文件,但無法找到它的任何地方。謝謝! –

+0

'help(Graph .__ plot __)'應該有它們的完整列表。它在「Graph .__ plot__」中的原因是「plot()」只是一個通用的繪圖函數,它將繪圖的任何對象的'__plot__'方法委託給繪圖。 –

3

我發現了a解決方案,經過漫長的一天的文檔搜索。什麼我現在用的就是

graph.layout().fit_into(bbox=(<size>, <size>)) 

和,而不是使用igraph.Plot(),和plot.add(圖),

igraph.plot(graph, bbox=(<size>, <size>)) 

此外,我解決我的問題與彎曲的邊緣。

graph.es["curved"] = 0 

謝謝大家誰看着這個,我希望我的經驗幫助!