4.8 Structured Independent-Edge Random Networks#
mode = "svg"
import matplotlib
font = {'family' : 'Dejavu Sans',
'weight' : 'normal',
'size' : 20}
matplotlib.rc('font', **font)
import matplotlib
from matplotlib import pyplot as plt
import numpy as np
n = 100
Z = np.ones((n, n))
for i in range(0, int(n/2)):
Z[int(i + n/2), i] = 3
Z[i, int(i + n/2)] = 3
Z[0:50, 0:50] = Z[50:100, 50:100] = 2
np.fill_diagonal(Z, 0)
from graphbook_code import heatmap
fig, axs = plt.subplots(1, 3, figsize=(12, 5), gridspec_kw={"width_ratios": [1, .3, 1]})
labels = np.repeat(["L", "R"], repeats=n/2)
heatmap(Z.astype(int), title="(A) $Z$",
inner_hier_labels=labels, ax=axs[0], xticks=[0.5, 49.5, 99.5],
xticklabels=[1, 50, 100], xtitle="Node", legend_title="Edge cluster")
axs[0].set_title("(A) $Z$", loc="left", pad=50, fontsize=20)
Text(0.0, 1.0, '(A) $Z$')
from graphbook_code import siem, plot_vector
p = np.array([0.1, 0.3, 0.8])
A = siem(n, p, Z)
import os
plot_vector(p, annot=True, title="(B) $\\vec p$",
ticks=[0.5, 1.5, 2.5], ticktitle="Edge cluster", legend_title="Probability",
ticklabels=[1,2,3], vmin=0, vmax=1, ax=axs[1])
heatmap(A.astype(int), title="(C) $SIEM_n(Z, \\vec p)$ sample",
inner_hier_labels=labels, ax=axs[2], xticks=[0.5, 49.5, 99.5],
xticklabels=[1, 50, 100], xtitle="Node", legend_title="Edge?")
axs[2].set_title("(C) $SIEM_n(Z, \\vec p)$ sample", loc="left", pad=50, fontsize=20)
fig.tight_layout()
os.makedirs("Figures", exist_ok=True)
fname = "siem"
if mode != "png":
os.makedirs(f"Figures/{mode:s}", exist_ok=True)
fig.savefig(f"Figures/{mode:s}/{fname:s}.{mode:s}")
os.makedirs("Figures/png", exist_ok=True)
fig.savefig(f"Figures/png/{fname:s}.png")
fig