如何解决从 2mode 边缘列表 (.csv) 到第三个属性的彩色边缘
我正在使用包含公司和项目的 .csv 数据库处理网络图。我可以制作网络图,显示所有这些公司是如何通过他们的项目联系起来的(一家公司从事多个项目)。我的 .csv 数据库如下所示:
项目名称 | 公司名称 | 年 |
---|---|---|
项目 1 | A 公司 | 2020 |
项目 1 | B公司 | 2020 |
项目 1 | 公司C | 2020 |
项目 2 | A 公司 | 2021 |
项目 2 | 公司C | 2021 |
项目 2 | 公司 D | 2021 |
我正在使用矩阵和矩阵乘法的转换来生成邻接图,但是使用这种转换,年份列丢失了(我在导入时将其切断)。如何制作连接公司合作的网络图,并用彩色边显示他们合作的项目年份(2 个 4 年块)?
我目前将此用于包含所有年份的“正常”网络图:
PrintSomething()
非常感谢您和我一起思考,我以前从未使用过 R,制作第一个图表花了我很多时间!
解决方法
默认情况下,邻接矩阵只允许您为每个单元格存储一个值。如果您想从整洁/长数据框中获得多个观察结果(即多个年边)图形是一个更简单的选择。
在这个例子中,我还使用了 {ggraph()}
,它是一个方便的包,通过图形方法的语法来绘制网络图。
library(tidyverse)
library(igraph)
library(ggraph)
df <- data.frame(project = c("p1","p2","p3","p4"),company = c("A","B","C","A","D"),year = c(2020,2020,2021,2021))
igraph::graph_from_data_frame(df,directed = FALSE) %>%
ggraph() +
geom_edge_arc(aes(colour = as.factor(year))) +
geom_node_label(aes(label = name)) +
theme_graph()
,
下面代码给出的输出怎么样?
graph_from_data_frame(twomode_edgelist) %>%
set_edge_attr("color",value = as.factor(twomode_edgelist$Year)) %>%
set_edge_attr("label",value = twomode_edgelist$Year) %>%
plot()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。