упаковка по кругу с помощью ggraph. Круги в более низких иерархиях слишком велики

#r #ggplot2 #igraph #circle-pack #ggraph

#r #ggplot2 #igraph #упаковка circle-pack #gграф

Вопрос:

Я пытался сгенерировать простой график круговой упаковки с помощью ggraph. Тем не менее, я получаю следующий результат с моими данными, который отображает внутренние круги, которые слишком велики для резидентного круга:

изображение упаковки круга

введите описание изображения здесь

Код:

 library(dplyr)
library(igraph)
library(ggraph)
library(viridis)
dfs <- structure(list(group = c("root", "Epithelial", "Epithelial", "Epithelial", "Epithelial", "Epithelial", "Epithelial", "Epithelial", "Epithelial", "root", "Hematopoietic", "Hematopoietic", "Hematopoietic", "Hematopoietic", "root", "Stromal ", "Stromal ", "Stromal ", "Stromal ", "Stromal ", "Stromal ", "Stromal "), subitem = c("Epithelial", "Adipose Epithelium", "Bladder Epithelial", "Keratinized Epithelium", "Mammary Epithelium", "Mesothelium", "Pancreatic Epitheliium", "Renal Epithelium", "Respiratory Epithelium", "Hematopoietic", "Erythrocyte", "Leukocytes", "Lymphocytes", "Myeloid Cells", "Stromal ", "Astrocytes", "Chondroblast", "Fibroblasts", "Mesenchymal Stromal", "Muscle Satellite Cell", "Pericytes", "Smooth Muscle"), size = c(3.66, 0.18, 0.07, 0.01, 1.22, 1.81, 0.03, 0.01, 0.32, 1.11, 0.17, 0.71, 0.11, 0.11, 31.99, 0.04, 15.13, 5.32, 6.83, 4.41, 0.15, 0.1)), class = "data.frame", row.names = c(NA, -22L))

vertices <- dfs %>% 
  distinct(subitem, size) %>% 
  add_row(subitem = "root", size = 0)

graph <- graph_from_data_frame(dfs, vertices = vertices)

p <- ggraph(graph, layout = "circlepack", weight = size)   
  geom_node_circle(aes(fill =depth), show.legend = F) 

p
 

Может кто-нибудь, пожалуйста, посоветовать, как я могу это исправить? Я подумал, что это может быть проблемой, поскольку значения самой низкой иерархии (leaf) слишком велики, однако, если я разделю все это на 10, я получу ту же проблему, поэтому я явно что-то упускаю.

Ответ №1:

По-видимому, это проблема с серверной частью ggraph или зависимостью, используемой для внутренних вычислений упаковки круга. Выходные данные p$data отображаются правильно.

Откройте тикет с сопровождающими пакета в https://github.com/thomasp85/ggraph/issues и они должны быть в состоянии устранить эту проблему.