【问题标题】:colouring graph connections in RR中的着色图连接
【发布时间】:2015-03-06 09:48:17
【问题描述】:

我在 R 中构建了一个图形,并成功地使用 if 语句为某些顶点着色,我使用 tkplot 函数来获得更好的可视化。
现在我有以下图表:

FROM    TO  
A   B
A   D
B   C
B   F
D   E
E   G
E   H
H   M
H   L
L   N

以及下面的顶点集

E  
L

我需要绘制图表,将 E 和 L 中的连接传入和传出以红色着色,而其他所有连接为黑色。
为了清楚起见,我需要以下红色连接线

FROM    TO
D   E
E   G
E   H
H   L
H   M

有解决办法吗?

【问题讨论】:

  • 请提供完整的reproducible code
  • 嗨卢克,代码嵌入在其他计算中我只是一个例子,数据是从数据库中提取的,我在不同的情况下重现了大约 25 个不同的图表,我将尝试构建代码这个具体的例子是为了帮助你帮助我。
  • 代码也应该是minimal - 一个小框架,您可以稍后将其应用到您的实际案例中。这包括必要的库调用、获取变量的 dput 等等。让所有人都更轻松 - 并为您提供答案。 :-)
  • 'B = 矩阵(c(“A”,“A”,“B”,“B”,“D”,“E”,“E”,“H”,“H” , "L", "B","D","C","F","E","G","H","M","L","N"), ncol=2) B
  • 我刚刚添加了一个乱七八糟的评论来重现数据:-)

标签: r graph colors tkplot


【解决方案1】:

使用edge.color 属性并不是唯一的方法。 您还可以为每条边设置 color 属性,例如:
(更多关于V(g)E(g)函数的信息可以在here找到)

library(igraph)

# initialize the graph
DF <- 
read.table(text=
"FROM TO  
A B
A D
B C
B F
D E
E G
E H
H M
H L
L N",header=T,stringsAsFactors=T)
g <- graph.data.frame(DF)

# set a color (black) attribute on all edges
E(g)$color <- 'black'
# set red color for the edges that have an incident vertex in the set 'E,L'
nodesSeq <- V(g)[name %in% c('E','L')]
E(g)[inc(nodesSeq)]$color <- 'red'

tkplot(g)

【讨论】:

  • P.S.抱歉,当我在 cmets 中注意到您的示例数据时,我已经编写了代码……无论如何,我认为您在将我的代码改编为您的代码时不会有任何问题;)
【解决方案2】:

只需用你想要的颜色创建一个颜色向量,对应B中的边缘:

library(igraph) 
B = matrix( c("A" ,"A", "B" ,"B","D","E", "E", "H", "H", "L", "B","D","C","F","E","G","H","M","L","N"), ncol=2) 
B<- data.frame(B) 
grf<- graph.data.frame (B, directed =TRUE, vertices=NULL) 
error<-array(c("E", "L")) 
V(grf)$color <- ifelse(V(grf)$name %in% error, "red", "yellow") 

col = rep("black", nrow(B)) 
col[B$X1 == "E" | B$X2 == "L"] <- "red" 
# or 
# col[B$X1 %in% c("E", "L") | B$X2 %in% c("E", "L")] <- "red" 
plot(grf, edge.color = col)
# or     
# tkplot(grf, edge.color = col)

【讨论】:

  • 这是一个很好的解决方案,我会比较他们的牢度,谢谢lukeA
猜你喜欢
  • 1970-01-01
  • 2021-11-28
  • 1970-01-01
  • 2017-07-04
  • 2021-09-17
  • 1970-01-01
  • 2023-03-27
相关资源
最近更新 更多