2013-10-19 111 views
3

我在matlab中有一個鄰接矩陣。我如何繪製圖表?由於我有> 500個節點,因此我不能使用隨機(或網格狀)座標的gplot。從matlab中的鄰接矩陣創建圖

+0

您是否擁有生物信息學工具箱? –

+0

你的意思是計算生物學?是! – Mikayel

回答

2

退房此功能:gplot

例子:

% Plot half of a "Bucky ball" carbon molecule, placing asterisks at each node: 
k = 1:30; 
[B,XY] = bucky; 
gplot(B(k,k),XY(k,:),'-*') 
axis square 

enter image description here

+0

謝謝你的迴應。但是,我如何選擇座標? – Mikayel

+0

'gplot(A,Coordinates)'根據n乘n的鄰接矩陣A繪製座標中定義的節點的圖形,其中n是節點的數量。座標是一個n乘2的矩陣,其中n是節點的數量,每個座標對代表一個節點。 –

7

因此,假如你有bioinformatics toolbox,該biograph功能是完美的,你想要做什麼。

這是我在過去所做的那樣:

假設fromto都包含關於兩個向量的到從系統中的節點。然後,您可以創建鄰接矩陣是這樣的:

Sys = sparse(from,to,1,s,s); 
Adj_mat = tril(Sys + Sys'); 

我假設你已經有你的鄰接矩陣adj_mat,在這種情況下,所有你需要做的是:

bg = biograph(Adj_mat,[],'ShowArrows','off','ShowWeights','off'); 
h = view(bg); 

我增加了一些論點只是爲了說明一些可能性。我想要箭頭,跳過那部分。

節點將根據「最低能量」標準默認放置,這意味着「分支交叉點」的數量被最小化。佈局可以更改,例如添加'LayoutType','Radial'

查看documentation瞭解更多信息。

這是我之前使用biograph創建的示例。使邊緣平直很簡單,或者爲分支分配不同的顏色和重量。另外,您可以爲節點創建不同的名稱,或者刪除名稱,只需要有一個「點」。

enter image description here

編輯

的回答爲文森特的問題的意見:

我以前set(edges,'LineWidth',1.5)來設定邊緣的權重。查看一些額外的文檔和示例here

%% Color affected lines: 
set(h.nodes(nn),'Color',[0.2 0.8 0.2]); 
fowEdges = getedgesbynodeid(h,get(h.Nodes(nn),'ID')); 
revEdges = getedgesbynodeid(h,get(h.Nodes(fliplr(nn)),'ID')); 
edges = [fowEdges;revEdges]; 
set(edges,'LineColor',[0.2 0.8 0.2]) 
set(edges,'LineWidth',1.5) 

%% Color faulted line: 
set(h.nodes(newFaultNodes),'Color',[1 0.4 0.4]); 
fowEdges = getedgesbynodeid(h,get(h.Nodes(newFaultNodes),'ID')); 
revEdges = getedgesbynodeid(h,get(h.Nodes(fliplr(newFaultNodes)),'ID')); 
edges = [fowEdges;revEdges]; 
set(edges,'LineColor',[1 0 0]) 
set(edges,'LineWidth',2) 
+0

我知道該線程已經很久了,但是您是如何管理「粗線」的 - 沒有看到文檔中的特定條目... – AnatraIlDuck

+0

@Vincent,檢查更新。我相信這是我用來創建上圖的代碼的一部分。 –

+0

謝謝羅伯特! – AnatraIlDuck