📅  最后修改于: 2023-12-03 15:40:52.444000             🧑  作者: Mango
树形图是一种展示层级结构的图形,能够清晰地展示父节点与子节点之间的关系。在数据可视化中被广泛使用。本文将介绍如何使用 R 和 ggraph 来创建树形图。
要使用 ggraph,我们首先需安装它。可以使用以下命令从 CRAN 安装最新版本:
install.packages("ggraph")
或者利用 devtools 安装最新的开发版本:
devtools::install_github("thomasp85/ggraph")
为了说明如何创建树形图,我们将使用一个家族关系示例数据集来展示父母和子女之间的关系。
首先,我们创建包含每个家庭成员信息的数据框架,其中每行代表一个人,包含其名称和父母的名称:
family_data <- data.frame(
Name = c("Grandfather1", "Grandmother1", "Grandfather2", "Grandmother2",
"Father", "Mother", "Sister", "Brother", "Child1", "Child2"),
Parent = c(NA, NA, NA, NA, "Grandfather1", "Grandmother1", "Father", "Father", "Father", "Father")
)
我们将使用 ggraph
包来将数据转换为可视化,因此需要将数据转换成一个 igraph
对象。我们可以使用 igraph
包的 graph_from_data_frame()
函数轻松地将数据框转化为 igraph
对象。
library(igraph)
family <- graph_from_data_frame(family_data, directed = TRUE)
现在,我们有了一个包含节点和边缘的图谱对象,可以使用 plot()
函数来查看图谱。
plot(family)
使用 ggraph
包可以轻松地绘制树形图。下面的代码使用 ggraph
和 igraph
包来绘制家谱树形图。
library(ggraph)
ggraph(family, layout = 'dendrogram', circular = TRUE) +
geom_edge_link() +
geom_node_point() +
geom_node_text(aes(label = name), size = 4, vjust = -1) +
theme_void()
解释:
ggraph(family, layout = 'dendrogram', circular = TRUE)
:定义一个空白的画布并使用 dendrogram 布局(树状结构),circular = TRUE 表示绘制一个圆形图表。geom_edge_link()
:绘制连接父母和子女节点之间的路径。geom_node_point()
:绘制节点。geom_node_text(aes(label = name), size = 4, vjust = -1)
:为节点添加标签。theme_void()
:删除默认的主题和背景。最终输出的图表如下所示:
library(igraph)
library(ggraph)
# 创建数据
family_data <- data.frame(
Name = c("Grandfather1", "Grandmother1", "Grandfather2", "Grandmother2",
"Father", "Mother", "Sister", "Brother", "Child1", "Child2"),
Parent = c(NA, NA, NA, NA, "Grandfather1", "Grandmother1", "Father", "Father", "Father", "Father")
)
# 创建图谱对象
family <- graph_from_data_frame(family_data, directed = TRUE)
# 绘制树形图
ggraph(family, layout = 'dendrogram', circular = TRUE) +
geom_edge_link() +
geom_node_point() +
geom_node_text(aes(label = name), size = 4, vjust = -1) +
theme_void()