Я пытаюсь сгенерировать эту цифру в симуляции малых сетей мира
, которая похожа на фигуру в статье МАЛЫЙ МИР И БЕСПЛАТНАЯ МОДЕЛЬ ПЕРЕДАЧИ ОРВИ, доступной на стр. 1752 ссылка на бумагу с использованием этого кода
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
import networkx as nx
import random
#defining a function for near neigbours
def near_neighbours(node, N):
res = []
x, y = node
if x !=0: res.append((x-1, y))
if x !=N: res.append((x+1,y))
if y !=0: res.append((x,y-1))
if y !=N: res.append((x,y+1))
return res
status = {}
for node in G.nodes(): status[node] = 'S'
# Infecting a random node
status[random.choice(G.nodes())] ='I'
#N the size of the lattice
N =10
#=================================================================
p2 = 0.0
p1 = 0.1293
#the value for p1 and p2 can be varied
#=========================================================
r0 = 1/11.2
r1 = 1/17.4
S = N *N-1
E = 0
I = 1
R = 0
s = []
e = []
i = []
r = []
t = 0
time=[]
graphs_in_time =[]
while I > 0:
t+=1
newI=0
newR=0
newE=0
for node in G.nodes():
if status[node] == 'I':
for nei in G.neighbors(node):
if status[nei] == 'S':
if nei in near_neighbours(node,N):
if random.random() < p1:
newE+=1
status[nei] = 'E'
else:
if random.random() < p2:
newE+=1
status[nei] = 'E'
if random.random() <r1:
newR+=1
status[node] = 'R'
elif status[node] == 'E':
if random.random() <r0:
newI+=1
status[node] = 'I'
S-=newE
E+=(newE - newI)
I+=(newI - newR)
R+=newR
if t% 20 == 0:
print('t=', t, 'S, E, I, R, N =', S, E, I, R, S+E+I+R)
graphs_in_time.append({k: v for k, v in status.items()})
s.append(S)
i.append(I)
r.append(R)
e.append(E)
time.append(t)
Но он дает мне этот вывод только без графиков
t= 20 S, E, I, R, N = 84 5 8 3 100
t= 40 S, E, I, R, N = 75 2 9 14 100
t= 60 S, E, I, R, N = 68 5 4 23 100
t= 80 S, E, I, R, N = 57 4 10 29 100
t= 100 S, E, I, R, N = 52 5 8 35 100
t= 120 S, E, I, R, N = 46 4 9 41 100
t= 140 S, E, I, R, N = 37 5 10 48 100
t= 160 S, E, I, R, N = 31 4 5 60 100
t= 180 S, E, I, R, N = 19 4 10 67 100
t= 200 S, E, I, R, N = 5 9 8 78 100
t= 220 S, E, I, R, N = 3 2 11 84 100
t= 240 S, E, I, R, N = 2 1 3 94 100
t= 260 S, E, I, R, N = 2 0 3 95 100
Может ли кто-нибудь помочь мне закончить рисование графика?