r语言d3返回html地址,使用R中的NetworkD3包创建Sankey图

这篇博客展示了如何使用R语言分析酒店在不同年份间的转移情况。首先,通过创建数据框并模拟酒店名称,然后计算年份间的酒店转移次数。利用dplyr库进行数据聚合,生成了表示酒店间转移的链接数据框。接着,通过networkD3库创建了Sankey diagram网络图,以视觉化酒店/年份组合之间的转换。虽然方法可能不是最优雅的,但这是一个有效的起点,特别是对于展示酒店间的年度过渡流量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

您需要两个数据框:一个列出所有节点(包含名称),另一个列出链接.后者包含三列,源节点,目标节点和一些值,表示链接的强度或宽度.在链接数据框中,您通过节点数据帧中的(从零开始)位置来引用节点.

假设您的数据如下:

df

Year2=sample(paste0("Hotel", 1:4), 1000, replace = TRUE),

Year3=sample(paste0("Hotel", 1:4), 1000, replace = TRUE),

Year4=sample(paste0("Hotel", 1:4), 1000, replace = TRUE),

stringsAsFactors = FALSE)

对于图表,您不仅需要区分酒店,还要区分酒店/年份组合,因为每个酒店都应该是一个节点:

df$Year1

df$Year2

df$Year3

df$Year4

链接是酒店之间从一年到下一年的“过渡”:

library(dplyr)

trans1_2 % group_by(Year1, Year2) %>% summarise(sum=n())

trans2_3 % group_by(Year2, Year3) %>% summarise(sum=n())

trans3_4 % group_by(Year3, Year4) %>% summarise(sum=n())

colnames(trans1_2)[1:2]

links

as.data.frame(trans2_3),

as.data.frame(trans3_4))

最后,数据帧需要相互引用:

nodes

links$source

links$target

然后可以绘制图表:

library(networkD3)

sankeyNetwork(Links = links, Nodes = nodes, Source = "source",

Target = "target", Value = "sum", NodeID = "name",

fontSize = 12, nodeWidth = 30)

可能有更优雅的解决方案,但这可能是您问题的起点.如果您不喜欢节点名称中的“Year …”,请在设置数据帧后删除它们.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值