如何输入表格数据并输出圆形堆积图?

How to input tabular data and output circular packing plot?

我真的很困惑我应该使用什么输入,我无法从示例数据集中计算出来。

我有这样的数据集:

node1   node2   edge_score
x1      x2      0.1
x1      x3      0.2
x8      x4      0.1
x4      x5      0.4
x6      x7      0.5

(在现实生活中,分数表示两个节点的相似程度)。

我想在其中一张 these 圆形包装图中绘制这些。

但与他们用作示例的耀斑数据集相比,我不知道如何输入我的数据(因为我猜这里我可以输入两个顶点,节点 A 和节点 B?)。

所以输入应该是上面的table,输出应该是一个气泡图(一个大圆)和三个较小的子圆:

One circle has x1, x2 and x3
one circle has x8, x4 and x5
one circle has x6 and x7

如果可以将边缘分数合并到圆圈的大小中,那会很棒,但我没有看到边缘是如何包含在此分析中的,但是,它们被读入示例了吗?或者我想即使有人可以演示如何更改节点大小,如果我添加了具有某些节点大小或其他内容的另一列。

ggraph 的文档表明 "circlepacking" 基本上是树状图,因此该图应反映层次结构。

根据定义,您的图形生成三个未连接的组:

library(tidyverse)
library(igraph)
library(ggraph)

df <- read.table(text="node1   node2   edge_score
x1      x2      0.1
x1      x3      0.2
x8      x4      0.1
x4      x5      0.4
x6      x7      0.5", header = TRUE, stringsAsFactors = FALSE)


g <- graph_from_data_frame(
  df,
  directed = TRUE
)

ggraph(g, layout = "auto") +
  geom_edge_link() +
  geom_node_text(aes(label = name)) +
  coord_fixed()

如果我稍微修改一下,我会尝试更接近您要求的情节(不完全接近):

df <- read.table(text="node1   node2   edge_score
x1      x2      0.1
x1      x3      0.2
x2      x6      0.1
x2      x7      0.3
x3      x4      0.1
x4      x5      0.4
x4      x8      0.5", header = TRUE, stringsAsFactors = FALSE)

g <- graph_from_data_frame(
  df,
  directed = TRUE
)

g <- graph_from_data_frame(
  df,
  directed = TRUE
)

V(g)$r = 1

ggraph(g, layout = "auto") +
  geom_edge_link() +
  geom_node_text(aes(label = name)) +
  coord_fixed()

ggraph(g, layout = "circlepack") +
  geom_edge_link() +
  geom_node_circle() +
  geom_node_text(aes(label = name)) +
  coord_fixed()

图更"tree-like"

而且 "circlepacks" 好一点

HTH