绘图技巧

您所在的位置:网站首页 桑基图怎么描述 绘图技巧

绘图技巧

2023-09-02 09:31| 来源: 网络整理| 查看: 265

今天小编继续给大家送上优秀可视化教程推文,同时,我们也提供练习数据哦~本期的重点是是关于桑葚图(Sankey Diagram),中文名字叫法不同,我们还是以英文名称为主哈,本期内容主要包括以下几点:

桑葚图(Sankeydiagram)简介R-ggalluvial绘制实例其他工具绘制桑葚图(Sankey Diagram)简介

「桑基图(Sankey Diagram)」,即桑基能量分流图,也叫桑基能量平衡图。它是一种特定类型的流程图,图中延伸的分支的宽度对应数据流量的大小,通常应用于能源、材料成分、金融、零售等数据的可视化分析(来源于网络)。接下来小编就带你如何使用R轻松绘制桑基图。

R-ggalluvial绘制实例

得益于ggplot2 强大的绘制功能,在R绘图生态系统中也存在一个包专门用于绘制桑基图-ggalluvial,也是ggplot2的拓展包,大家使用起来也十分方便。针对不同图表绘制,第一步就是转化数据,而 ggalluvial包也为我们贴心的准备数据转换函数 is_alluvia_form()、is_alluvia_form()、to_lodes_form()和to_alluvia_form(),这里小编用的比较多的就是is_alluvia_form()和to_lodes_form()两个函数。接下来我们具体使用具体数据操作。(更多详细内容,可以查看ggalluvial官网:http://corybrunson.github.io/ggalluvial/articles/ggalluvial.html)

”宽数据“作图数据检测

ggalluvial可为两种数据绘制桑基图,其中一种就是宽数据,这里使用官网提供的例子来看一下宽数据绘图过程:

library(ggalluvial) library(tidyverse) library(ggtext) library(hrbrthemes) library(wesanderson) library(LaCroixColoR) #导入数据 head(as.data.frame(UCBAdmissions), n = 12) ## Admit Gender Dept Freq ## 1 Admitted Male A 512 ## 2 Rejected Male A 313 ## 3 Admitted Female A 89 ## 4 Rejected Female A 19 ## 5 Admitted Male B 353 ## 6 Rejected Male B 207 ## 7 Admitted Female B 17 ## 8 Rejected Female B 8 ## 9 Admitted Male C 120 ## 10 Rejected Male C 205 ## 11 Admitted Female C 202 ## 12 Rejected Female C 391

可以看到,这就是宽数据了,通常在使用ggplot2绘图,我们都需要将其转换成长数据绘图,但这里,我们则可以使用如下代码检测即可:

is_alluvia_form(as.data.frame(UCBAdmissions), axes = 1:3, silent = TRUE) ## [1] TRUE 可视化绘制ggplot(as.data.frame(UCBAdmissions), aes(y = Freq, axis1 = Gender, axis2 = Dept)) + geom_alluvium(aes(fill = Admit), width = 1/12) + geom_stratum(width = 1/12, fill = "black", color = "grey") + geom_label(stat = "stratum", aes(label = after_stat(stratum))) + scale_x_discrete(limits = c("Gender", "Dept"), expand = c(.05, .05)) + scale_fill_brewer(type = "qual", palette = "Set1") + hrbrthemes::theme_ipsum(base_family = "Roboto Condensed") + ggtitle("UC Berkeley admissions and rejections, by sex and department")

geom_alluvium example

”长数据“作图

宽数据绘制虽然比较容易理解,但对其定制化修改则有些麻烦,这时候我们可以使用 长数据 进行绘制。

data(majors) head(majors,8)

long data

接下来的绘图则与通常的ggplot2绘制相似,如下:

data(majors) majors$curriculum %) 功能。

其他工具绘制

在选择使用ggalluvial包进行绘制之前,我也查阅了其他绘图工具,如R-easyalluvial和R-networkD3等包,下面我给出其官网的部分可视化结果供大家参考。

R-easyalluvialsuppressPackageStartupMessages( require(parcats) ) p = alluvial_wide(mtcars2, max_variables = 5) parcats(p, marginal_histograms = TRUE, data_input = mtcars2)

R-easyalluvial example 可交互

R-networkD3URL


【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3