R ggnetwork: невозможно изменить макет графика

#r #ggplot2 #ggnetwork

#r #ggplot2 #ggnetwork

Вопрос:

Я пытаюсь ggnetwork и ggplot2 построить некоторую визуализацию графика, но я не могу изменить параметр компоновки графика, который поставляется с функцией ggnetwork. Мой воспроизводимый код выглядит следующим образом, и я запускаю его на R 4.0.3 в Ubuntu

 install.packages("WDI") # this is the data source I need for this example
library(WDI)
new_wdi_cache <- WDIcache()
library(igraph)
library(tidyverse)
library(ggnetwork)
        
education<-WDI(indicator=c("SE.PRM.ENRR","SE.SEC.ENRR",
                           "SE.TER.ENRR","SE.SEC.PROG.ZS","SE.PRM.CMPT.ZS"),
               start=2014,
               end=2014,
               extra= TRUE,
               cache=new_wdi_cache)
education<-education[education$region!="Aggregates",]
education<-na.omit(education)

education.features <- education[,4:8]
education.features_scaled <-scale(education.features)
education.distance_matrix <- as.matrix(dist(education.features_scaled))
education.adjacency_matrix <- education.distance_matrix < 1.5

g1<-graph_from_adjacency_matrix(education.adjacency_matrix, mode="undirected")

new.g2<-ggnetwork(g1, layout = "kamadakawai") # LINE A
ggplot(new.g2, aes(x=x, y=y, xend=xend, yend=yend)) 
  geom_edges(colour="grey") geom_nodes(size=5,aes(colour=species )) 
  theme_blank() labs(caption='WDI School enrollment and progression datasets')
 

В строке A я получаю сообщение об ошибке, которое я действительно не могу понять:

 Error: $ operator is invalid for atomic vectors
 

Что это значит? И если я удалю параметр ‘layout =’ из ggnetwork, код будет запущен. Однако мне действительно нужно изменить макет.

Ответ №1:

Параметр layout принимает не строку, а выходные данные igraph::layout_ функции.

Итак, вы можете сделать:

 new_g2 <- ggnetwork(g1, layout = igraph::layout.kamada.kawai(g1))

ggplot(new_g2, aes(x, y, xend = xend, yend = yend))  
  geom_edges(colour = "grey")  
  geom_nodes(size = 8, aes(colour = name))  
  theme_blank()   
  labs(caption = 'WDI School enrollment and progression datasets')  
  theme(plot.caption = element_text(size = 16))
 

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