#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 и они должны быть в состоянии устранить эту проблему.