跟着高分SCI学画图:​R语言绘制嵌套圈图

文摘   2024-09-23 22:13   德国  

跟着高分SCI学画图:R语言绘制嵌套圈图

嵌套圈图(Nested Pie Chart)是一种数据可视化工具,也称为分层饼图或嵌套饼图,通常用于显示多层级、分类分布的数据。它是由多个同心圆构成的,每个圆表示一个数据层级。内圈代表数据的顶层分类,外圈则是这些顶层分类下的子分类。

嵌套圈图的特点

  1. 层级结构:通过多层次的圈,可以直观地展示数据的层级结构。每一层次的细分都依赖于上一层的分类。
  2. 面积比例:与普通饼图类似,嵌套圈图中的每个区域的大小(角度)与该类别的数据比例相对应。
  3. 分层展示:通过多个同心圆的方式,能够同时显示多个类别的数据分布,适合用于展示有明显层次结构的复杂数据。

嵌套圈图的应用场景

嵌套圈图通常用于展示诸如销售数据、市场份额、人口统计等,尤其适合那些有上下级分类的场景。
例如,内圈可以展示市场的整体份额,而外圈可以进一步细分显示不同产品类别的市场占比。

接下来我们正式进入绘图部分吧!

一、你好!嵌套圈图

嵌套圈图的组成部分

  1. 同心圆层级
  • 内圈(核心层级):内圈是嵌套圈图的核心部分,通常表示最高层级的数据类别。在这个圈内,每个扇形区域代表一个顶级分类项,其大小与该类别的数值占比成正比。
  • 外圈(子层级):外圈是对内圈分类的细分,表示第二层级或子分类的数据。每个外圈的扇形区域依附于内圈的顶级分类,展示更详细的数据。
  • 多层次圈(额外子分类):嵌套圈图可以包含多个层次的同心圆,每增加一圈就表示一个更深层次的分类结构。每层同心圆都是基于上一层进行细分。
  1. 扇形区域
  • 每个圈的扇形区域代表一个数据类别,区域的角度大小表示该类别的占比。
  • 内圈的扇形展示顶层分类,而外圈的扇形进一步展示这些分类的子分类。
  • 扇形的面积并不是单独计算,而是由圈内相对应的分类区域进行分割,因此总面积保持一致,只是角度的比例变化。

二、开始画图啦!

数据展示

这次我们用到的数据是模拟数据。

载入R包:

devtools::install_github("jeromefroe/circlepackeR"# 安装
library(circlepackeR) 

构建模拟数据

data <- data.frame(
  root=rep("root", 15),
  group=c(rep("group A",5), rep("group B",5), rep("group C",5)), 
  subgroup= rep(letters[1:5], each=3),
  subsubgroup=rep(letters[1:3], 5),
  value=sample(seq(1:15), 15)
)

library(data.tree)
library(DiagrammeR)

data$pathString <- paste("world", data$group, data$subgroup, data$subsubgroup, sep = "/")
population <- as.Node(data)
population

绘制聚类树图

plot(as.dendrogram(population), center = TRUE)
图一.聚类树

圈形聚类树

plot(population)

更改样式

SetEdgeStyle(population, arrowhead = "vee", color = "grey35", penwidth = 2)
SetNodeStyle(population, style = "filled,rounded"
             shape = "box"
             fillcolor = "GreenYellow"
             fontname = "helvetica", fontcolor="black",
             tooltip = GetDefaultTooltip)
SetNodeStyle(population$`group C`, fillcolor = "LightBlue", penwidth = "3px")
plot(population)

绘图

circlepackeR(population, size = "value")

调整颜色

p <- circlepackeR(population, size = "value"
                  color_min = "#e5efc1"
                  color_max = "#5abd6c")
p

保存

library(htmlwidgets)
saveWidget(p, file=paste0(getwd(), "circular_packing_circlepackeR2.html"))

边缘列表数据类型

library(ggraph)
data_edge <- flare$edges
data_edge$from <- gsub(".*\\.","",data_edge$from)
data_edge$to <- gsub(".*\\.","",data_edge$to)
head(data_edge)

转换为嵌套式数据:

library(data.tree)
data_tree <- FromDataFrameNetwork(data_edge)
data_nested <- ToDataFrameTree(data_tree, 
                               level1 = function(x) x$path[2],
                               level2 = function(x) x$path[3],
                               level3 = function(x) x$path[4],
                               level4 = function(x) x$path[5])[-1,-1]
data_nested <- na.omit(data_nested)

绘图:

data_nested$pathString <- paste("roots", data_nested$level1
                                data_nested$level2
                                data_nested$level3
                                data_nested$level4, sep = "/")
data_nested$value=1
data_Node <- as.Node(data_nested)
p <- circlepackeR(data_Node, size = "value")
p

保存

library(htmlwidgets)
saveWidget(p, file=paste0( getwd(), "circular_packing_circlepackeR1.html"))

保存图表为 HTML 文件:

library(htmlwidgets)
saveWidget(p, file = paste0(getwd(), "/circular_packing_circlepackeR_test.html"))

在系统默认的浏览器中打开:

browseURL(paste0(getwd(), "/circular_packing_circlepackeR_test.html"))
图二.圈形聚类树

总结

嵌套圈图是一种有效的工具,用于展示具有层次结构的数据分布,可以帮助用户从总体到细节逐层深入理解数据。

本文作者:杨硕龄


现在:


长按扫码关注:科研生信充电宝


10元赞赏本文,即喜欢作者~


即可直接解锁:


《跟着高分SCI学画图:R语言绘制嵌套圈图》对应资源哦~


看到这里你还不心动吗?


赶紧关注、转发、点赞、分享,领取你的专属福利吧~



好啦,以上就是今天推文的全部内容啦!


版权声明:本文内容由互联网用户自发贡献,版权归作者所有,本公众号不拥有所有权,也不承担相关法律责任。

如果您发现本公众号中有涉嫌抄袭的内容,欢迎发送邮件至:kysxcdb@163.com 进行举报,一经查实,本公众号将立刻删除涉嫌侵权内容。




科研生信充电宝
介绍科研;介绍统计;介绍生信;
 最新文章