R igraph:按列内容为顶点着色
R igraph: Color Vertices by column content
我正在使用 igraph 从 SQL 服务器绘制图表。我提供 3 列作为输入 table:
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' 顶点是 'color' 列中指示的颜色。我不关心'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
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)
我正在使用 igraph 从 SQL 服务器绘制图表。我提供 3 列作为输入 table:
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' 顶点是 'color' 列中指示的颜色。我不关心'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
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)