前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ggsankey绘制桑基图(2)

ggsankey绘制桑基图(2)

作者头像
R语言数据分析指南
发布2022-12-20 19:48:30
4910
发布2022-12-20 19:48:30
举报

❝本节再来介绍使用「ggsankey」绘制桑基图,下面小编就通过一个具体案例来介绍如何绘制此图;

代码语言:javascript
复制
library(tidyverse)
library(ggsankey)
library(wesanderson)

导入数据

代码语言:javascript
复制
records <- read_csv('records.txt')
drivers <- read_csv('drivers.txt')

定义调色板

代码语言:javascript
复制
pal <- wes_palette("Zissou1")

设置主题

代码语言:javascript
复制
theme_set(
  theme_minimal() +
    theme(
      legend.title = element_blank(),
      legend.key.size = unit(1, "line"),
      axis.title = element_blank(),
      plot.background = element_rect(fill = "grey97", color = NA),
      plot.margin = margin(10, 10, 10, 10),
      plot.title = element_text(face = "bold"),
      plot.subtitle = element_text(color = "grey30")
    )
)

数据清洗

代码语言:javascript
复制
drivers_top <- drivers %>%
  filter(position < 6) %>% 
  mutate(
    player_rec = paste0(player, " - ", total, " records"),
    player_rec = fct_reorder(player_rec, -total)
  )

转换数据格式

代码语言:javascript
复制
df <- records %>% 
  filter(player %in% drivers_top$player) %>% 
  make_long(player, track) %>%  #使用make_long函数转化为ggsankey所需要的格式,
  left_join(drivers_top %>% 
              distinct(player,position),
            by = c("node" = "player")) %>% 
  mutate(color = if_else(!is.na(next_node), pal[position], "white"))

数据可视化

代码语言:javascript
复制
ggplot(df,aes(x = x, next_x = next_x, node = node,
                           next_node = next_node, fill = color,label = node)) +
  geom_sankey() +
  # 设置文本
  geom_sankey_text(aes(hjust = if_else(x == "track", 1, 0)),size = 3) +
  scale_fill_identity() +
  coord_cartesian(expand = FALSE, clip = "off") + 
  theme(
    legend.position = "none",
    axis.text = element_blank(),
    panel.grid = element_blank(),
    plot.title = element_text(hjust = 0.5, size = 23, face = "bold"),
    plot.caption = element_text(hjust = 0.5)
  )
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-11-11,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ❝本节再来介绍使用「ggsankey」绘制桑基图,下面小编就通过一个具体案例来介绍如何绘制此图;
  • 导入数据
  • 定义调色板
  • 设置主题
  • 数据清洗
  • 转换数据格式
  • 数据可视化
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档