1

我有一个相当大的数据集,有两列fromto. 我正在尝试制作一个简单的网络图来可视化这两列中各种元素之间的关系,所以我在下面尝试了这个简单的示例。

Source <- c("A", "A", "A", "A", "B", "B", "C", "C", "D")
Target <- c("B", "C", "D", "J", "E", "F", "G", "H", "I")
NetworkData <- data.frame(Source, Target)

library(networkD3)
simpleNetwork(NetworkData,linkColour="yellow")

上面的示例和我的数据集之间的唯一区别是我的数据集中有1500/观察值。然而,该功能正在产生各种关联的巨大向日葵类型的可视化,这不是很令人愉快。simpleNetwork

[网络图输出][2]

我的问题是 1) 有没有更好的方法来可视化这些数据 2) 我怎样才能至少将目标节点的颜色与源节点不同?

非常感谢任何建议或建议。提前致谢。

4

1 回答 1

1

一般来说,对于问题的第一部分,不同的可视化可能是有意义的,具体取决于您要说明的内容。尝试获取网络的一些基本描述:边数、密度、平均。路径距离,并且您已经知道您正在查看什么样的关系数据。正如 lukeA 上面所指出的,图形可视化中的洞察力非常依赖于手头的网络数据的结构!

可视化不一定是毫无意义的,但我会承认使用它们而不是证明教学点而不是实际从中得出任何分析,您应该首先考虑您想要在 grpah 中可视化的内容。

当您决定什么会提供所需的洞察力时,为节点着色确实是一个关键的可视化工具:至于问题的第二部分networkD3您应该使用NodeGroup参数来着色节点。在 igraph 中,您将向量分配给 V(graph)$color,并在 sna 包中vertex.col使用 进行绘图时分配给参数gplot()

这是您在 igraph 中按距 A 的距离着色的示例图:

Source <- c("A", "A", "A", "A", "B", "B", "C", "C", "D")
Target <- c("B", "C", "D", "J", "E", "F", "G", "H", "I")
NetworkData <- data.frame(Source, Target)

# Visualize using igraph
library(igraph)
g <- graph_from_edgelist(as.matrix(NetworkData), directed = TRUE)

# Colour by distance from first node:
heatmap <- colorRampPalette(c("red", "yellow"))(100)
distance.from.first.node <- distances(g, V(g)[1])
V(g)$color <- heatmap[1+round(distance.from.first.node / (max(distance.from.first.node)/(length(heatmap)-1)))]

# Plot
plot.igraph(g)

我想不出绘制您提供的数据的任何要点,但如果您需要,这里是:

# Get the data you downloaded vvv(MAKE YOUR OWN PATH HERE)vvv
data <- read.csv(file="Downloads/Network.txt", sep="|")
# Remove your missing data
data <- data[data[,1]!="",]
data <- data[data[,2]!="",]
g2 <- graph_from_edgelist(as.matrix(data), directed = TRUE)

# Re-colour and plot:
distance.from.first.node <- distances(g2, V(g2)[1])
V(g2)$color <- heatmap[1+round(distance.from.first.node / (max(distance.from.first.node)/(length(heatmap)-1)))]

# Plot with smaller vertexes and no labels
plot.igraph(g2, vertex.size=4, vertex.label=NA)
于 2016-11-25T16:44:35.400 回答