#!/usr/bin/env python
# coding: utf-8
#
#
#
#
#
#
#
#
#
#
#
# # Python alapok Matplotlib használata 2.
#
#
#
#
# ---
# In[ ]:
## csomagok importálása
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
import networkx as nx
import random as rd
## A mágikus parancs bekapcsolja az inline plots rajzolás lehetőséget. A grafika alaphelyzetbe állítása és betöltése.
## Az inline direktiva a grafikai megjelenitést engedélyezi külső program nélkül is
get_ipython().run_line_magic('matplotlib', 'inline')
a = """
%matplotlib ## megjelenítéshez használni fog egy csomagot (pl. Qt5Agg)
%matplotlib notebook ## interaktív rajzokhoz, amelyek be vannak ágyazva a notebookba
%matplotlib inline ## statikus képeket eredményez, amely be van ágyazva a notebookba
----------------
The pyplot interface provides 4 commands that are useful for interactive control.
isinteractive() ## returns the interactive setting True|False
ion() ## turns interactive mode on
ioff() ## turns interactive mode off
draw() ## forces a figure redraw
"""
# In[ ]:
## hálózat elemzés
g = nx.erdos_renyi_graph(30, 0.05, directed=True, seed=123)
nx.draw(g, pos=nx.kamada_kawai_layout(g))
# In[ ]:
## elemzés
nx.pagerank(g)
# In[ ]:
for i in g:
print(f"Node {i} has neighbors {g[i]}")
# In[ ]:
n = 4 # dimension 1
m = 4 # dimension 2
N = n * m # number of nodes
k = 4 # number of neighbors of each node
def initialize():
global g
g = nx.Graph()
for i in range(n): # row
for j in range(m): # column
node = j + i*n
if node+1 < n:
g.add_edge(node, (node + 1))
if (node - 1) >= i*n:
g.add_edge(node, (node - 1))
if (node + n) < N:
g.add_edge(node, (node + n))
if (node - n) >= 0:
g.add_edge(node, (node - n))
g.pos = nx.spring_layout(g)
g.count = 0
def observe():
global g
nx.draw(g, pos = g.pos)
def update():
global g
g.count += 1
if g.count % 20 == 0: # rewiring once in every 20 steps
nds = list(g.nodes)
i = rd.choice(nds)
if g.degree[i] > 0:
g.remove_edge(i, rd.choice(list(g.neighbors(i))))
nds.remove(i)
for j in g.neighbors(i):
nds.remove(j)
g.add_edge(i, rd.choice(nds))
# simulation of node movement
g.pos = nx.spring_layout(g, pos = g.pos, iterations = 5)
initialize()
observe()
# In[ ]:
# run simulations
initialize()
for tstep in range(400):
update()
observe()
# In[ ]:
import matplotlib
# matplotlib.use('TkAgg')
from pylab import *
import networkx as nx
m0 = 5 # number of nodes in initial condition
m = 2 # number of edges per new node
def initialize():
global g
g = nx.complete_graph(m0)
g.pos = nx.spring_layout(g)
g.count = 0
def observe():
global g
cla()
nx.draw(g, pos = g.pos)
def pref_select(nds):
global g
r = uniform(0, sum(g.degree(i) for i in nds))
x=0
for i in nds:
x += g.degree[i]
if r <= x:
return i
def update():
global g
g.count += 1
if g.count % 20 == 0: # network growth once in every 20 steps
nds = list(g.nodes)
newcomer = max(nds) + 1
for i in range(m):
j = pref_select(nds)
g.add_edge(newcomer, j)
nds.remove(j)
g.pos[newcomer] = (0, 0)
# simulation of node movement
g.pos = nx.spring_layout(g, pos = g.pos, iterations = 5)
initialize()
plt.figure(0)
observe()
for _ in range(100):
update()
plt.figure(1)
observe()
# In[ ]:
initialize()
plt.figure(0)
observe()
for _ in range(100):
update()
plt.figure(1)
observe()
# In[ ]:
initialize()
plt.figure(0)
observe()
for _ in range(100):
update()
plt.figure(1)
observe()
# In[ ]:
m = 5
initialize()
plt.figure(0)
observe()
for _ in range(100):
update()
plt.figure(1)
observe()
# In[ ]: