#!/usr/bin/env python # coding: utf-8 # Open In Colab #

# # #

# # #

# # # # # 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[ ]: