2013-07-12 75 views
1

我正在使用iGraph繪製圖形。我剛纔兩列在我的矩陣定A和B.我需要我的顏色與節點只有2種顏色 - 這表明,屬於節點和那些屬於B.如:按列排列R色頂點

# k is a df with 2 columns – A and B 
k_mx <- as.matrix(k) 
k_mx_g <- graph.edgelist(k_mx, directed = FALSE) 
V(k_mx_g)$color = ?? (want blue for A and red for B) 

請讓我知道如何做到這一點。

感謝, PD

回答

3

假設這個數據幀:

k <-  structure(list(A = 1:4, B = 5:8), 
       .Names = c("A", "B"), row.names = c(NA, -4L), 
        class = "data.frame") 

...你可以使用repeach說法。否則,由於參數回收,它們將依次標記爲c(「藍色」,「紅色」,「藍色」,「紅色」,「藍色」,「紅色」,「藍色」,「紅色」):

V(k_mx_g)$color <- rep(c("blue", "red"), each=4) 

的Gabor的評論讓我提供這個選項,這似乎更普遍的:

V(k_mx_g)[k$A]$color <- "blue" 
V(k_mx_g)[k$B]$color <- "red" 
+0

不幸的是,如果這個工程,那麼它只是偶然的工作,因爲你有1:8:4在第一列和5第二。 –

+0

這確實是作爲一個data.frame在它到矩陣的途中開始的。我們被認爲第一欄全部是「A」,需要分配給「藍色」,第二欄全部分配給「紅色」。該程序涉及多少機會? –

+0

嗯,「另一種選擇」是正確的,我認爲,但你必須小心在數據框中有數字,否則你會用一個因子來索引。此外,顯然,這隻適用於圖形是雙方的情況,即A列中的頂點不顯示在B列中,但我猜海報有這樣的圖表,否則這個問題沒有意義。 –