如何在 r 中的 ggraph 库中使用圆包布局
how to use circle pack layout in ggraph library in r
创建 ggraph circlepack 布局需要什么数据格式?好像需要分等级。
我尝试了正常的顶点和节点,这显然不起作用。
library(ggraph)
library(igraph)
edges=data.frame(from=c('a','b','c'), to= c('c','a','d'))
vertices=data.frame(nodes=c('a','b','c','d'), weight=c(1,2,3,4))
graph <- graph_from_data_frame(edges, vertices = vertices)
ggraph(graph, 'circlepack', weight = 'size') +
geom_node_circle(size = 0.25, n = 50) +
coord_fixed()
然后我尝试了一个树状图对象,但它也不起作用。
如果我想在填充圈中显示多个子项的组,我应该如何构建图形对象?
数据框更像这样
df <- data.frame(group=c("a","a","b","b","b"), subitem=c("x","y","z,"u","v"), size=c(6,2,3,2,5))
circlepack 布局模拟一个 hierarchical/tree-like 结构,只有一个根,没有循环。要将 df
建模为 circlepack 布局,您必须考虑 group
列中的 a
和 b
都是根。如果我们向 df 添加一个根,并且 a
和 b
都是该根的子节点,我们可以将其可视化为 circlepack
:
library(ggraph)
library(igraph)
library(dplyr)
df <- data.frame(group=c("root", "root", "a","a","b","b","b"),
subitem=c("a", "b", "x","y","z","u","v"),
size=c(0, 0, 6,2,3,2,5))
# create a dataframe with the vertices' attributes
vertices <- df %>%
distinct(subitem, size) %>%
add_row(subitem = "root", size = 0)
graph <- graph_from_data_frame(df, vertices = vertices)
ggraph(graph, layout = "circlepack", weight = 'size') +
geom_node_circle(aes(fill =depth)) +
# adding geom_text to see which circle is which node
geom_text(aes(x = x, y = y, label = paste(name, "size=", size))) +
coord_fixed()
创建 ggraph circlepack 布局需要什么数据格式?好像需要分等级。
我尝试了正常的顶点和节点,这显然不起作用。
library(ggraph)
library(igraph)
edges=data.frame(from=c('a','b','c'), to= c('c','a','d'))
vertices=data.frame(nodes=c('a','b','c','d'), weight=c(1,2,3,4))
graph <- graph_from_data_frame(edges, vertices = vertices)
ggraph(graph, 'circlepack', weight = 'size') +
geom_node_circle(size = 0.25, n = 50) +
coord_fixed()
然后我尝试了一个树状图对象,但它也不起作用。 如果我想在填充圈中显示多个子项的组,我应该如何构建图形对象?
数据框更像这样
df <- data.frame(group=c("a","a","b","b","b"), subitem=c("x","y","z,"u","v"), size=c(6,2,3,2,5))
circlepack 布局模拟一个 hierarchical/tree-like 结构,只有一个根,没有循环。要将 df
建模为 circlepack 布局,您必须考虑 group
列中的 a
和 b
都是根。如果我们向 df 添加一个根,并且 a
和 b
都是该根的子节点,我们可以将其可视化为 circlepack
:
library(ggraph)
library(igraph)
library(dplyr)
df <- data.frame(group=c("root", "root", "a","a","b","b","b"),
subitem=c("a", "b", "x","y","z","u","v"),
size=c(0, 0, 6,2,3,2,5))
# create a dataframe with the vertices' attributes
vertices <- df %>%
distinct(subitem, size) %>%
add_row(subitem = "root", size = 0)
graph <- graph_from_data_frame(df, vertices = vertices)
ggraph(graph, layout = "circlepack", weight = 'size') +
geom_node_circle(aes(fill =depth)) +
# adding geom_text to see which circle is which node
geom_text(aes(x = x, y = y, label = paste(name, "size=", size))) +
coord_fixed()