R中的过渡图是如何工作的?

数据挖掘 r 可视化
2021-10-07 15:17:15

我试图想象从一个州(在原籍国工作)和另一个(在目的地国工作)的过渡。我认为过渡情节很完美,但我不明白它是如何工作的?

我的数据框称为(Cimad),我的变量是 EMPLOIPRE(原点)和 EMPLOIFR(目的地)。两者都是因素,第一个计数 20 个级别,第二个计数 15 个级别(这是一个问题,我必须让它们都匹配吗?)我有 400 个观察值。

我希望你能帮助我,因为我完全迷路了!提前谢谢你,卡罗琳。

3个回答

在您的情况下,桑基图的问题是您将复制所有节点(左侧和右侧),这很混乱。

网络更好,但节点结构不佳。

我建议尝试使用和弦图来获取此类数据。

和弦示例

和弦图的最佳示例之一是使用 d3.js 构建,并基于迁移流数据集。这是d3.js和弦的 R 包装器。或者您可以尝试复制本手册

Fwiw,这是一个例子

# create example data
set.seed(1)
Cimad <- data.frame(
  EMPLOIPRE = as.factor(sample(letters[1:15], 400, T)),
  EMPLOIFR = as.factor(sample(letters[1:20], 400, T))
)

# create adjacency/transition matrix
labs <- unique(unlist(Cimad))
m <- table(factor(Cimad[,1], lev=labs), factor(Cimad[,2], lev=labs))
m <- m / rowSums(m)

# plot it
library(igraph)
g <- graph_from_adjacency_matrix(m, weighted = "prob")
E(g)$prob <- ifelse(is.nan(E(g)$prob), NA, E(g)$prob)
plot(g, edge.label = round(E(g)$prob, 2), edge.arrow.size = .25, edge.label.cex = .5)

在此处输入图像描述

或者,如果您想将其导出为 PDF(例如用于缩放):

pdf(tf <- tempfile(fileext = ".pdf"), width = 15, height = 15)
plot(g, edge.label = round(E(g)$prob, 2), edge.arrow.size = .25, edge.label.cex = .5)
dev.off()
shell.exec(tf)

如果你正在寻找这样的东西——

在此处输入图像描述

那么这些资源可能对您非常有用。看一看-

除此之外,还有一篇关于堆栈溢出的有趣帖子。我希望这将有所帮助。干杯!