跟着高分SCI学画图:R语言绘制嵌套圈图
嵌套圈图(Nested Pie Chart)
是一种数据可视化工具,也称为分层饼图或嵌套饼图,通常用于显示多层级、分类分布的数据。它是由多个同心圆构成的,每个圆表示一个数据层级。内圈代表数据的顶层分类,外圈则是这些顶层分类下的子分类。
嵌套圈图的特点
层级结构:通过多层次的圈,可以直观地展示数据的层级结构。每一层次的细分都依赖于上一层的分类。 面积比例:与普通饼图类似,嵌套圈图中的每个区域的大小(角度)与该类别的数据比例相对应。 分层展示:通过多个同心圆的方式,能够同时显示多个类别的数据分布,适合用于展示有明显层次结构的复杂数据。
嵌套圈图的应用场景
嵌套圈图通常用于展示诸如销售数据、市场份额、人口统计等,尤其适合那些有上下级分类的场景。
例如,内圈可以展示市场的整体份额,而外圈可以进一步细分显示不同产品类别的市场占比。
接下来我们正式进入绘图部分吧!
一、你好!嵌套圈图
嵌套圈图的组成部分
同心圆层级
内圈(核心层级):内圈是嵌套圈图的核心部分,通常表示最高层级的数据类别。在这个圈内,每个扇形区域代表一个顶级分类项,其大小与该类别的数值占比成正比。 外圈(子层级):外圈是对内圈分类的细分,表示第二层级或子分类的数据。每个外圈的扇形区域依附于内圈的顶级分类,展示更详细的数据。 多层次圈(额外子分类):嵌套圈图可以包含多个层次的同心圆,每增加一圈就表示一个更深层次的分类结构。每层同心圆都是基于上一层进行细分。
扇形区域
每个圈的扇形区域代表一个数据类别,区域的角度大小表示该类别的占比。 内圈的扇形展示顶层分类,而外圈的扇形进一步展示这些分类的子分类。 扇形的面积并不是单独计算,而是由圈内相对应的分类区域进行分割,因此总面积保持一致,只是角度的比例变化。
二、开始画图啦!
数据展示
这次我们用到的数据是模拟数据。
载入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 进行举报,一经查实,本公众号将立刻删除涉嫌侵权内容。