R语言 用R和ggraph绘制树状图

R语言 用R和ggraph绘制树状图

在这篇文章中,我们将看到如何定制树状图。它也被称为树状图,它是项目之间层次关系的一种可视化表示。树状图的主要目的是找出将对象分配到聚类的最佳方法。

创建基本树状图

为了创建一个树状图,我们将使用igraph软件包,该软件包用于创建和操作图形以及分析网络图。因此,为了创建一个树状图,我们将创建一个数据框架,使之成为分层数据结构,然后将其转化为一个边缘列表。为了绘制一个树枝图,我们将使用以下语法。

ggraph(dataset, layout)

参数

  • Dataframe: 分层数据集/向量
  • layout: 布局的尺寸
  • Circular: 真/假

在R工作控制台安装和导入igraph包的语法

install.package(‘igraph’)

library(igraph)

有一些可选的函数来创建边缘对角线,我们将使用 geom_edge_diagonal() 方法,并将节点添加到图形中,我们将使用 geom_node_point() 方法。

# libraries
library(ggraph)
library(igraph)
library(tidyverse)
  
# create a data frame
data <- data.frame(
  level1="CEO",
  level2=c( rep("boss1",4), rep("boss2",4)),
  level3=paste0("mister_", letters[1:8])
)
  
# transform it to a edge list!
edges_level1_2 <- data %>% select(
  level1, level2) %>% unique %>% rename(
  from=level1, to=level2)
 
edges_level2_3 <- data %>% select(
  level2, level3) %>% unique %>% rename(
  from=level2, to=level3)
edge_list=rbind(edges_level1_2, edges_level2_3)
  
# Now we can plot that
graph_Data <- graph_from_data_frame( edge_list )
ggraph(graph_Data, layout = 'dendrogram', circular = FALSE) +
  geom_edge_diagonal() +
  geom_node_point() +
  theme_void()

输出

用R和ggraph绘制树状图

圆形布局树状图

为了创建一个圆形布局,我们将使用circular = True,这将把它绘制成圆形布局。

# libraries
library(ggraph)
library(igraph)
library(tidyverse)
  
# create a data frame
data <- data.frame(
  level1="CEO",
  level2=c( rep("boss1",4), rep("boss2",4)),
  level3=paste0("mister_", letters[1:8])
)
  
# transform it to a edge list!
edges_level1_2 <- data %>% select(
  level1, level2) %>% unique %>% rename(
  from=level1, to=level2)
edges_level2_3 <- data %>% select(
  level2, level3) %>% unique %>% rename(
  from=level2, to=level3)
edge_list=rbind(edges_level1_2, edges_level2_3)
  
# plot
graph_Data <- graph_from_data_frame( edge_list )
ggraph(graph_Data, layout = 'dendrogram', circular = TRUE) +
  geom_edge_diagonal()+
  geom_edge_diagonal() +
  geom_node_point() +
  theme_void()

输出

用R和ggraph绘制树状图

边缘风格的树状图

为了制作直边树状图,我们将使用 geom_edge_diagonal() 方法。

# libraries
library(ggraph)
library(igraph)
library(tidyverse)
  
# create a data frame
data <- data.frame(
  level1="CEO",
  level2=c( rep("boss1",4), rep("boss2",4)),
  level3=paste0("mister_", letters[1:8])
)
  
# transform it to a edge list!
edges_level1_2 <- data %>% select(
  level1, level2) %>% unique %>% rename(
  from=level1, to=level2)
 
edges_level2_3 <- data %>% select(
  level2, level3) %>% unique %>% rename(
  from=level2, to=level3)
edge_list=rbind(edges_level1_2, edges_level2_3)
  
# Now we can plot that
graph_Data <- graph_from_data_frame( edge_list )
ggraph(graph_Data, layout = 'dendrogram') +
  geom_edge_link()+
  geom_node_point() +
  theme_void()

输出

用R和ggraph绘制树状图

树状图中的标签

为了将标签添加到树状图中,我们将使用geom_node_text(),它将把标签添加到图中的分层结构中。

# libraries
library(ggraph)
library(igraph)
library(tidyverse)
  
# create a data frame
data <- data.frame(
  level1="CEO",
  level2=c( rep("boss1",4), rep("boss2",4)),
  level3=paste0("mister_", letters[1:8])
)
  
# transform it to a edge list!
edges_level1_2 <- data %>% select(
  level1, level2) %>% unique %>% rename(
  from=level1, to=level2)
 
edges_level2_3 <- data %>% select(
  level2, level3) %>% unique %>% rename(
  from=level2, to=level3)
edge_list=rbind(edges_level1_2, edges_level2_3)
  
# Now we can plot that
graph_Data <- graph_from_data_frame( edge_list )
ggraph(graph_Data, layout = 'dendrogram') +
  geom_edge_diagonal() +
  geom_node_text(aes( label=name)) +
  theme_void()

输出

用R和ggraph绘制树状图

自定义树状图中的标签

为了在树状图中自定义标签,我们使用geom_node_text(),它将把标签和颜色一起添加到图中的分层结构中。

# libraries
library(ggraph)
library(igraph)
library(tidyverse)
  
# create a data frame
data <- data.frame(
  level1="CEO",
  level2=c( rep("boss1",4), rep("boss2",4)),
  level3=paste0("mister_", letters[1:8])
)
  
# transform it to a edge list!
edges_level1_2 <- data %>% select(
  level1, level2) %>% unique %>% rename(
  from=level1, to=level2)
 
edges_level2_3 <- data %>% select(
  level2, level3) %>% unique %>% rename(
  from=level2, to=level3)
edge_list=rbind(edges_level1_2, edges_level2_3)
  
# Now we can plot that
graph_Data <- graph_from_data_frame( edge_list )
ggraph(graph_Data, layout = 'dendrogram') +
  geom_edge_diagonal() +
  geom_node_text(aes( label=name, color="red")) +
  theme_void()

输出

用R和ggraph绘制树状图

自定义树状图中的节点

为了自定义树状图中的标签,我们使用geom_node_point(),它将把节点连同颜色一起添加到图中,形成一个层次结构。

# libraries
library(ggraph)
library(igraph)
library(tidyverse)
  
# create a data frame
data <- data.frame(
  level1="CEO",
  level2=c( rep("boss1",4), rep("boss2",4)),
  level3=paste0("mister_", letters[1:8])
)
  
# transform it to a edge list!
edges_level1_2 <- data %>% select(
  level1, level2) %>% unique %>% rename(
  from=level1, to=level2)
 
edges_level2_3 <- data %>% select(
  level2, level3) %>% unique %>% rename(
  from=level2, to=level3)
 
edge_list=rbind(edges_level1_2, edges_level2_3)
  
# Now we can plot that
graph_Data <- graph_from_data_frame( edge_list )
ggraph(graph_Data, layout = 'dendrogram') +
  geom_edge_diagonal() +
  geom_node_text(aes( label=name, color="red")) +
  geom_node_point(aes(color ="Blue"))+
theme_void()

输出

用R和ggraph绘制树状图

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程