簡體   English   中英

圖表:按列內容的顏色頂點

[英]R igraph: Color Vertices by column content

我正在使用igraph從SQL Server繪制圖形。 我提供3列表格作為輸入:

from   to     color
Node1  NodeA  red
Node1  NodeB  green
Node1  NodeC  blue
Node2  NodeD  red
Node2  NodeE  green

我的R腳本如下所示:

require(igraph)
g <- graph.data.frame(graphdf)
V(g)$label.cex <- 2
png(filename = "'+@outputFile+'", height = 3000, width = 3000, res = 100);
plot(g, vertex.label.family = "sans", vertex.size = 5)
dev.off()

圖的邊緣將顯示所需的顏色,但頂點本身不顯示-理想情況下,我希望“ to”頂點為“顏色”列中指示的顏色。 我不在乎'from'的顏色(它可以是默認的橙色)。

我試過添加此(和變體):

V(g)$color <- graphdf[V(g), 3]

在png線之前,但這會產生看上去是隨機頂點顏色的顏色。

這取決於您創建graphdf的方式。 列是字符串還是因子? 我將展示這兩種情況的解決方案。

graphdf包含字符串

library(igraph)

## Create data 
graphdf = read.table(text="from   to     color
Node1  NodeA  red
Node1  NodeB  green
Node1  NodeC  blue
Node2  NodeD  red
Node2  NodeE  green",
header=TRUE, stringsAsFactors=FALSE)
g <- graph.data.frame(graphdf)

我將所有節點設置為橙色,然后調整目標節點的顏色。

## Make default color orange
V(g)$color = "orange"
V(g)[graphdf$to]$color = graphdf$color

圖1

graphdf包含因素

比較麻煩的情況是,如果您允許所有字符串都成為因素。 唯一的區別是,使用它們時,必須將as.character應用於所有因素。

graphdf = read.table(text="from   to     color
Node1  NodeA  red
Node1  NodeB  green
Node1  NodeC  blue
Node2  NodeD  red
Node2  NodeE  green",
header=TRUE)
g <- graph.data.frame(graphdf)

V(g)$color = "orange"
V(g)[as.character(graphdf$to)]$color = as.character(graphdf$color)
plot(g)

暫無
暫無

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

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