4.8 Structured Independent-Edge Random Networks

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$')
../../_images/c379957330bf9f056ce3d6ebb8df4cb5bc06f9595b6b2a58f899ca8a70c5c48f.png
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
../../_images/e7b0281e95ad6c54dd413736847060f1deac5bef9d49c59f9fc09cf9bec225e8.png