Диаграммы переходов состояний с R - PullRequest
0 голосов
/ 03 декабря 2018

Кто-нибудь знает, как создать такой граф?

enter image description here

1 Ответ

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

Вы можете получить довольно хорошее приближение к вашему графику, используя пакет igraph.Приведенный ниже код устанавливает края как data.frame, а затем преобразует его в график, используя graph_from_data_frame.Вы можете просто построить график в этой точке, но хотя он будет иметь то же содержание, что и ваш график, он не будет выглядеть как ваш график.Таким образом, есть несколько шагов, чтобы все выглядело так, как вы просили.

C - кривизна ребер.Я сделал их все прямыми (кривизна = 0), за исключением двух между узлами 0 и 3. Я не хотел, чтобы они были друг над другом, поэтому я дал им небольшую кривизну.

LO - это макет для размещения узлов по тому же шаблону, что и у вас.

Параметр edge.loop.angle таков, что цикл от 0 до самого себя будет выглядеть хорошо.

Наконец, цвет по умолчанию для узлов - оранжево-желтый, поэтому я изменил его на белый, как на картинке.

library(igraph)

from = c(0,0,0,0,1,2,3)
to   = c(0,1,2,3,2,3,0)
weight = c(0.1,0.2,0.3,0.4, 1,1,1)

Edges = data.frame(from,to,weight)
g = graph_from_data_frame(Edges)

C = rep(0,7)
C[c(4,7)] = 0.15

LO = matrix(c(0,1,0,1,1,1,0,0), ncol=2)

plot(g, edge.label=E(g)$weight, layout=LO, edge.loop.angle=-pi/2,
    vertex.color="white", edge.curved=C)

Network plot

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...