前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R优雅的绘制交互式桑基图

R优雅的绘制交互式桑基图

作者头像
R语言数据分析指南
发布2023-08-18 13:22:51
2620
发布2023-08-18 13:22:51
举报

欢迎关注R语言数据分析指南

❝最近VIP交流群中有朋友询问一张桑基图的画法,目前在R中绘制桑基图的包主要使用「ggsankey」来实现,但是此图由于是交互式因此可见是由「networkD3」包绘制而成,下面就来通过一个小案例介绍如何使用「networkD3」包来绘制一个交互式的桑基图。 ❞

加载R包

代码语言:javascript
复制
library(tidyverse)
install.packages("networkD3")
library(networkD3)

导入数据

代码语言:javascript
复制
refresults <- read.csv("result-data.csv")

数据清洗

代码语言:javascript
复制
# 按地区分组进行计算
results <- refresults %>%
  group_by(Region) %>%
  summarise(Remain = sum(Remain), Leave = sum(Leave)) %>%
  pivot_longer(-Region, names_to = "result", values_to = "vote")

构建节点数据

代码语言:javascript
复制
regions <- unique(results$Region)
nodes <- data.frame(node = 0:13, name = c(regions, "Leave", "Remain"))
合并结果和节点数据
代码语言:javascript
复制
results <- results %>%
  inner_join(nodes, by = c("Region" = "name")) %>%
  inner_join(nodes, by = c("result" = "name")) %>%
  rename(source = node.x, target = node.y, value = vote)

创建链接数据

代码语言:javascript
复制
links <- results[, c("source", "target", "value")]

绘制交互式桑基图

代码语言:javascript
复制
sankeyNetwork(Links = links, Nodes = nodes, Source = "source", 
              Target = "target", Value = "value", NodeID = "name",
              units = "votes")

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-06-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 R语言数据分析指南 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 欢迎关注R语言数据分析指南
  • 加载R包
  • 导入数据
  • 数据清洗
  • 构建节点数据
    • 合并结果和节点数据
    • 创建链接数据
    • 绘制交互式桑基图
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档