Совокупное значение узла в igraph - PullRequest
0 голосов
/ 02 декабря 2018

У меня есть транспортная сеть, которую я представил в igraph, и для каждой станции у меня есть несколько посадочных мест.Мне интересно, как я могу накапливать количество посадок в каждом узле от конца графика до центра (центральной станции)?

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

rm(list=ls())

nodes <- tribble(
          ~name, ~netboardings,
    "Station A",            10,
    "Station B",            20,
    "Station C",            30,
    "Station D",            10,
    "Central Station",      20,
    "Station F",            30,
    "Station G",            50,
    "Station H",            60,
    "Station I",            80
    )

ties <- tribble(
          ~from,         ~to,
    "Station C", "Station B",
    "Station B", "Station A",
    "Station A", "Station D",
    "Station G", "Station A",
    "Station H", "Station I",
    "Station I", "Station F",
    "Station F", "Station D",
    "Station D", "Central Station"
)

g <- 
  ties %>% 
  graph_from_data_frame(directed = TRUE, vertices = nodes)

g %>%
  ggraph() + 
  geom_node_point(aes(size=netboardings),color="blue") +
  geom_edge_link(arrow = arrow(length = unit(2, 'mm'),type = "closed")) +
  geom_node_label(aes(label=name),repel = TRUE) 

Я нашел это решение data.tree ,но хотел бы сделать это в igraph.

Большое спасибо,

1 Ответ

0 голосов
/ 02 декабря 2018

Конечно, есть много способов сделать это, вот один:

colSums(is.finite(distances(g, mode = "out")) * nodes$netboardings)
#       Station A       Station B       Station C       Station D Central Station 
#             110              50              30             290             310 
#       Station F       Station G       Station H       Station I 
#             170              50              60             140 

Вместо того, чтобы использовать cumsum где-то, я использовал distances с mode = "out", чтобы найти, какие станции в конечном итоге ведут к каким станциям(давая конечные значения в матрице расстояний).Учитывая это, он становится суммой всех соответствующих посадок.

...