簡體   English   中英

如何根據邊緣屬性為 R 中的 igraph plot 中的邊緣分配顏色范圍?

[英]How can I assign a color range to edges in igraph plot in R based on edge attributes?

我有一個大型社交網絡 plot,我正在嘗試使用個人之間的聯系強度進行顏色編碼。 mock_table中,個體列在ab列中,每個連接的強度在c列中給出。

我成功地將這些強度值正確分配給edge.width function,但是,當我嘗試將其應用於edge.color時,這些值沒有正確對齊。 plot 中的 colors 確實代表sn_color ,但它們沒有分配給正確的邊緣。 最厚的邊緣(最強的連接,最大c值)也應該有最深的顏色,反之亦然。

以下是我當前代碼的簡化版本:

mock_table <- as.data.frame(cbind(a=c("PO", "BL", "MA", "AL", "BL"), b=c("MA", "BO", "ED", "MA", "MA"), c=as.numeric(c(8,41,10,23,50))))
mock_table$c <- as.numeric(as.character(mock_table$c))

sn_graph <- graph_from_data_frame(d=mock_table, vertices = c("PO", "BL", "MA", "AL", "BO", "ED"), directed = FALSE)
sn_proximity <- (mock_table$"c")

sn_colorrange <- colorRampPalette(c("yellow", "orange", "red", "darkred"))
sn_color <- sn_colorrange(length(sn_proximity))

plot(sn_graph,
     edge.width=(1/3)*(sn_proximity),
     edge.color=sn_color
     )

誰能幫我弄清楚如何正確分配這個調色板? 非常感謝!

編輯以包含可重現的示例代碼。

您需要准確告訴 plot 使用哪種顏色。 如果您想為每個漸變使用不同的顏色,那么您可以執行類似的操作

plot(sn_graph,
     edge.width=(1/3)*(sn_proximity),
     edge.color=sn_color[order(sn_proximity)]
)

否則可能更常見的是設置固定數量的 bin 然后使用cut()使顏色更有意義

n_bins <- 5
sn_color <- sn_colorrange(n_bins)
plot(sn_graph,
     edge.width=(1/3)*(sn_proximity),
     edge.color=sn_color[cut(sn_proximity, breaks=n_bins )]
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM